{"_id":"@atlas-engine/core_domain.process_model_execution","_rev":"1476-247be0fda893f7b23d15033bccd0ae05","name":"@atlas-engine/core_domain.process_model_execution","dist-tags":{"latest":"2.3.14","beta":"2.3.14-beta.1","alpha":"2.3.14-alpha.1"},"versions":{"0.4.0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.0","maintainers":[{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9c383d33b26e3f344e66e1d076f2f693916584d0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.0.tgz","fileCount":304,"integrity":"sha512-sv00wvNsJcW+q8xesFKvBK0J2zszwDOHaRoQFI3mPMt7mRhl5KOO8igJfkwUGkNw3jKhTWL4av2oB+IaLxQ6Og==","signatures":[{"sig":"MEQCIFAW5QZ7/8mKS41xqBOY4v0d4G+35z8JlsNchDZQmvbdAiB04GYu11ScERqro1nh49we+7EqbmRhAWCNN81XrlC/UA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1260103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeSmAdCRA9TVsSAnZWagAA6ecP/1M5fr6gtloqlJ0eR3Sa\n6B3jsdNmx8xnA2GCgckVouQ3C8Lb4ePw7x93nvFpf6kYz8xfZDelPAif0bN5\n/oFd+wNNwX6F37A2+QzDYTmZB6vZ3syj6SJMh7FOK0bZ77deqnOQCB8/bh5u\nqZTkzM/QJvypwR+AXpvI63CYjshEpUDL8q59wm08O6sfGVD7lOTUmQvdzEwj\nhantAehE6uhf3fEZNkF+JEK4V/jCVow1lplJHLZFynmjmV1bb2VQkilbzj9C\nfRQUeKoLSstdfzJm927LAswy1bLdvkZZR4mRMNgYR5iZc68p0OM5MHUy3Uti\nJ00o5HV62iynOPzuxvOSHcwvxUNKgCuxh9Bvblm7b4X+z/qi4i/kjCaVfwy8\nP3NRi7PTneBm47k5WDztEvjAiI1jIDXm7/ag2ugasUeT2LVdakCHYqS30M06\no3CCC92Zl/IBTmL9ppRn1ReDjcLuZ6R992vhbTB36dfOk9MkVXvGu+rAYf+y\n9K9L6HHzx4zH8TuHUHVB+ysodVxF5ZcF580xH0uKUHRy/yUFrQsuylr+v/fc\nDMos3ZNzPCA1P+oqh+dCjHvbTiLPrubCY2RIG0OdWSWceOi3u7ablDeK/Kyr\nGNZLXdFgLtr3A8B3mhfpZvqmc3XCfvcb0ZwzRpd2YepQSCtrmCHDzcI/0TWB\n4OHw\r\n=siym\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.0","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.0_1581932572475_0.5610874893256439","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"32db25e4874427bcf0503ebb29243e817e908167","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.1.tgz","fileCount":304,"integrity":"sha512-jSaAb3NPsnH+lEgDVGShyKVmTnmvW4sUmc9d2x+TIgbYl3OIMmFwQ/iF7uQ3gLOOK5RjlWyDACnw0AKzoOOhKA==","signatures":[{"sig":"MEQCIEwlDhzonIiSTy5NxDTzlpAzW7n0UyJ0mLs9WrOZD+LEAiBB3TwiJ5GGfqhXBZaCC8L/jPFz4TLqtqHCUhwu5EumWg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1252454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeS++rCRA9TVsSAnZWagAAYrgP/0C26atspIxpYT3vBNFv\nDS64peKM2z5Myd6UmebPElwtebQp/GhK4H7uC8WcnkLr6Z2Ot0mzEY7JVHNs\ngbiAV7wTKrg1viKf3JUA84xmlQRpKnlHNm76d3utSNY2LzdmzYMv3YTnjGuJ\nL2B2LM6i3umliin6WZP4S+ablKn9wdL8NnwPbGnGAM0NAkUyCo8Jqg3mCxN9\nBpOnCoRk4ty/x2vSdiN9SfT9r1P/4F8nlYZWENr69ou84xz74hUZ1sD4m2u7\nFy8NO/P9NIIBUxM/KU0oDFKxyRiuIsTJHJdV+GYRD/gsP1mVu3GYD9y64fnI\n06BhwpRTyf+fRjGA2yURzi6MJ8hhWVWr9sSyg4p+9gP57/XtI3Y9B2UiogdC\nwWNt98mCz6eiLFGL7IfqeEneDwhC84jB7hGDJjuiRUDjlI8a/TWXmOBRpCIH\ng6ojO66ecLLBmeZUVZCcPNtcvfIIGJxYbaxuksx8Bp0+2UbFu8BiPsFPE5rI\n5ooORjeJPaek5aJOlNDyaYwT10xIw2eroRpSbbMBP9xKF6adu8Q2M0JpOjtf\nw8K1Abzx6+fk/DCw5i/jNz5NZginxZq8RuVkbg967NOeLo6lOqufPoDCmXga\nixD/ugJP7boLT2n9Tn2wu4GtgD488YN6Ag2aj8v1kT1eDY+2az0pGg7/pa8g\ny3OU\r\n=/CR9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.0","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.1_1582034859207_0.7273432068313628","host":"s3://npm-registry-packages"}},"0.4.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.2","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"69a9aff48870fbd9637ee97dadd09f679903647d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.2.tgz","fileCount":304,"integrity":"sha512-DaFY638Fj2CaQChWDc5R1rfeNEKftS9cIemvamwCuMtzqBAqs1SKsrYU86sGorYvUVtNxSstlSZ4bawv2vn6Kw==","signatures":[{"sig":"MEYCIQDWk/4KhCUJhTM57ixWvOOmk0w9d3U9E7GFsh2l2FHbaAIhAKj96x4ZAPosSGALkhpKZkSppoLufEdlE0dLC9ytqioK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1252482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTQ9bCRA9TVsSAnZWagAA6V8P+wTG7SC5Me2DSYBOd7wp\nxbCeuwTJC9Axr5/ufy2WSgDnnCQWobTg9cNWABdMACcCdkkta6yzKUtR9UlR\nw9swZ22gjwGnslUcxvhqhc84cCWMduBfyaHmWaS28QqB6OCXzZH9nU+GlG5Y\nPE9boltDeP4Ai1rBywlbIhcLrZh+hkvVKk4oapwx+cBuHqEYXc6xVXBvDpHT\nJ/X9KDOUJEe09dcG5NWWXoj9g8ICqMFx4+ClbY53VizWn5shu/pja3bYEXWc\nfMHcDIJ/qsVpEkUmy5JmO8t8j1mNXoVW3thDMMdR0J6WU34w/OO/QpJfxvEh\n+np2/2ctlwK7rurKxHk6gaWS2WwgQh1a7d3JnyN9Dy/Mrzx+6BlpLpLV2qFZ\nfXaxgkmSoSM6C5L7BZG7Nn27spVai8MVEtkjv3nDNZ+7NDH0a3v1Qkr1AAb+\nVzDcFJEFGr+Yd9Cj+Iu/msocxuSKwO31EOyhb6zSdAjW4ogH+XZXIcUBsoym\nB9wmR7OBEty5Tb/NZNZNPboBaYd9s6x9tfaTJ1ik883utWXTOHnWhiZMpyUI\nLHxcZbo9dH3c+isE9msMVkD7LsSXiQcGeiXNq46i9dR10ymxmixHPtKz58Fw\nPEtht+O7HLvoh9Dy6C8qqbixRzOa/qD2TCdnT8cxsyKboZnSc6Z+bqa/zfB/\nq3jX\r\n=FFyg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.7","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.0","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.2_1582108506816_0.1700783360248619","host":"s3://npm-registry-packages"}},"0.4.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.3","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9a1dc79dc586cfbc42c08112242883a84709a9be","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.3.tgz","fileCount":304,"integrity":"sha512-ubC9EeyBfSWxIec1b30kdkvZtMc1lR7l7hJNvutkgNvNO8veVO9ZzMqKtcvWtX+P12vCiY+ABuwVOadwJhexvA==","signatures":[{"sig":"MEYCIQCKqmjqU6Tb3Ghp5e690H7itjW7vSIX80EjJ3M4QXsDbwIhAPk2/vRQQb6adWx4aftOxyg5HtxedK9qmteTjEqPPyYL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1250615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeToyoCRA9TVsSAnZWagAA2F8P/3eV5Ns9wq6J2ONHYXfK\nqKHJSZZ4OcPWPSyR4VPHOhGscR+U5qmrB+Z5RsxEeli8c8Ma6npaHTDiLHOQ\nGYsYFdv4+YfxDWhu+OS0E2cyhZIrY4RTIDlrYjWozcxVR4NBwgcQA6C+FT6m\naC17AK7VZ3jpP3eQz300z1coJW2aW+UAZJM88mZgumvm5zRU0f/chwszvdJV\ncIZ3pU/uSCkgI/OuZ8tNu2gRXEwFIBitVwLtslAlmbsD5IXo1jC8EItJZ4Wa\n6ACoJcsk8ScmPPqCV1WjwYfy/1EoRXPENnK8rH6eElrjO3AJHEnqMhKgrJBM\nB3DIOVO/1Vn5RsNbBcbXw7Fv9a/EfNbIKW77pvKYmElDoonvUqdIhnKgTZyE\nJIbwakziTdGX7P9sVYrsferBWe1REO7PYkLP4KchCOoQDXocILT4AUP0KhKh\nLVHlJ6PQSt4a5maMTDt+FdW6f/1BeU+o25/mH+3FA5OsIh3lt3ssIAHuxesn\nJlulFYAdLtPWAISnp9IZ7D3yZNbyv4CRWngYWdLWj1W2QzUd/8fX0r1V4f05\nClKyfSzWpl4Pa3iokeIK0CYo/jjHfQOOQBiltjhvAvyp24G7rNV3tHbw0Avp\nbMPXl5ysr7KAew2f0BFczfDcan+CQTEOhBm7JMyjONzP0S2pWHh856jK67po\nmNnT\r\n=iGHD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.7","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.3_1582206120442_0.34189610477343635","host":"s3://npm-registry-packages"}},"0.4.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6a9f34aac689b1f0d31d29efc3bf54c0be21b684","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.4.tgz","fileCount":304,"integrity":"sha512-sB0MC2uvJbJHRKmBWw5IN4h746QXQrPnK+tpG29MLC4ffWHDazhmWaV1l/ipB3p1Vud7MhhrAbuYzFkEc14J5Q==","signatures":[{"sig":"MEYCIQCIvK4DMOvFwYzFAlZIOFsBXLXGntYPY79Wk0HvsAQ7zQIhAMUmKSOktXcJyzXVbLSvRa/vR3LFLF2yt+rO+V6CHxrx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1260431,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeU986CRA9TVsSAnZWagAAmDUP/j4ixC6pufVq6h9AmwFe\nABOgaCR0VP5IP7+RnDuwLf30oNkq8O4ccxvbgFj1YCV/KAdhrHlrtEgXHiGo\nPXPCpHuX1O/fBFY0zkTDmj8g77331ku3ZgdvRrn53q2++AbunT3B01zBdgIb\noSuWFLPkrgS4cvNop48JBL3ums9/BOZSzJCBJNxhFv+t1YsQ5PNw/b7QRSIn\n4NJodDnGbSxD/rdv7D6KxBxEGUl8fwtmns9ZtpTl6F/65a5DCKU4uxi2Th9X\nSMs/3whU2ivyoEC45+RTJlLKDEkD3Mbf1nifkqvlizaG/puwhqwzWSzJGOxu\n7c+ytMGmvb1M/uyYQmMgkyEIxNomCRDp4gkoPQ4RuLuzY50qU67qIPcH+9Wx\nuWQIUjrmSKGSHLo4tGxr9aUaLYC56ITL0VUK/QVQAlNvSQ0GR3BsFZoZXo+H\nXHJyvgMkjVC6Yn5xVLw+D0XPdB3pbbKai+vJM31sPCeJbirorQWNekSCXeZo\nuP3bz42Fv+DrRS4CkATsob6Kg0Har9NTc3ND/j96GS7a7b5qxxq90mVsZjxs\nnFdsgrjWCS48nhWYY5xuGxniieWlvVuF2q6sZq2TeWVmVXVPSqXGWKgwkeDy\ngRtSZCewnf3FOeUvNCUG4jBJxbdkAg2HXEQ0AmRaATnCY+odyGBvvN4MiPvI\nrmrD\r\n=7uU7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.7","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.0","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.4_1582554937638_0.8948497733276355","host":"s3://npm-registry-packages"}},"0.4.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.5","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1cf96da57845296d184a0085f5c02e970c570bcf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.5.tgz","fileCount":304,"integrity":"sha512-+BTTY/xeEM35LD680i5Yc3f8kYRLB1/XhIDtIoAqeKn6snV+bK7o4P60c9bGsN9mvniEJ7kqd4XQsmEUT19sdw==","signatures":[{"sig":"MEYCIQCD+Glt4TRjNWVGVxT82G0bbgIueSNWVW94J1jl3Z15IAIhAPM4Rjn5ahoYLsY/5ggodBdA+b8p1tdZnMSfRuNIBWex","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1261532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeV7qHCRA9TVsSAnZWagAAgasP/1qLk9Cfd2N6I7euKXHt\npCZnsaEVZLrOQiGYluVfyzpe2xDn3dJsTV1w7Srs61JHuijTGYw2Tu8IhXfz\nrQhWishq9578oStBL1Jt6XGYUpWQz9HEpliDZ8nuMnY1IJVvZVkga2lKwxjY\ngphyNKPDvDtTYJz/U33VC35fhUAoyYLABSXATTL2azJeAm08MpaP68T71q3v\nDG9vmmyFgkK4ZWl1zTHbjmC/NcctDAqfF98oTFYIjLVKXY9bHlwK09A1JX3y\n+kOsJfHGixTyUmo2W7+MGzqXBm8nrEB+aq0mRsPobe9w1F36ceMVEm1IrDTd\nnIUowfYqfja9Ved0LNd+O7RyQIc0g9C/SxiOI4OUUmHBxiQocO7epuUNbP0T\nzd3kfYgN5VTa8gv/O10I3Ef7F7qaEVPFSY8LW/Qr6gcBihDPRiKcbw4UdIy9\nsFRllLqYCpLCq+mT1C0Tu1JWKOiWa5tNSByXTkBHN8JGlSPYx7PUXoB6hy9E\n1JNPlIGtpGdKikP3f4LNskNOxrGyhwj4Ns6fJXKvHkqATx7eWSoWtXgn8Egf\nFzhj/yruwGLmOQCiZu217PjjGn+AozU2PmHYyIBclTwLCM9dvqzw5bIezqXb\nWoVcSnztcU/Sh/seZ/CuBrsz5bBWkYtZe4xPb7SiI0SXEHREzkSsvKmkwBJF\nUDqj\r\n=DHok\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.7","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.0","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.5_1582807687063_0.20073010154186677","host":"s3://npm-registry-packages"}},"0.4.6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cafe5015d3db0737f4f295455ff1f1f142be4244","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.6.tgz","fileCount":304,"integrity":"sha512-iidBIo4H19mbJDXfku6wje8fXbyHqPaPqQG8FkEQqyoC5KxOAhrrYSSneuZ4Ja+Pam+XfQ5cBAURqm0CdkDXPg==","signatures":[{"sig":"MEUCIApZw1itrO9uSObTMZNVVWuIbwjJVPbbRVabj7SlF64aAiEAuQmRYx6VZ4SqSLVn8L529IBRcB+yw1RZqgGjv3PNynQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1260745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeV708CRA9TVsSAnZWagAAPsQP/1CqWPTNS8nH7MXZ30r4\noW5J9e0uEpfpwhRK8snPN+pOqVuD8+UQGFr4JOJMMUVQhYnBLbCzjhqbKqyt\noD6Q1S+wIKjZzifVSEX0O0Nt6LtotueFmgCG8ieSeDkKp6MyuNRyGQx53jVu\nSU9pOh8GtDLlkVW6SXAgvtaxh3XeA5FNwTtNbo3bUlwHBuK5U7gJbObIdzw+\n4l2M9DY7R0Ew5p17V1tqICXVMB52zf0hhJpCby5/JRWD1DAw6hGH2xhSzGpq\njuievr8UR+AATWdHmTf9a+x+SkmmDR50TNEEGSmWtyza2yt9TkXFcRqbopnJ\nHhuQe15ukweUG+SAlI5AoSnb2sTu2BWPuKa4y3ivGZcF1DtvJkzX+hCcKT6M\nAKO9vwNx38Vn25bU+t9csTe67SjWMMlPdGONTaTuhe1dyXwhlDGPeNr8Z9jS\nDOtX8n2VMBQz5zxG5jSmz0p7weUk/Khc9VyA7u6IQ/pZcAptQ1rsHszb2pl+\nGvtFQDmmedazfcnCURXL8M40PghpkseaFdWRZ6Ck8eE9i3+vSacMrEQIdcbP\nzobXzHIyVPgj8xgDnMIaE5MAdx+9g2NOaMAZiKL/DaH91YHgUwlannUgs6D7\nZ4uvqhDUAO2a1IZAqcUajPCOH3Pk0SUmyxdPTlHNkr70poV8OKh6JLnKfFcH\n4OLN\r\n=ViNa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.7","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.0","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.6_1582808379908_0.1933701389793956","host":"s3://npm-registry-packages"}},"0.4.7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.7","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d6e479134ff42a1fe649d90f12292ab0a4bc20a6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.7.tgz","fileCount":304,"integrity":"sha512-6tNo+dLxLQ5umCV0vTGBTxelXrcizlcI5/YdALobFNxuUy0VPajH2dYoNr07royA1l9LaIXe9ik9XE9e19/Vng==","signatures":[{"sig":"MEYCIQDAxbCfEG/dbb+EUe9pQe633zU5elaNnegEhq+sGJbOvAIhAL6NsCS23vk1Iieuuon03Tu3KGb7+mtuFsl+It8ExCdB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1261350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeV9huCRA9TVsSAnZWagAAnocQAJZWaqRk2o7cQHP4Ywso\nkwxGA2prI46ygAbYYBW+/YR23G18EzFtEW8sWKCSYC7qPUW7Ris9fACFi2ex\nR8lC+VusSCt483Ba6FMrrdYQdUNaCot0VOhifITQl73t65c0Ni8JAKevZG9E\nPc0CcVPTjODT7Z05DV2qrEJBnYHPD0PW+qz4j8bGsWGg+HiM1pxCzIxpgCMr\n4PTe967/SwExEVJXUmX+KeGDiCmwLYjnd1rUKWnXdi/fjdSqCRZTwzb+Kknf\n6FLXQJ8Y/khGUzWvgGbjnogOdMOdMvuyaSE6iQfoMT2J6XvROq++T2r3smoj\nKQhb7XkjnftSSPIBqV8LRhxyMldqB4KS/0NqfonhGk6WPv0eFGBa/sa0foB/\nhgzHX/73BiyQIU0L3NUyo+a9Sb3DlbhVssuwEhikcs1p6hd0/1cE3KvhlNzh\ntbtnE2IIg0AQMrQ1xLXF0Ld96WKRG4bJ1VLzyo0/7QOpXYo0kjSzWdVSOkQV\nXmC0WGlpuHU9hZkv8p4dAxFQGFec3VdScm3aX6SA8J6zlXbbsGCg+44eBU/U\nHCKW+BG/lVSC7DxA60aMocWpvmSBbN2Kde/40klVM96yOlnui6sMS2e3E12+\nmZ8xRxxP28gc3p+V5YaFpKc5/nbACPaB1iM7Uv48Z/x7knvYDSQ8qKUIBzyz\nzq5K\r\n=9O26\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.7","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.0","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.7_1582815341607_0.028041581652667347","host":"s3://npm-registry-packages"}},"0.4.8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.8","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"aa1e4f24d944117b6645cf85d6fa6efaaf94819a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.8.tgz","fileCount":304,"integrity":"sha512-0/jFYcmoRXnVwcAm+mR6dJ9AA+kr1eKJjxaBo2rQ52tKFWJZrUR1AoU5HRys0EINLevcrjXY/z+eucU+vUzfKQ==","signatures":[{"sig":"MEUCICfwo+q5mi7AGM3VlDzs/ip1XojD69DTIv+E+cu2V1m/AiEA2VpDKwJsLyzzyZY+3PvmhUBIAqTNrNaPjB+VSoG3GFg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1261674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeV9xzCRA9TVsSAnZWagAAjtYP/Ra9nzzLR8lSSTD9USoZ\nwGjtxADcMhf/AbJ8M4b2eyfGOCdhj131XlYFv0r0c+lrbyy1mtlVIuWl/one\n8t+tfpZ00DTF5CzivYbX/I9N6iXnFGscRBYlh9ENVy+mjiYAxE3tBnZp8s1A\n9N50rcMQ9OyvftJka6aa8YCYeqxdwHsAoitlhrLpiIW/7bBrRgs1KIi88G7H\n6GrNdto52f7Ly1eifo3SLrmtT2i9g+DefvQOQ/zz0OufuIi2325j8kvLMP1U\n2WKiRulmjAKUmY3vKVnPDySg1Q78d1/ZaNqlAYywEPPWKKwH+9ptgbdMv8Hs\niEi7jvkcuSYjH+2MDm3Zo9a30LxwJWjo711SxWrdtpR3RawKuiDIXA0lhAhk\nQd56aobx7OA5BX08xjelSvFN87cYjmvvW0uhchNZGjYFN5vtxDf62v8Ks/VO\nFuCsEJH/hsXJyJRzo7TjCx0DCTOa2i5ZF8fOq4WeaAin3IVAji0Zj0sutHSx\nM1EbEsPAip758tsq3eSTFJOuWcTVvj/2T4Nx7s+aRqkIIRz4evEibh1TUe2E\njAsgzLAeBad303gfQC89SoS0WbYbJ0xVmp4ug5EmxT45vWUinrOI3Hva7Onm\nGfOMemCQAq13+CUNUqXKRvTgJ20QziiIaROV18TBvNrgFfZM+ufU7MF0g3vU\n0SHC\r\n=/r0H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.7","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.0","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.8_1582816371352_0.3263072754725369","host":"s3://npm-registry-packages"}},"0.4.9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.9","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"79d91b41b041690815b909439530161fb3e2cf09","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.9.tgz","fileCount":304,"integrity":"sha512-ngVJzQEDEZ2XjVhX7VIXVZ9UEWk+9TPVth5hGEpOmurbheoavFnqdZlPCBQrGwJibxG3O90I3WLT15Hz7Hg4ow==","signatures":[{"sig":"MEYCIQD8SOVCwOrg2kaNC/CIBh0B4dK8dgsnlEHnxtji7qB8OQIhAPp1Zqa0rghtLCVKxV9RJz01RudekD+tyiwj7+PYmBff","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1261726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWBMhCRA9TVsSAnZWagAAaZ0P/ifkmxnJw3Am/igfEQDc\nCqAM1m+YuWkjxGuoPWjKGrTI9gzjFCVZGwjLf4/YrAYbNRFTdcOLDFhVZzfK\nzORib6+9qM/BeVSV5hbaQAVUREYhsVenysu33tXx+3vntXvJhFzPxxIvjm2S\n/8QYTapyOHRPwk+vKOjFtU8Y6RAopcJfK0Xkht6n0/pDYPFhXbIGSSsQgpV1\n4BF0krr1Gf3nDGsACdz9LPiqi8tofq74u6hYb2ICr1lv571bNj6VcJEXM6iV\nzrdFgu1+9Mmxh1duy19LBNQF+ptYNYnJI5X0wlONuU1f8fQTs2ENlyt+nkLH\n+qk2S6kWVeIxoqykZ4cmcLM+/ce1dTvXBoDyWVTlGWF+etIuPsch9zUBvHDZ\nqwPTY7Ikr2YH2bcEBXjYJ4X5jG+gZGw40I/1Ww35qrPtIeUkUecthT9NnxX/\n2xGBFOQ7COotmuqB1PbNfEyMyACK/CgrMGAocrI+lJpsldfE5tE6zOqSUogg\naXvXNqIIyCdzFbwiZZd4R0w/JzH+z3s+wv/pUtgqr8VwoC6ZmhXWgZ/rCqZe\nCLexcvjERyp+zhH5JLi9lxI0OMSboWFwAPQBAeoIvkPM3KGzJKNMftOp7lPU\n+fRYMwUfVyuOnKqaam1Zvm0Dr2mfHdTzvfyqp8kS2hjT9T0BZ//COM4pAKRj\nD+N6\r\n=IfE/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.7","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.0","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.9_1582830368596_0.36143890236636356","host":"s3://npm-registry-packages"}},"0.4.10":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.10","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.10","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2815d48423b9c7a16c67c51fb4aa70e2b89f5318","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.10.tgz","fileCount":304,"integrity":"sha512-gt8nZXdx4whQKDL9ZgVhZ9QSZAprxwJ2D6+v4XS6lwuD1U/bXptCVFqyxJQAgMgKXP3sGW8OcCf/r7W3IZXaJQ==","signatures":[{"sig":"MEUCIQD35a1J7Oy6X9tVjNeXkadQQAoBtmsEJjvv7rINmZlWTAIgTQ3hmD2vBLV7FqKlcQ/eKKe2C9kxJ5nFMdFiQ8YQMDI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1255304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXPsiCRA9TVsSAnZWagAAgbMP/RtMhvrSTR4mH/llIFfr\nV8eg1AoEn9xU/v1Fv8kZbQO2tmi8qXuy04bexvUCMa50RlDNoAVxup2Df/Jl\nNVLIaH7UbCekShRGlF5Os/ZJUNXefkY8Jt+CNhvwkyytumaH+rZ7TqGTd7B+\nlGBh+ZKSBHzHq4NyP6VBxdlkdLofNKQalMN5oP0gxELDDUYq4jCbquM9PaG9\nACIZ8tWeg22Ez7uIFC8EwIP76i1Tu7rdN+gSCN/44qZ6dIHA6NfGPHEYtyQd\nlgF8XdCKB2CLk7JqARhT1xM7rXqnNH3/GZ2tgi98g8dDUi+3WyWgiacPdumk\n7mYp/H+3Slbt31qzD+08TvkqD+QUamxtvmLg+yvuExlH4fO2GpVZ3OGPPGxQ\nwwfqdI2M17QrQQM0DW0x4ZMNBKGr1AuEShQ+B5vHXSIBvafUMVvloVFHw4VN\nTdhbNMct9WctTqRQBkpFeQkoTg4/m2aGyxtbd39gf4otuGyHc28oSnNN+AzA\nGY9ZVlRqt2SSK+aqDrr452V0rfYhugQDxPs9+0JKQw4/Pscmtm/jLP8phyBl\nPpgb9oRk0s/9+mOhQnaAlSWfZHFsUekYAs9ETFBXtxSZp4Zz1RWuVrd1cWQ2\nTLheHul0oyjb5B1EIHQE3MovO+PYCwoS6SubJdDQWtnl1GE5i2RHUDibluLs\nKKKr\r\n=k+7m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.7","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.14.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^2.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.10_1583151906243_0.3240225760058635","host":"s3://npm-registry-packages"}},"0.4.11":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.11","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.11","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9c7811f1fb8167726df81e97418ad00f17ce71b6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.11.tgz","fileCount":304,"integrity":"sha512-cT0JS/TO7+yis3VL3m0zkpnPA62Qg/zvjadRF97uox920xuPx3kRZYNnyryiXCmSJv+Z09sVW9qrd3YNBlH9FA==","signatures":[{"sig":"MEQCIH1nJ5tyIBLLEBLQWtGRIoXzO+kYJlXeUv8hjypx0SBZAiBijnrnKdLKGrClpySe9VWjNiaY+rzyS6/dzNAMnT0V0A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1256011,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYL4FCRA9TVsSAnZWagAASOcP+QA7XEzGC3s0j32Bv3UZ\nlwlc2eN7c2DcbADxW/E4VoV//jV2yzest0bwghF12BTOIw98c1VmhnWNt9UQ\nwQH34fpzzFW3jKzzXrLdExjptIQdKN5R82j2vpT4ZEHvf3ZrKFFQTddSy42c\n2dFLqUVFdgPb29pchA6BxhZAW3MGz3FWNXJdSeOg0oWVsa1rljdAbc9QZpIi\nsdyNEQxqLS3A+ARnLzQTcz7LGobjiGW7tAE5eRb+Z1VA3IX/cchr+aHBJecS\ncAPrVoG9D7eB8A5NCa3WCWO2u7NUeNz8UKcrLlWAqx2+U/oG73x6hNX/ZFhd\n9Ud1b5n4WqQFjmQSw4B0l+/BbS/WDC8irlv+RTo9c/J3DYBQKhdZnaSeObI+\nb98FwwAA7VvQN+THPcuyblZwPBGmKCqlnbHZihXBFT1zcEc2a/Abo+p0rWBn\nsc5lW2+X0EAEyM7eIaIAYBS7c9x5+R9WlSeDpUcL6bpNuCTNF4ZQim2OUpfG\n1DxQ5SCAa+ydVlpUnkGgY7iE6kIrzRG/M2WgfU5i1kL5UoCfR+aQL9wxap6D\nYBlr3KGB+A5wgECjOzjKYszvlFxvC78H1VjURQubU+xriBklhgUVP6Ukv6LJ\nENStymXRRHsEMCjSLrMD5ulAHAGK4A2dH1UgJucZetwBJhU2U2Sb9feTLs1S\naGYS\r\n=Lk5Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.1","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.11_1583398397617_0.5435757610164256","host":"s3://npm-registry-packages"}},"0.4.11-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.11-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.11-alpha.1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9f8e7b681228975878ff494b679b7c3176191d62","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.11-alpha.1.tgz","fileCount":304,"integrity":"sha512-DX5DgLA6kV7s3div4DH7MFCJU81VstMWgwmeRRrtOn6q5d4MhN95Lp4fvPsGaqz20+DZ9Ug8oN0fluxcwDDcHg==","signatures":[{"sig":"MEUCIHG8IZzo838zesj7wtiu2HVnd7EpCZn5pnrI8vucqYwhAiEA7tJgsg1uJlZ2yzW/RrgZOQTLI7N/aC3R/Y+nm71ab0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1256019,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYjc2CRA9TVsSAnZWagAAblEQAI9t9SUJDBvYpGwZw6/Y\nwAXHlXVmtQPktTGRbTs37ZtSMo5pWpSroym8kZjN1Lp2Atuhl6SOXv9RQFbE\nhv46SvJVCydD9ViwbENySma6M6CtVsTYSJdqREALgjRg04CuCiiZtbhNT0C6\nJVhl+Bt3KIGUxF/FIdMLjAdqQe7bUaGRw1XEmBY+7mz5FhtXabih28DY58lZ\numPC8FCMsEe0M1AZI2NlQGexZUEw2N/OvrOJunAdFRVX7etjLOziMno4GKow\nTryK+o+ZPWmZa8klAr3hpL/B+qwl9p6aUfkgacWRrxZzjh9BRM+Gfc1jfOgG\nfn4Q9IbGpxx/WnJtH65MOLxmQ9SJMq03KpPTEDHLq/oLVBP6Uu4VcD2pRHsg\nep2QbAs7Bi2HAeRz3oqxpw0BwbPrPTY6nyRU4Re4CkyAaqM+Pdox3G9CFDcC\ngQ/qAvdunyxfo2tiE0BWIfGU5nrEvlMcjQO2lxWiKmnWJCY5LHm6egXTwF7Q\nNGu/ZO/40/WaddNS11ZJiA1mXC4c4WZI4DgF07aoyhEBgbOc0jnkPZ+NsrOV\nWFHa+9gmWKPbqcf65+8WYPgxqJyN2Se1T8WMS7Pnl3ucpVq1Kxy8vy/BRJXC\nzUp0VFqcetT7vRC4aLX43okyjRrw3v4ps20woviu/pw5O1p78W0W0CFpbBme\nnHO8\r\n=S7ah\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.11-alpha.1_1583494966221_0.6012395356202884","host":"s3://npm-registry-packages"}},"0.4.12":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.12","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.12","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5ceec622e3f89b4c399280a952b30504511278f6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.12.tgz","fileCount":304,"integrity":"sha512-8MYvUxOXj0Oogu5fQCnfcDkwZkxtx2YxoMkS2N0RufDx8bkhEYhm/9bgyJw9pbM0szYx2r2lnYJLJkADhaIzWQ==","signatures":[{"sig":"MEYCIQC10lY4vp9aiRIiYDOHaom6bZRB3u481v+SfMPEmR3/yAIhANi4dHkg+2NverpAYC17cAaSz5b0DIbUntvXGMM1Cijj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1280639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZmeYCRA9TVsSAnZWagAAl+wP/0qRekOika6/nf6ohRol\nwZWMnV6zG2ZUN5mP3fjJ/1sPF+q9dygzkycTDubfuwxLASk51lh6nIjgITfA\nQQI2yw19VhlBj23rnkzwI6LuXB2+FLSZemzBVkpbluzI37Y/hkqSFsfpGnJA\nm6wchux99bXagEun1mpl7NQjqmVsuGGb0fT7QU9qsWGIgVLvMnyJBt8GrRbH\nU5ruxApG0R4CxwvtgQjaqUiz61RYYl0UHVy1uetiCyLeFxQh1Umjo9fGqg6D\nUJEpicwgXed+mJa9oywl6MAlR4YChKniJMxBstcXLtyqcSrjlqCL+gDVXdfT\nLDFZxiVqRlB3okwZLY64b8OZgIzCnf1w9xdGhXhEugSN0HXkU7M16ju1d3Oi\nW73OwDBab+glzFPsm3gS8I9c783CPn6mEvwEw5EiGjb2LAjagxV2Lcjv47Yp\nk0s830vrRDw3kcfBVO0U1zqTQPevTpWvlAIX7Sel55OsDvhKP/XDzOa5ork0\n+KsjzhJGI0Zn3VOa6zFWwmbMCCX1s9sqgYr3Voj0oGD1SRA4QzW4ao8HNJXh\nxHUaaLNToCldk/pN1lw7JXMqI+ptes7iCghNi/M13HduHtQV/el7I9jUuTgq\nojxeO+pJqmxCVRGw2mRXKT5nrxk9Z6dqRW+7uP/JkQ2Hi5iX2Lv32uOyFJON\nzY14\r\n=YVWW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.1","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.12_1583769495934_0.29425697915468674","host":"s3://npm-registry-packages"}},"0.4.13":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.13","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.13","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7ad957e3f5748e2a38942ac5da44f7b712649154","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.13.tgz","fileCount":304,"integrity":"sha512-x60Ct7WOiLNdP+lt9407k6k9visr/wQRQ0QUNyhXW+O/nrpE9pHCeKpqksaZodzvxfGR6UI2Rf3TjhF8P0CFxQ==","signatures":[{"sig":"MEYCIQDFDhDNoPPZxQWIoobpusIkhF377HVM+BmnIkK7ZAUPTwIhAILkVbjxQUJbDF1F+lrABENNt9eWiuweNF95UdsIHwEP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1281505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZ7WbCRA9TVsSAnZWagAAB5MQAIpEXHdh67yW8sZ5vAA0\nsc9uUsMUyhOOb30cbqM19Fk7HRknTuQE7ONH3WdbBTW1iJ4f+NjV0GvDJxFU\nElCISy+JZ6riadiROlN05h1UP/mJ8bgzc1T/g10dcDij89rPLqqu7C85KFV1\ndsLLYhPGmSoDVb6QXX4V0pzcwXggjBigDVu8sU4STBBu6Xaco45JQbmq1bZo\nOBt4JO/4PiiYf4AN2bCMs2AReyPvY7pOcIVFQePa0qbEIs4HDSuUQWORrNfx\nBhHj1GGNZ/m6eM0A7yCe9R1WITkSLA5xOjGHFdbu08En2Fliq2Vy3QPtqHJs\nzYeyUisdfuniW3Dhw7W7rzO8rnCtDkS3AcvvEElne2Wnm+gF8wmATdZZSa2K\nfKgo7GPuJbwxH/Ue4OhQzCbXjjrOGOYpAfKUNhQAt/EKj5dr7K4sgSkQUDg2\n93KZnBaXiW2QLsAj/TYFBbaQ4GZJNy9RD0bGTi/aIGvKqWEUyioE5te6L9jU\njdlobPveV5w4z97twlP2F1qMc6yX9hVcSBEBFmfeF+/nAAra8dMeJc2rLb7n\nzOmQtGlN7Os4/2e8SWay5PRVLZMurma6PUoC6TzZ7Eww1hlLQtVcKrc7tuLs\nCI7yxLUdYLA7PLHV1TQH0UAmgL0+ddGc1H5Z9CbmO9vl8bocVgJ56THhk8p2\nQFSC\r\n=pK4R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.2","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.13_1583855003523_0.7464185809767014","host":"s3://npm-registry-packages"}},"0.4.14":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"dc8352f598bf264edecac952491deba1d8821662","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14.tgz","fileCount":304,"integrity":"sha512-9mtg8jzZQF1MF/6tqVIsqKmpIbQJ9NAO/OWj7obDbJFdrDo9LkgmYYQbnzDSwLqFannvQJWs/Pe1atwkdv4HbQ==","signatures":[{"sig":"MEUCIQDwU8Ifi4HdDuDywKChmk5Hqg6XiPnz0TPU0WczWhAeSwIgCe6qoVq9fJ0XbhMVZPZ7i64bb/QrEg72yEt5VDRW77c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1281533,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaKOFCRA9TVsSAnZWagAAmRgP/RpNP+D0UG4EdeMi8VQ2\nbvLrRZRJIPWu9naD1ZKJ4Y4VL2HZaXcswic4IsOY+2iFseQIom281s//PC1O\nDJ5KOICHxky/0ngEsW4srjwCmfgN8RjP0k7rv5MNS4Fa0rtVEDyb8y9BBt9y\n6dNOvYUjZo5KBz32UC/9SKxa7zJ+K6YKRKTb6JWfb8v41mnARsm4a5amSC1v\ne9leYrKhtkY6pdtXHlUzY7FsJ1kLjmpyKPaOm2UmvaQokTzgGWpx/X9WekcC\nq1adxpE/u74CqIY3tnaemZ4BmgsvyP3bVh7HIL+EVpL/9tRu8Z9KDyAXfG4x\nrqg3Y9hYMEyrUajEQJAOMhj9cJ0EBQbHT+DoJGAMMbMnCL9+E1K1pdRv79SM\n8aJ7kOwk5SPW6UW/Xl63PI8MCIgRvkAahfaX2k/RP8cjyTSSDZzoi3jDR/Eo\nVtv2Zdp5pwrHT+Kx88HBYdgb92+h3kuMHUyKXcGOrvgpkETHu1wVHc7cUpSH\nRtHGpQvdssb7eu5GubiHiTcdH6D4zyrIeWwj0M6arAAUymwcBGjNqGVcreUZ\nrXPd5YokqHukgSA7hORD2W76quF1V60oj5YliSV0RwiR7yjr1FhmE8zdZ1RV\ntM50tkQ79IuPFOBkk9LoqAoR9Wco8hR7R0YJ0l4ndbDb1dtWffg90Ux0VtRY\nAxvm\r\n=8wzt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.2","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14_1583915909357_0.5131892418530697","host":"s3://npm-registry-packages"}},"0.4.14-feature-898b40-k7ndl2t5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-898b40-k7ndl2t5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-898b40-k7ndl2t5","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"423cba9708a66645818c83dd086b349553e2b723","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-898b40-k7ndl2t5.tgz","fileCount":304,"integrity":"sha512-yoEjXyWNQ2NeUcEAZvJpUlmaIH0Qo2fhP77cejS/LLnKLZ344Acu1k7b6edwBXMIVtATp/bEnShBRBDakHTv0g==","signatures":[{"sig":"MEUCIDA4RdLttdoOL1oxbvqQhvC7Y22+cet8utQi+TnIpt39AiEA8oyiSTK7f7smNBlLSP1PBK9KvQ6WplM3kG2/vErd6Vo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaOtxCRA9TVsSAnZWagAAUhMP/0mY3ZKW4/hpovKuBCNw\nntuUecHB8eYWFmdTkKNVmeoQegU0N8I/MyS+vlDNa9xR6g6HNCR7HOsjLN7r\nrpT4K3iDKmvhSr+5luaDcvAiLXz9Vj8v5dDTDMhzuTb1rjgw/Yqap6DwRcyf\nUta3mDDXzjKl17/jfy2w4XwovNqAfjxvu10LbCODVTEyPfACeCAFZs7qpCUv\nYE5PLugy9F3/SZA5KF37u8VWRE6mYEPllg1TMEFO0vZzOGJBCguOjdnlcI3g\ndzwNHQwXa1laTbVf/3IQ7wvZGqH1nCXxc+bEF/87CKBNpXOBfnYXXv/aiD1x\nEcvEgNJZc1DB1MqtHKRS2dlbU0WoarPtVFl3UjImDAHqt0GRBMWZAqodhhYd\nTDanlF8tgBrE6tLZhikNthTGoYvWpQC2IVJ+fovjH+RxMDulk9lXXNdItxP6\ngbqKCHrMJCggZva0Sdf8tdlckRi0xHTaUevwKPkgjGKUD7w2BTSSDPwE2CPK\nSnbQlTbHrsyqxmQv+9dYCkuOR5fAcFi3oNyIAWUCyobVabt80ZF1iTwCjCaE\nn3PxMtPH1Tw8jspETT71UjIPix5RlZ5sJ2BRksM4SV6a6L6T3pBeRtTiIric\nMkI2QTybCh6J34BFpthw/iJUwg50+wqW1fPb1uhkKaZPxgyK0FDH2pxmwxcN\n8VXw\r\n=Y/dF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-898b40-k7ndl2t5_1583934320663_0.7309642883737448","host":"s3://npm-registry-packages"}},"0.4.14-feature-8a7854-k7ndzcan":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-8a7854-k7ndzcan","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-8a7854-k7ndzcan","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bcd1e672ed9bbbbe27d93c934847781bbd64570e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-8a7854-k7ndzcan.tgz","fileCount":304,"integrity":"sha512-UdiN0dE5mYohTNeG20SHKoQ+Dl5lJQddcC7m/iqyROMf3lDbRvQLhs08NktEYZTtetq5Snj8UIyZjF7FP2f3rQ==","signatures":[{"sig":"MEUCIQDDKD7af7W2BYjI5iT+9Ad9POlbTpiqwXYeVTMqBUpVTwIgWK9Vtsxj3bGe2U4hKoc064dvqDynomDs3ekkTebGNF8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaO4NCRA9TVsSAnZWagAAWRgP/0pkXvhsSJMBnIohv1xP\nDASCFzcg1tTZC8rtqZbII+PYwxlBMCI8+zVHINkY0SEvZpGjrbhZckEDYUhp\nl4mWvQtFYM1VJpdDgr1EboC3yY7jdEIxYwXSaazYpJ+gbu/d9JdhcCnrRPWL\ns5FMEYMQaVTtLdjfyh1kgz5JwEQA/4Bip/HtgQEZsxfA9ICnJT1g3VMqD2l1\n6TWxzHlzDAWV2Y/eeU0fHZ1wCIJ47VbJiWLXb+V+T+Wcl8HC2Eia67/rA6/m\nkv2VYY7T+yGTj740t4TZbpF89YOYeW9LpQb2cXTgc6rV2Ta/KyNak5LJfhgy\naTtSS+hdiyocrUfVi6pRurfOnCcBwP3LZ4oPd7x1MP0bksruGJ9+TvHg01J9\nvBitQxNkH5k8RrbhqHkCjBzfru4lfFZodsBU9fLsbOATsslAQnv9oewo9xvp\ntcGxiGB/upMsG4EU9I4cUpoFbrcCyRHi6kfiyYJiCiBZqNR/bNZsqvtPNr70\n+xtQXKjEDsEEhBki1/h9lulJZTf61nn7zok98+ysJbESP8OnLsACw/DSOT63\nEwvlnMvnqIaqidsDWYKMLWBdtJN59B2SNY1kKC+PKCz2aJ2+MCZJ5qijmF2N\n7NOm3nyBlt9RyjuXrnJdoFWu8MN0dmluibBnQuwn0N2YIy6v/dHkvZAl/Pez\nw0vX\r\n=yWnH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-8a7854-k7ndzcan_1583934989010_0.12515631125897442","host":"s3://npm-registry-packages"}},"0.4.14-feature-ab2d88-k7ne7mws":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-ab2d88-k7ne7mws","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-ab2d88-k7ne7mws","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a68715c20edc47ad3c9e0b5ed9d38939cd835905","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-ab2d88-k7ne7mws.tgz","fileCount":304,"integrity":"sha512-Fviaci1o6iX9ouzkyN4p42bIbKVXdlEVvcumUxcFC/jOUVb42hotKyRVxQ+camcIQ3uxufbCppMq6mPFZb6qow==","signatures":[{"sig":"MEUCIQCFFlDIyDJWJtt6hhkWVT1V/q3axV6Bxdmhn7p0Ys7pMwIgCh4Z2fQM8m3mw7kphHQBY+RF+KhxiKZw94sz33YIOuA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaO+LCRA9TVsSAnZWagAA8iEP/0QvZI0Zjj5kT+LhZhU1\nXG873xWMVUYCczXAb24ofhxWPRH1WsqTi2CQuG2Oub6FUSieuafTNNGJ9ZQd\nUTywAgKw8fS9YqnkLk+5ML8DeLgHYG14nQdxMZL5Yklv76kYzWpsuV63VUZq\nhKFNeT4diejUiU5yEqcAx8roBp/NVb53kaSeArSZQQscfhX0lM6fdgSlAYDn\n/DvCzCbATRrLEEn1oJqKQtrxBbXCHAGvaNPa8QEbkA5Qm+zNK3SFNeVicPZy\nEv5jeM6cXkZULtfAUnxc/irocCEUqnqonM2gqfv5TKWm8wSZkzUwUoBQSR+e\nx2oQbR5Qi39amyAeV4qTxQivPsxSY/PvOFvqVKV+8smYVGMlnR1/n1zx1uGb\nMTOfCUEWIMmIB80DgyF3CvlUbFIjYESWYiUpntnLgPUu4h20+ZlL7hXOut7F\niJCGC1UOpUMMMyDCXGtsI+ThjCI0apqVevHc8NA8lTkiUxR+umz3UYpEMNhQ\nidn3tnKMhbanzIl2/BYw1PkIBHzBEBT0SzmcaIGeEjdKlLLwa9Aj/ABHiCXL\nKtRjOMBIu5TZEiTPwrSwdHaPNZrfp/f3d8RXFfmVOQn/WvUoNw7R6goD0hKL\ndSnSm2sD8ANy23cUYkcYCDJBq99RMx4gstHLhybcmgP7zyicsle7OcqTYHkP\nc6Wu\r\n=yM0Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-ab2d88-k7ne7mws_1583935370709_0.03004595836809365","host":"s3://npm-registry-packages"}},"0.4.14-feature-2c6c4a-k7nfz0u7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-2c6c4a-k7nfz0u7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-2c6c4a-k7nfz0u7","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f799087905be15c9cc54c1dbe4052d3b18734823","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-2c6c4a-k7nfz0u7.tgz","fileCount":304,"integrity":"sha512-mOj34Ku8ZUUOArFX0f2w7me3/ilr8F8jMnF0RCgi4QynnTTQHnjHX5jdHLPjQ1qxsslFrEqXXgCyCVQHakMQDA==","signatures":[{"sig":"MEQCIAzplEhVfS1EQ3dTxs5cg80Np+eJEiZXRQixuHYvUHePAiA4ItyNJMZDVuI7LjIuaRNxvjIEF4zFs7kM9VitqgyxOg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaPsbCRA9TVsSAnZWagAALN8P/01tbi1PrxuDR4HHOFdF\nAHHw6EEQA1Jr70xiYfOISIgwdAZxfzHbuf7xqRdmU++8Br4rux6MSPD7yh7/\noqQcE8gxxcOd8MUpIbst4FuxZXlFMMbqVZuWE45TnA53qBqryvCHYbus2PgD\nf13b+yixoQ2JaAFYQdDvyejugxnUPCxw/7ltcRRbL7G63kg/xYWLkau6dj1U\nkByC5agdAlrpVj/1dMxoo3T36oIAypzpvQSJNdRMzke3F1km54s3YtbXdyOs\nVsIJekwTsUGmgFH33KgLvBVfQ88nJVMus3jhiL/Y4q4NWlmRvd/loqlsomyA\nEOMnIcMJRsDTIHNNPoLpZG/3os4JWM01gkcJdr2zR8w4BgNU4SHnpzmGusVu\nqoCOy4wyOEMzW5xyZOE6E2m5LCbtjeUFcY6oMdvr7NJQ72GRJCsUZg0koOKO\n90Z1C1+OYD0MgM0N9FbtTZKMqGKcmPavUShI4kUwxOx4UPQicvpynpanyj5K\nWWAzBGmjj3E/5iE6Bx1Vt5NocNhqK+q0hTx8Oz9AdUJ7aONE0wWm9pGcNaNA\nD3ncuxVVFl4rpfmvqi14oKyNKwKzcbzJ08xS/8h44vmj7tfV5HxYkrvTE/Mu\nrH4NFw/dN/9c/Mn2ZKZp0xnVnyP5shoZI90AcbHqNLATN7s0byRrd+j5XNEt\nxVW3\r\n=vAjo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-2c6c4a-k7nfz0u7_1583938330948_0.9489514878892542","host":"s3://npm-registry-packages"}},"0.4.14-feature-c72e09-k7ngptms":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-c72e09-k7ngptms","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-c72e09-k7ngptms","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a3472f6aaa75c71ee40672a2e9f118094466db22","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-c72e09-k7ngptms.tgz","fileCount":304,"integrity":"sha512-lJAHbdj3sWDsCk/5Y0dJ4J4ROsIl+aqN8lsce0wmxEeRw6YmGnQGXkut2J1OquLj7WBepq15V9dEzTyjXA1gTQ==","signatures":[{"sig":"MEUCIQCrMd/UMKKcf1fBeHIUFI7bwt+A4aAVcZF20Af+6vSMugIgIKYltzifwXD4oQyJo+c1LTbemvjbXOErjeiF7NmSQF4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaQAACRA9TVsSAnZWagAAW4gP/jyl5CI38OrK5dw91820\nsL0aRVKgnbQJRxx3axoJVfL4Xai0g0UZr1VMe7QaTNCjfJInkotVUzX13UGW\nTPbKbwJnw+qqbL86IFpwEddilZNVt30+fc57BM1eje1RR/vyRiDf+Z4JqKVR\n/UkXZzqWbqndGiG6Cd6/xESstrUvcIk//hSI9By+YU906kpEg9Rl64/Drpdb\nAvsvHp/gF+hVvlN9Ooaa0ZQR79a1779DCyvLaWkGGHRfzZ5tXDUs8hpuGC5Y\nDyFrsH+4R9S60n/rvK3U4Z15atPg4s2F3jXwP/mjqncOzCCIk0S8LLD3D62r\nmcI8o5S0b2LEbfOfjO3rzjI+/LyYG/K1xlFjlNyvrrRGMPkgFNlg4gcNcB6h\neaOAYk3hgTPU+E7Udl/NuTKGU6YGeVcJCeHJrviVAHOg+YXBP+chVNcxfDIS\nxVx7SW5rbAAdpvLkuM8athPKsJcFATfIJMMlidPz0/KXEIHVrUA+0SYqKizd\nPu7X2UZVA3wzmsUouy23OptXU/1gienLD4d5Dr6N4rP+LXnD6FDoaIWFzD2q\nhXYof8QjM8te2eBSbhIIZ+gx717/2uFuDH9M7b8v82RPxAzPWNyHIZ7ztExq\ng4n264xF5RwwKE+oR5j1+GeJVObLgnPEzV8EQYgYshbFcabNSNkxwMG3muhx\nIrt6\r\n=e9LJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-c72e09-k7ngptms_1583939584090_0.10707508807826138","host":"s3://npm-registry-packages"}},"0.4.14-feature-77f1f9-k7nh9yf3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-77f1f9-k7nh9yf3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-77f1f9-k7nh9yf3","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"26c3502271558e99755e7c0b7f8b6ba620a92c6b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-77f1f9-k7nh9yf3.tgz","fileCount":304,"integrity":"sha512-JJQkjczdePvQx+lTmIfoXlxw9O3WQRHfa/zM5XwHhk8LJlFU7Tn38bWTuxMY8i/fqKJEx5Qtd2nr7HaKCa6lTw==","signatures":[{"sig":"MEUCIEe5aAz+KCWWksQ4mKJF0fy1O5S6zm8vZsXByxCjThwwAiEAm0HpupbPJvOo4on3oxt6U4PVBQWtJn0SajNx+mg0Hvg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaQOoCRA9TVsSAnZWagAAPAsQAIZWdlWDiLFBh93Ji7V1\ntnlRDAqo/OHCz6/ZPDm3jbjNbnuqEMy5twKRI43w+97kWm1KUmEqIwX1P4iQ\nhL8urBRSYvyJLkmpgopyrLiXcOwPa+4GEouiSYS/vutRaMEtlChvLeYA0b9l\ndSegOf4CemJ9L9EBwUp88iS6Opyaf5+Jug+RpikNU0lwB/G7LflONu0D6W3y\n1Ufb0EfVps68z6Rp98rEmYv1KJoW4GRTIytLs4keZqwupu73CABW5tqM0LGV\nIfPmiLoE/OpUvyoLzynzYSc+h5AQLFJQca1O2WZn65CU7AAFgMcufka23eUP\ndgu6LPrQUaga/cH5Mzqlmi3MYhgcxPdOZOB4p02p8AiafQCneqJC9GvBhr6e\nbmTqt8tWSiHjCqa37Z1Np6Fo9rVFVT16V42XjtaWG3yGtv4ecVKq8bv/eOg8\nw1dcHtL8APJMtzC+2X9kvMYBVAZXw4296j58OfosPDuLr1BHr+5nRI/iwn5t\n6E/jNOyNkf+g5D0dlMDliXiPUtPKS0XEhA+ktMB7NSHxurBIgfuLg+XvQCY8\nDiUAwlG59r89yITJPtojpJD0WarKI4AhO8P5wEzw47PEXjUh1SSjwwH3FKc5\nZR8YA6Otx/mOhHM1wNRzOz9xVHJO7ZJaUShmUwC6VDYHhAjyoQcJ4qYGlGA8\nmFP0\r\n=Su3Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-77f1f9-k7nh9yf3_1583940519535_0.1286636903201661","host":"s3://npm-registry-packages"}},"0.4.14-feature-0f2cfa-k7ni0qfq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-0f2cfa-k7ni0qfq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-0f2cfa-k7ni0qfq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6519d2e0776bf6b75bddf4c0cc277154a1e10d2a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-0f2cfa-k7ni0qfq.tgz","fileCount":304,"integrity":"sha512-Vkg05XiAg9sazcQD9rt0u5lz1dsIBjl1T1J0zNO9dCzCowTjWpRLeSbqBNIJFcNrELm4+URK5VWCvxZbpYmDWg==","signatures":[{"sig":"MEUCIQC/D4unC5TTGCPD8F529ufBzTADC2mv+JKtggDZg7FBJwIgQnfpE6mgltztGV0gkf4KTbi25bWcZ2rQJKyRZoUWins=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaQiMCRA9TVsSAnZWagAAM9MP/RcOY292MIbRZ5fF2qkH\n4qpaQu62BogT7XQC1X45e/JBVGFssZGPA9vnBOYk06RNZ1LfnbqyyedSsMcn\nUz9DWvGEf3NV/NjRWytjaSwQNlNFE6hHgYYNq+nh4P/8y74iE6jm/vO6bJik\nDq8ewI04PmYaIyKsRaFSmikb3IUII/deLfuy9E0m46lst+TnTWDpJ6q+DXaI\njAMorcGWPpbxkFk0ovUNTnn7Cof0tqrugTDJoGFtuuPCye0f055FCHH4C1Te\ncCb7qqmV8dWFBwtCU/X+tyY9VUSSTKLRSPAb3CQ11eZysLTDs0PbXn4Tm7b8\nWBh5Lg1llghy39ldwQnJYjpPwypcob9xXw+u7f3v7qTLHj7yk04WwooWgdPs\n0bgDJQhX5RT+Rem3I9jFOktTlS/rjXRBbXB8VpvxbhJAttyrkmpiiRpT571Z\nFMDjm6irHqXA00QNwHf9jtWazdzM+5LUaaw+MaPagXwEiBBDylpaaR/HR9li\npTJawmt0X1oa7j4wTRQhQrXzvZncHg/QeELv6XvQTT0zibHPC56trPUbXnoK\n7wukFeNaiXE4UUer5Uum68MQjYYFRPEqBvJnO3h+NaasY1oqmwRmd1nqcZ9a\nZrLtk6MXOojjpauraKDjoDa8ShHQqW76Lzk2FCAl4xK64sslNuB/gnAuv6Ab\nlFeJ\r\n=vkBJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-0f2cfa-k7ni0qfq_1583941772398_0.8764675445078034","host":"s3://npm-registry-packages"}},"0.4.14-feature-16daf0-k7nif527":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-16daf0-k7nif527","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-16daf0-k7nif527","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"05045e5968570197d4a65bf115a12a3818d718e8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-16daf0-k7nif527.tgz","fileCount":304,"integrity":"sha512-93eSGNgHyij+E324PUuVoAVZVWieNkAWXxji8hrQ61QdX7EOk6NaH0beViFzMj+E22YJmr/GF0Zg7U2rMxcfBw==","signatures":[{"sig":"MEUCIQCtoP+Heeaqg3HcssQRvn3v17dqjVE9F+A/PMg3bWs20QIgKpApsPbgbrqBlKWos2+m+gXc8XakLni6QDTMOqwxj5w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaQsrCRA9TVsSAnZWagAAwpwP/1IrdhbXM2L7FOL9jJAl\nbUPYHpPdx7bU+N8oVx6ZkMbvyX4UULDYo6AdoxugNl+w+rutordmcPIHWBCY\n6IvDIoXapYAPbspv5y7XZOk95Y747yMwTmtmrqU66QMCknSBbwIljCnV/n+C\nC25SGm9IA5Rhy6U/4KBFAqz1BAngeVu8Vlb+fooSvroYgy5QQmenSjxtwW29\niVAWudSSW1oEDCYnlrWuyF/Wq6z69YgRH2vEr0B/zT8/HCorYXYpp+pPZKah\nGVBtYSyj1QRmgKx9ktnC8b/zloXJkoWj/KOQgiKto4tRW1Hi6vWNcePPbGIw\n441ssJPM3V4yIvd4rpjs8r0rqDtnCXgXshzczSlrBBz3bUluegpoADy0kgg6\ni4F7p1v5AUT1D+OqAVvHburFJ9tdx6jjq+uU99KZBpR2bhb7fR1QSSzdwjcu\nPDpAwgJ+Gq5hN5/9QPk8OzI0Ox9Oc7NgBoB9Arg+cS3c06h7+p/wKTAOvRUa\nkM7JcmjnW9Sn/NnaKzbIzBZduZdZQ2aA6szNkAhO4uhkA/Rv4f0C6oEEFekA\nxRiKigry0eVqCyw4DRHSUM9HMw4iKQdOKHU4hz39vQCuS6hk8MEzaw7VNao+\nIWs/Zq04DoVkf+FmxMWNq1KyIeAWzJjVSXkfd4WkWXnlJjmDL7tOd8d76gIt\nUDyJ\r\n=XNfW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-16daf0-k7nif527_1583942442707_0.2415313257349645","host":"s3://npm-registry-packages"}},"0.4.14-feature-9af596-k7nkk9rw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-9af596-k7nkk9rw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-9af596-k7nkk9rw","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"15658ec0af78c13538d437d3b66103888e54a2e0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-9af596-k7nkk9rw.tgz","fileCount":304,"integrity":"sha512-N0sO0V9SRsKlqFKtQ9W6ryb6uuWoNr8wKjar3xXG9ObXDuH+Xu0OcT5ENhrHE3gkl/j0rSujsu4lX8Y4s7fDcw==","signatures":[{"sig":"MEQCIB1vbWm3oz8liCey17ky8J3B9QTPWTs2v2A8qCaJp7i2AiAHpNVEEEjYGEg1MnFm7hsbkIcU9xA7L+uuLS2WKSFeSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaRk4CRA9TVsSAnZWagAAdqIQAI4/i1MTUvZYSEll9nT2\nOzCmHoL61pXqP6RXaHTuRCy2pOpCQGgklJe1Z9Us2EpUMc/m6FC9RvwT2C11\nlon5tPBJ3+IJw96KgxU/LoSICe52dhXMvkgNGoyGZ18qW3/52v8Lx7ei9Ab8\n4rP+awqsy976tHnDIrC/aU7mYHct0VUoUETLseXbSInX0VKKyYTboMr/rXmD\nu9u9sjKk8KzRngts1qbXbP1PmPutAtb/GWeb3sOwkaeRWsSw2UNR8Z/3ouoc\nXPIRwAsyyry99qNvMAHUn1Vhsoi6U5qTzTpogUZEmnyQt3WljHfPclYBa3zm\ndDoHqR+INag81QfBgpB9jzqo7maIMzuL4tzbKifb2ZfcRCSo79F+BGR/CKsu\np75xQN8eHn5sI2oCX3PtNwndBg3wK9t4utUlcoaDIhnQdkyO/ZE9hG2K7vl6\ntJNWnOS4dTggw0NfsnIEsr04PJj2HI7w/vOUTYbDBbKpgOn20tiHwRUhlArw\ng3zC92E+qOarhMTqXwdPxCTc0jP37R3n9lRuJdhm2BSBVWCppDosyx8kH/di\nGgBrvo2AC3quGneFn93XtcLVMQEpsaHaNaRL9gXfhK8GVenypJXx2Sq3EnCb\nrUNMOKYdwaRUb5ecYG1TwHFL3ZQHB3myLRduGNT1PfHTB8bJh/ZSImptlpgx\nSjdF\r\n=jD/n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-9af596-k7nkk9rw_1583946040360_0.8129484523702775","host":"s3://npm-registry-packages"}},"0.4.14-feature-60630b-k7np0spz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-60630b-k7np0spz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-60630b-k7np0spz","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d147ae5f40112479c990c237716864ba7741fca8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-60630b-k7np0spz.tgz","fileCount":304,"integrity":"sha512-+wqLKHaEabXbDJgbx/U2qfxFImvggAZO35hUw9yzW0SznGGu12MeEdjXXRX55arPmlxDKms1JehiBX/+3JgDHg==","signatures":[{"sig":"MEQCIFAzd3H7Qt09X4vfXI9l8Q4/N0SF8JIdFrRCBVOx6zdHAiBgz3hZWFK9uytLl4qsE8nzjLEh+tmpPwAYTNhOuJU5Ww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaTZ7CRA9TVsSAnZWagAANnkP/RMs5+/mKywYIK83qlKQ\n/+nWsqtiJRJRe9s26auytlSjYEorjgn+e5cIjt+KKNKaDBe8f5TV3rE62PT6\nzXDmgv2fXYjbfPG9ZWBDQSWSBSXrvPk107Ec/FGP5tjx9zegYNhoUuazCUJo\nH7Ef/ucQj96jbF2itk69m7tiTWiRPauFbY1oQXHFo9h4q4NCt//8utHmGkOe\nRLQXHuM9HyoiVgIFt6xA7SaGTsKJ7VSnK8Wt15GjPKmZn9J4Akj0XQXLXKD+\nC/5qnyn101jOCtH2A9taVYfedq0OFdY6oIe3J4C4n123rVW/LdF6A35VlkDc\n2a3Fj8HYavw2HEpRAPEwNDtr5fbmpH2kUjWlM2zZ87zwQxjcOIiBiEa0qyG5\nsc4UfYXdDvsgt5seuUobzz4fJSzs63HAeWMJx0wrhXaHddXxNaeCmFOoQxUL\nNHpTV0wtNe8eVYCOAJMI7gfPfQY5h/aXjOh/BDqPupQpGQYM3NrRal+7lk1f\naXpMC5RJCpZSlZ8Hw52l59rbE0cC3yezp+jGN/ztcQKnW8RNhaRMcUI3Dpdv\nTvkkCWXiMHC8WJfBba+ultjdtuv6uNWr8DpOyeyZRs8cNSzuUxsLd4RjQxLU\nACUjE2q0B7fiQKn0UQ8kFZtInTqxxkeiZNssc+3uWah5bbkSpDMEusl8Mp/g\niNwY\r\n=3ng4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-60630b-k7np0spz_1583953530451_0.1579517630711753","host":"s3://npm-registry-packages"}},"0.4.14-feature-a8bf47-k7ohzcem":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-a8bf47-k7ohzcem","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-a8bf47-k7ohzcem","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"474ecfb87909e62bb3c819a88fea63ee2425055f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-a8bf47-k7ohzcem.tgz","fileCount":304,"integrity":"sha512-1dwREoYGra03KdJgMsRrgdcvcwSXw/8/n79oYCIUc+EOmVe9KsT0v8IkOObEe6W9ZeLLDmp/qif//eq2oKDgZA==","signatures":[{"sig":"MEYCIQDUE7qRxVw1uJx56jBgExBLR9Y74+p18eYlO7dCKrOrHAIhAO6yaZCwp9h9m/UO59w6fOzg/WboyqLo3+loaeQ78Xl8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1411206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeafR7CRA9TVsSAnZWagAA1WwP/0fKnwyxJq4qpt4RMkFh\nNxxCeIFVUefcpDASUbcBnSsIBKyah2kh+IuvRDf3s4YTUVBTuB2fXRFtcNm4\nvlX7b4cifKvhCwDujSDgHmUzpyDjP8Wa1W8hiQzgZu07XEWDmbsC5Yg6+vlI\nk4qN9CHBLlxasx4/+SW83458wgAlC2XsovnBKRYgS0Ol3XR0lVUP33dYUWHW\nzMFpO06/nBZtF3SdP/ukmt8gL5y3KQioLHJfUA6ZUblzFNRbEdqlNjDnofXY\nCZUOyFBFWSGtoczlwN4T4FXQ6iOB8GtK/pSjrSQeipBqiJ6J4T7xQaWlrsJh\nRnr1cRd69YykuwQ6o1HltKv40/8h/tAU5Ku8ZaluY/kg7p7QCmA/lIRjMRrY\nW+muLrxRrthZxIZh2jssFQXtyhc+4xmKo7Pa24wPf0Ngov+DrFSe0eF5Cf7G\nY6U8Js9b+VBtXg16pttF8TiXekg/OrKImAsWfkGYfaaPZuSku39lw6F7nxMy\n0ggG4MqwIFs5GYLxDbjN5/zACD8vFURzII1eMkrLVGjTzj7Q5IDnKkNNJ5de\nTvciyzQB/nz3EjycZHK8nwPN3QbunQxj5anvDgVQs2j3snNGmFrmtszeHgcg\n+s5cgeDeKSy1Rpt4uIdiWOgUKqjPUQZC56m6w0QgfYv6kIguer7deKJaAu/v\nCTyI\r\n=VnJA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-a8bf47-k7ohzcem_1584002171020_0.31049772842366474","host":"s3://npm-registry-packages"}},"0.4.14-feature-362237-k7oimzg5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-362237-k7oimzg5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-362237-k7oimzg5","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"399b6824c75e3e796207675a00f7d4ce92bf6e33","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-362237-k7oimzg5.tgz","fileCount":304,"integrity":"sha512-tUmAMfHa8ZQR+AWc+qx8mNAJQ2cU5aALBgrqlJBtr4aRALjDJ+fXZERduz0ZsljT/qZUcj/jpS7AW20s+lwEiw==","signatures":[{"sig":"MEUCICiIhb3OF+MctgU8OJHXSnM8WD2pAnv8XJstX8JQefMSAiEA+bzf8my8MBCcnFns84ll+kRJdzOsObsNTHZDdSF27Xo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1385688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeafjHCRA9TVsSAnZWagAA9yMP/i5L0CmkKtfBLIwdrwtD\nUnjU28+lX7k3odk1qTdUPEKtZQdzePPJfG8paw6Bgugt0m6XOkvS8VuAZNC5\nkXdOolY1FPYFVKosQ3Ez+EawhrVkuo9dBPmQ62QVkvOZC1+30+HVBkAgabVi\nwNj4tAVV9rXCV9fx7Ij0jbfCZzd1UEGJrkLex93y7Q6AquTQNK15WfyT+en8\nkQnEUYafGg2hpqTnIK6K9/ZenFSaKZ/z1xL3lQqpzE9cvb1I6t5o64ZvZtXu\n+E3Qu9ktph1fjwjYIJEfiorz66uMkLUl2AUN4M5g/3X3+B3U/JFJWLraPMED\nxgAgWpzN0X4iD3dJbMVQ5P47n1j5gldPV0OVfNV83DqfrHOyJQPK2wqfKEFK\ngBNCEeXeWyV5CA7FKA4Co6zUKldCMxg0wQy+ztcAVTjMKkZxBoiNA+w8dxLd\npoQ1dRcbj9B33qhorOlrImgVbvFBZPHhUYTbyKEI7CIeiiYiLb1g6C1bz9OF\nbUBBeOTD43/h6boEWbGdnRmYQyWcksA8hO9e3eI1NJbzXJbnOa+1Ns7Ys+9z\ntMMt+2s9fBS+jPHsYlVarzkkFTwzZXS/ANl5S3Ms1xyNC04ayg6OyMzCO6R9\nY2eUinLDu2Ycn6CX2joYL99CHsRe5Nis+kQmQ5k+hJZntD+YSVHIKTfOQiy9\nZJZe\r\n=8Y9A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-362237-k7oimzg5_1584003270849_0.09042767085308845","host":"s3://npm-registry-packages"}},"0.4.14-feature-480b3e-k7ol7cyt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-480b3e-k7ol7cyt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-480b3e-k7ol7cyt","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"012f73344872b1ffe0a07c793da434b0caebb7ee","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-480b3e-k7ol7cyt.tgz","fileCount":304,"integrity":"sha512-ILV0Lx3/iH6q83PeFRv5spquO+0ZySCHkkXatKDCuBRxfKR360l1/0QkVRuxb4G0hTiirnUJoSYkaL0iw+odoA==","signatures":[{"sig":"MEQCIFpzcbc2Sr3JdsmFSGS7Brc0KjIpJ3hasPjbtBO6wwuJAiBCKqPmjQmvlujN9aZsjX8nnwIXcfNtnw5XH8ym/RxFwg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1385688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeagmgCRA9TVsSAnZWagAAtuwQAJv32G46iT9BRIRsDWwk\ndtv0Pz7uDPdEiN4CZZvSUnDHhKfut9KVog8ApLQmgc1OqbtAkaRpdPeclLdq\nSp78aYBqxQcmAB8d3R/dDIG+SeKvkcyKvT2HYuFBr9oRihnA9kru7vIuZFH+\nQoqZ1/Tjytvjph2VmshhtAvdZ8qsIsJ2143Pp/k3RtdMkJH8Mf7qrWL3Sb9g\nH7NtsJ9xcOGRJ8JPAY+f3ME0Z5xPGcdLN/PKXkK2ZQbT2wlLGco5yO4aVWdS\nCCXB1PDrWD6vdjBCvDb+0Hc9z5IKtcSC6gjbxz6m5RYZoShWj9YdiwDFsa3r\nocOWk48y4XM+TZGvZze9uimjpuZZqr6raj1W5IKlAWy2o9LDrRgCWUVzLNIy\nnHlBJpzv1yFhu9ULGQdeMDt1QJpyqc+h/hxO4wfUqDdcfSxoEbt6NjHINVBQ\nOSFt47rtOK7UOyqnIW5b4jRfXmBf8IJ9fu6Fl0YB9LR8V8PCSZFG4RPwgJyS\nkmQseVafDqrkcIls8VW8TESZxV+ox2Ub+3nBbihbARMzu26OHoHLgCBVm2eF\n/H4Y/5sU12W22lxJfZGz8UPjCgWDu15Kjmdavd8SdpawUYHDGjR4ImdSqmdS\n7bo69+zG9dABcVPZe8Goz208zqyooIyvYADTFwMqyetcOP5mofP2L/79kdF9\n8NOw\r\n=7OAj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-480b3e-k7ol7cyt_1584007583884_0.7096713233060168","host":"s3://npm-registry-packages"}},"0.4.14-feature-e65624-k7om4h5w":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-e65624-k7om4h5w","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-e65624-k7om4h5w","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"af766897518b83fd71527ce61c8688a36e653c26","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-e65624-k7om4h5w.tgz","fileCount":304,"integrity":"sha512-tJq1xvp+2MTfcXWn/2DfgbVb6GW9ZrGX04nRx1y7WPMdm+wvre+ZiKfigGTUCvXCb1PDaOPAZg84/tS+R74UpA==","signatures":[{"sig":"MEYCIQDY6l0Ma6bKqks99OxXHtHG72m3+acT6rsAQ75ys1MTLAIhAIKgAAacycWnJkcBIVbgk8n2sLZqdyr40kvXvbcZnYf6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1385706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeag+tCRA9TVsSAnZWagAA7ngP+wQtSmgx63xR5sktZiRS\np7aRPtZS+jXFsMpAa41xUYZ8Spg3gxQCs1XYlpllJyafcHeGwhP8JYfqhevF\n5Yjj3ZiJ1bDJJB9uv6Bb0nLgX0s1Aw7e3LIEzTvuLDXyu0sKZSm323vKnzhL\nVPhiaPJEQ6IlJeLQiJTXrffkq5LyAASQzRf3VHcHRziSVIeiNxT/meTkVOy/\nbLweFdOfsuCxbV0/lW0mkbitYgTVC69Tym0pqunDMaUsCSbf2CqF70BCH4YZ\n9TZ3nY+67kU7Q+8cckZj+6C49bC2MCFhrkMil43HE7RLtFyWDwwQZhuGoomo\nTJa9deHB1Fy15fsY7q2jHJg2jx0i0USPY8ccCOBRRsOVQS0r4g24gNqvnmRm\nGLsDFBnOdkTsBIpByTpjZR0GU6sf4MOOqCbEHcIGF8etHPALmsMJano0OOnj\nEGOayS7zScO6pCgPVE7tIoOugBg/lq/El7vqGV9/mY4RTZePY0ipsDNf8kwN\nzv7Fxslx49c6CswjcxBmieAqZjf9QAlav87+F9MPHIIHrZ6UQ71MRrsR0SvG\nps5t8kEd43ugGGW/vJ297dous3G935j68B5OSBU32ZrjLL2bkQJ9SKph72pF\nAujcYyb3J/fM6sovyI8fGfOC4V+f0N6PtsCTlBicduuUWfSTutx5VZ6UrgRp\nuSn5\r\n=Y3yU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-e65624-k7om4h5w_1584009132664_0.003967507519879954","host":"s3://npm-registry-packages"}},"0.4.14-feature-671dd4-k7opa6av":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-671dd4-k7opa6av","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-671dd4-k7opa6av","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bac0569b5eeabbd5aefe0400d83a3c943f084787","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-671dd4-k7opa6av.tgz","fileCount":304,"integrity":"sha512-sFu8iym837baEppYGyhV7epm5gMSjXQeiWOnUgZOTv3DofczM+CrxEgI+S/f8u4ktuJs+Sy2n42QH02unLIECA==","signatures":[{"sig":"MEYCIQDvltXX4gvE2ntg9HhmKGoNyD/BXPirooROZEBloqyICQIhAMZNrACdfl/+nF9uhB35sNsx9tYUYSjegO0ruipomHEm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1385706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaiRiCRA9TVsSAnZWagAAMYsP/1NgxirKOVspH37LBer+\n31C3Xv/APXbIFLwHogg0vUtwWUKg6Yid21Yhp98Lhuf3tTQQGcRCBmE1hc7p\n0otEFgQmCbYObdG5k6XRbYLNR/+0SvVUbmD63B+glbFfhHtzCxYQg3JZiacC\na7aZUu949HcdU+G/1mrVrrSJyyQfTs3m//vTcHMw/pqhpoCe4v0Yr1cfcWRo\n3uC9YLbyiacFe9I4yIir8SDlPryefpDSKvtFfIJLWYFuI39VIFWxhIgXxBco\nj8UzxmxUlUP+1rtFAhfxW7iQmlFe0SUMAxfcGtWBzVpTkY5c75dhFJe/8crs\nmh7iEvjXuu8A+DvuZRfmm8df4xN67SLkh57cy26QM4u7A9pic3MGCih3RvVu\nMGilZyUzCnxI7ZVVaB25VSAW+CbTF8gT01DsE0Fos3D49ma6s1J3wDL8moLN\n4j0XlIEu8yFSEaaxa8uQ6Ej7+uqDSM1tDIJtAz/65hrT31VGA895I016+TAa\nSgtqx7HFMUZfiv9MKtz9dRgyceAFOEtbBwHWB8n37wDQ1O+AuUZ/LK7egjzT\nIdGPYIedJUOQQl/UIn3ZnXo881HDj8fWVEgYZVH415s8boW7Zp8IofIt1eZp\nvyMbxuiSLpK9M9O9VGOqfYr1bpeSLFFwuMSWhZ/wsq1BnSLkP0OrP3y+SxYS\naNfk\r\n=76/H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-671dd4-k7opa6av_1584014434464_0.7855460902319087","host":"s3://npm-registry-packages"}},"0.4.14-feature-c61865-k7oqqsen":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-c61865-k7oqqsen","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-c61865-k7oqqsen","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f635dc9c40a4950bfba05ddef966397e874df244","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-c61865-k7oqqsen.tgz","fileCount":304,"integrity":"sha512-02aQxnegB+8SQPVt0lvS9a6xeMObHcH+kHnPeCkgE8GkHE3GWI6QBnd01RajNrj/uXs39rHlQVPNsOF/4YLtzA==","signatures":[{"sig":"MEQCIBxvTQyeKMNGhyn2nnOPofeNCuHOVTfznSdWk3VTeXrMAiBy0cHaAfPXkPm0/V6c7fyxHfZRr3pY7cPoMc9RqE5EfA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1383149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeai37CRA9TVsSAnZWagAALtgQAI7OcPHHBC2MrI7G1+AX\n4Z5jLLkLG1IW9hmNCBlLmf/+atkE0CkMvjShtzxNokJ7xIh+uKiFwar0BHz/\nTS0QjeDk0Bnn7N1xHmXP5WdL8WNYRmULmIxMq4lCJ6xHMWYScp4/Pq5SJITF\nBdHjjm1VGRca90l+UlxLPQeXM+OGYzG7puNGdygjp5Z9YldZMoFcRShl2D1H\nMBPMwqHGyYB2Hv7wWDBSiKf3/lvE1XwwH3EJ6U84vqmJCW+wc07gHGMyjB2b\nuQHtIgU2ujYoAgvM9Hzz7yaDJGvWDnrpzVOLdpaWuIKf0hhqr3F6IXUpXbRl\nW0SYJARwcCgYYpTD5vlJi39BNOq1uts77Eb6/55lz/GN1R5U8zPog+q5qeie\nac1xgzBVeFAvQ+xvTgbUWKTNNuJBiISNTqaxczPEu0Vxsob6GwAdgVSOEJQa\nnBV/K92HSVkI4tbAA2hDQEkpRJOwpR07AiqRmNmcNmwkfaV0tVCKeIrktW0Z\n8kilIui8SR/abEp2hAXPLUEPSODawqlvX5tu+y0kepzOJXwcIp11Y6ai4yV8\nYNXUgwPp+iaCT4ALPi80fSMHgpi3mQLJDMyqJNUyNaCorFc1TrW1qOfIUAar\n8B0xLDXbnsLe82BXEWZuS9SxsbCK8QKqfdU20pSFA6SjoFaNQVKkSLygEuMz\nWyMp\r\n=uYqj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-c61865-k7oqqsen_1584016891104_0.15959637159047202","host":"s3://npm-registry-packages"}},"0.4.15":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.15","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.15","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"68d0296ae98575350cac222fcb039913cc2c2f05","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.15.tgz","fileCount":304,"integrity":"sha512-o6XyIpI+s35zEPgqwXoa5QyndgKJ9C6zmagObK9zBiLa7+M0wAVaiAjT1AAVuZwLgSFrGEg/AXXxfro/mfkrOQ==","signatures":[{"sig":"MEUCIDka50EXXkjvyzlMX2JWLxB3FNDEM0Gy7ZGcRxmtpLRdAiEAprp13ALP0x5ASeey/WeTO7gd/KXDGaNQ8g0eYS0Kdew=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1282985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeajDRCRA9TVsSAnZWagAA5M8QAKT+XXAvIFF285tPTXxn\n8hfsGgL13g0OcMHRzHIgrqCRw2ZPcBh5Lvg2Vv63QaDLWgnAmue7sfjpc3U+\neYUlV19m8u2dDJOrzmqo2tdzMVWDxamMSrTKwcVXSD2tLncdkSJSYaLhzDZ1\nndIEOjJIZKzQi3YXaKou68/WkgPjqWzx85z3WpgGuNezVd/I7oG20EgzUimz\nFGBLzRW3Ga9WHByOII20OVF/UoXQDaJUGIs7kW6k+WmMuekSSyE9biGfiv3z\nV+TzrKC3KH0RKEoxXr62QL/GqjimwoCPjhh5QP2xBhw5RNgr+x99QkPDBdvq\nykm3wutRSpDbwBGkM8EWNTBtAAe2pEQVjSz9PDP3+NZThOY1bB4BrKXGrALh\nDcRAYP8oZ1MFeeFhHuEbp8cBVOYkNndNs8jvWYMUmgQTWn/uYITJSbksKH4E\ne2+ADy9DWd5Rne555pmJk3f7pCYiZZ9AhIjg3TjEJqrElljRDxlA1HkG37sD\nl3PoHPTXsGH9U2bSVHzWCriNdqFDaOvAsIsbqOdsuKhc0rw5+UAXxlDfT7Ry\n14CHVjpY+uyQ13MkNxUPDsZbd+M8io/tFrwudYPfaNNJNWTEyw0K9uWtzyG0\nU/02JcW1MZVNOvzEmw3DaVdBNt+mjKclK1BZ0MgWMvOjdMbtMo6x7buy/Lt0\nLSHV\r\n=iB/O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.2","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.15_1584017617335_0.8776609636304615","host":"s3://npm-registry-packages"}},"0.4.14-feature-2cc8cc-k7or6iew":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-2cc8cc-k7or6iew","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-2cc8cc-k7or6iew","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a9f3525989de7c5aa208822467cff9c75e635470","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-2cc8cc-k7or6iew.tgz","fileCount":304,"integrity":"sha512-+YhpDxhJvzNLvlzT5+MBWFpml7C5V6KJ3DnU4mOLe8CDK4FOuqwQ6+nif9AgyrLCvgFBDIxDqe2mpqIBPbwdJA==","signatures":[{"sig":"MEQCID7CEdPm4Coxi0y5MfBojOaljvctzS++9tmYw0SZKkoKAiAVlbtLuBQGxNxiKtGGO4UJK0IlhtyFKAMn3xAWGqjNfQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1383833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeajDXCRA9TVsSAnZWagAAeykP/jvjdC0goN5RMO2ROpdh\na/OXQ954ibjY69kdnxfILlGUYKvuNhG/7vqUGxKqNxjNJLQzpHqifIZhcNgo\njqoCUSaDWDXFM/TwwjdC+oeHz6P5eJiFFKOzq4uffGOCcYjKvv1nUtw545TS\nLYkXdJKG+f/N2lx1t8h+BG4BBAMmavc3VZUkeyqSSnuXRxH1NOESdX7+sYld\nMKhWim95HGHXgEFTJH1rw/sZjE1VniF+spQUpJ7SD6joiHtbU8LIiHYc6zWK\n4amSyAavibAoEDiJVzCrPnDnJTulkXrz/6IveAgyUI/Ovs2AoBMtvV69DMap\n/6N15on82i8tiXETFX9tfuPIQ2ra4pYkm3SXZ9Gvx7DCFYn2FhQHmuUVieh5\nRna6CQ9CE2hCPxQ6sHFINfThSVwHiXqlTlzApIYKR2xsk8IhPItd+Brfo1SG\nhoODpaOZtwAlWXxLrWD2FaXMnHZOTdweyWHBgSPFgCBcA35FlZrmumFgs5jr\nwxAQZAU3F40XRMf9ZRDLilmBF/1ouZdAr01XeTU3PYNz+yavtJZf+Nnp4K66\nET6rgmo86IzsRn+hDzbIi4iqP9lBzfEcrnDqgv1nz40xOvfEH1XCC1cCsAGf\nZsMmG6cBH1lMVubsPdgVS/WnkLXAM/q+Orsz04l9qPa30eXvE9oTkLpNCQCb\nILYG\r\n=+XTH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-2cc8cc-k7or6iew_1584017623417_0.23357141613147125","host":"s3://npm-registry-packages"}},"0.4.14-feature-dda244-k7orqov0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.14-feature-dda244-k7orqov0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.14-feature-dda244-k7orqov0","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a5e9c45a71b30d0b1730ca9fa1c36eeab1cb97e5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.14-feature-dda244-k7orqov0.tgz","fileCount":304,"integrity":"sha512-ShY+7o8Zi+aeeBV5Xyu+gu1VcUIX0b0ekPjqpp+Ty7aghqHY5R9stjyeL/TKAoWMQad1YftaxSoCWtriLlW2Lw==","signatures":[{"sig":"MEUCIBxcXyPg4gsoMhjvWmOPU5ggAvmYardF1XUv6ANGKhc+AiEAyEM7zbTZX9IhnXcFFBTE9HikYAO1TB2KA4Bx+FyP5Pw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1383833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeajSFCRA9TVsSAnZWagAA2qUP/Rn/kSObaQ9FERc4T3U6\nofLzTFsFPw9MMmTLBTpLl9E18MzsMzq0jxZnbHrdRoKuz0UUE/Yw/yuu/fU9\n7YNU3ApsoxlaGJqq17Ce/uW+ZmFB8l6T6i/IfLrU5FB7spS4q1jyDlAiH2VG\nxrrKfFA+jQd+xXSYMFxZcIyHrte14MkX6lNIOWVGWY9rndh8qdXbRdf1vPXE\n3V+mJwMpivFxZTUh/sqxFmRGJeYCnq1+hhDoXFAbohHi5jrDWBl0zgy/qW6K\n7soANVlZeNubLY2xj0Ski1WlgqocaQWt/RNG/BKCmvd+v9LbKWZBakHHJcpd\nfFsSw2V5COuzsObG6Ks7OCXsNOQizJZW+AS5lWvz8pzceM7/gCJjIoAx+kZa\nk0e6gDoqGPhXrvEE+DrKBmQlAV7GpgRY5qUpH3Ez2wXJSh6wn+cy1MoCwEOn\nQI+DiSjhlkogAHNckLk5vyNiC/1YSxri7D2Mi1dMX8QW7eB2H3Qa655zpzbt\n9A1fFRUYSfI0xIUW8XhIbFcZbP5Ex+TN2TrxlMXJ0Wq0oXv6EDbB6j5NipTN\nWda+jl3cjDc5vuPwRmqCOjXBIsGHNrusMr0/p2xPhN0LWQLvEsRyUP9pnTfg\nRKcOXjr3p6oJ4m2JY8Y13sIRB/Uf79YeanhLA1c2iDEa2k3DYlaqdxLBaiTs\nZbz2\r\n=tBM/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.14-feature-dda244-k7orqov0_1584018565289_0.7131221806856529","host":"s3://npm-registry-packages"}},"0.4.16":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.16","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.16","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ced02bc7f17c56945f832161e60aecbe60f281a2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.16.tgz","fileCount":304,"integrity":"sha512-7lG9DWzs9jaQfml+jZD67ihpneHu42DueR2WZmXc7D1WLwyhmgMt/aaNIqYUkn1qGaZM7mXFSrr0UaalzT7XHQ==","signatures":[{"sig":"MEUCIEoyQ7iSc+OedsfMYGAJPCkfOAdQaZ1Yji6nodjiOfUcAiEA0HcijJzRBiPTezZ/infizbHZoc5qB3xqs/xYsRpIaeU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1283010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeajbSCRA9TVsSAnZWagAAm80P/1YU16guzj/4zbGXrv+Q\nOImUzdnF/FFZ2POHzNgeyQ1RtWxrunLSy1b0/5IBp5IWAWPMR9FjN1s2+r0w\nmjidcQo3a+mk1ifsWHw26lF+RHbzXCS3KagBgRjszqCQ1lrh2bn/6HYY2aPu\ngnzVaXsjSCnQ9H/2uK6KJ6sUnmIbJN7+mhZwG6XfasrtkX+u82S3oDd6uHyR\nmiK+5Ts5vroNDLROudIsqi5JvowhuZ27A03qgpOp8VgHQnLVtUuUbJvd3TPR\n9undFoHKIHfQZyzq6oSn8W4Y9wLLRfAeDrncOEmAQ3gkIqKu3DOmQXLrpknI\nef7Qy2m5kmykP/LT7qJNLVuCsi+x4irKqIHEp9v1f6hdO0nUqNaaBYbFWfND\nURNUFcQ3hQLaiLSa8BLJXXoU8qcj2DWHzfQbZciv1nNS8PfMU7Alxh/hQWWx\ngjsrac+Pt+A/FZpcW6FnUlK1DeRTlI5emfdL3GE7kLEBcduyjcm40IUoFG/S\nqDRfBHTcbxFtj2eBDCrbj8tR/eT0/sJkQ06RrJk14CeJX9ND9XuPX2qwW6XA\n4862UhFw1ypghD5XlaT6vKB555/47BffDXLQM/4UUOEEgeC52LwdUmTWxcWc\nuFlPxyhnA9/RrbeUAj6G9ndeeFUqeavvJai3wv17mJMLfbAw5ubREguOYOcC\neZ+2\r\n=Urn1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.2","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.16_1584019154351_0.1384030412858004","host":"s3://npm-registry-packages"}},"0.4.16-feature-858f68-k7oshyi8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.16-feature-858f68-k7oshyi8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.16-feature-858f68-k7oshyi8","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d481906402e9ed2f00842ac899f44bce4a01d9fe","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.16-feature-858f68-k7oshyi8.tgz","fileCount":304,"integrity":"sha512-xoJhYMxy1qIr+qqdOor5hIIX1ZMimTPE2QQcg381oZHqPejO1Kc4AyyNhEmAM9JiSXBVv0ZwxYN/D4TLBCakjA==","signatures":[{"sig":"MEQCIGLN3PLHTsHS97OeG16GSgEz1j/Dv0BJIaxSZ8wEX6h/AiARzgqkd6K9JXfctXwyO5Q7bnYMHTEoTcRbbEj1DUVvgg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1385479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeajmBCRA9TVsSAnZWagAAu08P/izC5hvd2p6moQkkbrtQ\nYSLUT93AVUV5ayLP74gtQCkJv9oAJrkbCFv+nV2dkQz1/8f0iNCriqHWBkLF\n9Pef8CUpX+hKOIdwvHwwfK1eIsr2NSu9kCBmdQyj6yx2RtdQqhyX356DB+sE\n800Jms+oZYLyhrzkzIEwgNj6Kt1WeQAy1KxkMDIgMJzqjBUJnxWg8s1FgNjl\nnxxNhL32OpmqVaUOv+cwRS1GJoFkA9sY+xkMmBy6LnO1kJ3NQN5Ttb2sv+05\n48V2w3RQjMnnbQHI4+hLsy/PRufUvLe23rsiR0B+pbCw1/ktzIWBIvKUauek\nFt00Ut7ZLcqg9mI4XIDo+16dAVXiOsqhqU4LAohI+Rry/mgxkW/TsnlZw04J\nR5T24zc71dSHGinfDlZtgSUtULb/N2Pvwm0aYFRCTA1NIpuOIRCCixkDvHkf\nYbZkRa2A/7y70zCqrzqEFelmKL352THaHH0No2ym//RuP7G2mI9m5tCmtqSA\n+sBUMNmlWi69rJsUV0aonAhGh7Zdn8KbrFUbdu7ufiYB6Nk5r1BDOwsiLdNu\n893cWM33JENKk7IlD9uFanVW8UfVC19Uu4ivPGg8Ka7B/iKp4ttJRnjQ9HBp\nuDfHloNpaJpfGMDPRZHpoxdsDU1sHC90ANsaG8mqr+OR/MTfJqGMDwI1CNPq\n9NBb\r\n=e4VO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.16-feature-858f68-k7oshyi8_1584019840511_0.14464652266886135","host":"s3://npm-registry-packages"}},"0.4.17":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1dd6e5ff52543610cc3268378388a813dc6e0a1e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17.tgz","fileCount":304,"integrity":"sha512-UFbHCoK1lbLBt79C2UUTd1lMfxlyCmBkoSUjZh5J9TcUUK/BZ5ZOXzLeXlpWjJ60C8kjQXPbmB23tvaQD9NJCQ==","signatures":[{"sig":"MEUCIFCXDd1r5dXKl3XQ/6hMgrcYl9SyfqPLMWIHmu4STAX2AiEAqXRGZHoPSWSPBNmJ2tSQFEW7MURYBFX7Lk5836fu40Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1282810,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeajqiCRA9TVsSAnZWagAA8R8P/01fV7jXLLRDCW5ruNCD\njiTCCjjWfY8Fw1OyTOcbV6PKv8CCPjYYWPXp8FKkYvVR91fz2tHtvWpyqedw\nSlyJ8KLpp3VTTT7ESYpMTYQkgNrSTbeeHf71Pir00NaddRkiFeCHFk7FXdNH\nwN+y/CTNzKbNsud6mrCmbLhE5eXQ05ix61yFz95lRpAlEJRXhS6Nt1I2No/N\nQHJ343iw/uyFIhcuJeS11Tuk8jfMr+Zw+KFtlI4JBiwZx2WJ1irQdzr7f1Dw\nWVFEcqAFHgyn5TxwGk42Mg3Kc+FeJ17F3/XOXtyQgQxcZInRIheoC7Vov4Sf\n2T6whm9u+RZUqHL/N/8wEz9wPe8tk5Zbh45zEe8vtIMRTo4m3lDjxpFaonaX\nS/2Ov8nPZQm5uRkcNOj/A7ezrB4EcKmblWxDVGoxHF7WpTo8Cs7o1irRCzPC\nGAN0u78ZUi3c/NSGtuEkCBZlbcpu0qa++STf/dnBlc98Ibb0hMuB7+XDIlR+\n/fQubse8b6DBDD+tdTKChz8Q21qXynuqWK2bb1bPVd1BQ/bJ+nr3UfZaVShV\nvYOsWWpvOAssnh5kFsnUArhbo3dFyLBUfvcBynoWsPDP2Ov0nwTZFL/hOuxR\naPJk0XAPYkat2PCT2jPvgKy+Ik7WApXuG/FZwcQURMOqvBZStn6Igcpr7NB8\nZyZO\r\n=E816\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.2","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17_1584020130438_0.715197829934312","host":"s3://npm-registry-packages"}},"0.4.16-feature-e44157-k7otdc0a":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.16-feature-e44157-k7otdc0a","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.16-feature-e44157-k7otdc0a","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a4917058510b238e1d2c1c81fdc65c495e74379d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.16-feature-e44157-k7otdc0a.tgz","fileCount":304,"integrity":"sha512-WExCfuSf+KyYEaYWzT2Lx+VT28hNlb4bcKt7dRAfutN6qwPTjxFhpSP17a6f0Bi5D871S7EHE6FkeR90d/x0PQ==","signatures":[{"sig":"MEYCIQCmgNQeF1ISM206N9ZJIHUqnZl8+UD2DmRZHPlGVK0L4gIhALhMJFmkhANbyShAH/ykxRxV3rPrdfY7y2ITbqNx3CTQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1385479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaj83CRA9TVsSAnZWagAAfq0P/07BlyEb2Ku8ivyj4TpC\niXOCfq+KgdsSzHUHArHadeoR/eV9twfHBvnw8meovEAb2+kcFheN11hG8AQv\nAz5hd4t1PIQM8GwMyod7srSrBaNgiQ1CsGhXqN7lxkFoe3WhFAFB4pDDxw/H\nPpupJk3XVbW+f56jJDW81YNftfuz1+Igs4ArMUveucw3sWJKW6Dfsffy/l4T\nNk/UdERLLd3Nl86ndGuSOtHmsEkZElbG5R0ApVfZKPy7tvuHiMheL2W7eQ1C\nUk5KyPmrmOmjOR0tTed5iKqEP/3XBvJWnUGbtVNsHo9J+bzbh8wUBZhFqxnY\nL0rkV9yaB/DY6xpyyQjN3AJOvMQsU+XWnJXPNHxFavcF5fqAK0yqLvNGj34u\n0+D2Sas2auwDIRa5629bHKfbnFoo4ch6sLf2B2o8q3WQFsW1AHBwpOpEiwOz\nXPK9zA4alILsGEU2E99iLoynQsU2kZeszKjg0KV5ER4csjnrB1THJGHTTyjP\na8YoPAzrJJPuTdaIFrQF06nAXcWiJ3ej4r8noUGcrXkkQzWfdRf7Vo/oqN29\nR2InggqtqLXSSBC811bBSTvLoNaG/XopQV1F8jp3jyWQkGt0k15Nvh6YAJM1\nJXSlV3xTDp+PGkA+TK60W4XYIQNHam2M5j6H736nH/DdMtmspVUmWDaQwiiN\n6AaA\r\n=Scg/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.16-feature-e44157-k7otdc0a_1584021302648_0.8473307269123675","host":"s3://npm-registry-packages"}},"0.4.17-feature-ce82e0-k7ox3qcu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-ce82e0-k7ox3qcu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-ce82e0-k7ox3qcu","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4cc1359e7b474a5d63c21fcc2579030c463f352c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-ce82e0-k7ox3qcu.tgz","fileCount":304,"integrity":"sha512-aPWf4+X+gArMW0z37WEytDAx48C5mCXAwFLGi8ptskNJU86dr9Md9I++saT/ZLMgtg2eu3KkLRKJwkDUwTFnDw==","signatures":[{"sig":"MEUCIQDwb2wNOQ7WHCbuPw/2waGHgEYwJ2eGttkN2gNH8PXIwgIgQ5QdrDr9/uEAgnG9BaQWJg0F3goeYuvie48hR5rVTbw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1385279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeale1CRA9TVsSAnZWagAAuHoQAJKF/t1yffMvnoHW+Mpb\n84N/2fqDDVwexb/nlMOsRJgAvFsDZSho0CLviC09IhhpfP88rOLkeGPlMo/E\nto+QEVDuILSn6Rb1Gng+1h58rPaYCUSBDUylVfzus/07B9p/W0fI11EXTKGX\nPhNBWIiiqFYw8hhITiXc1b2mygqsBaMs8HQuThZDg5BJvHYy0pNlr6vMZ7pw\nfEflmfLIqQ3zyT6TzdE4qFhSEI1iB89uLq6T7TNCV2lMgCBTynOF1E35k68P\nhTfTIFWKWJ3ckYFA/1ar+5thSQscivbynmdUV980fXW8/oE0fTsoGdMW8Z+j\nARFz9oAVckI6G0uWJPXA2J8VjLQCqtKOKwezJd37lZFA5ThXLmju/ff6MGEE\nxrX0DkdtXAT0Hk6wh2LsbWGgBBLio+kabX2waOZMYz7j5MpxOprDiQ/FjMJQ\nS4jz7cA+yviloZxR9kyJHstzXIB+C3HvGZ3STjjs0ttJ4SWu8z+O5VNuOiRH\nOMI66Y1nFlAVKjeFgyO/JkQG1wnI01mC4oxbz/YvDI8C+U1ydXmk5OGOmtNQ\npqqidrWo6y22jwm1sD9og3ijULbNLMSaOvo5rhkDWGnGaKJOTjo10jlqYTOA\nosgB+LmlT+MiG1wplcFxL5JMCKAnK5S/oQr99BBnDPeTjHTBJdfOoNoIgFba\nKBjp\r\n=+fsr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-ce82e0-k7ox3qcu_1584027572444_0.4373687549609073","host":"s3://npm-registry-packages"}},"0.4.17-feature-8e7511-k7oxi7fn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-8e7511-k7oxi7fn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-8e7511-k7oxi7fn","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"12bfe7cb42ad42e781e3e0ee1ff202c10f26466e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-8e7511-k7oxi7fn.tgz","fileCount":304,"integrity":"sha512-b6mhTGI7mcyhBpqO+OOcC5EKSp43HZSi/6Q20jKAFVGzNpWhxGerWtZHMZGEVDwcxiWO8NkRejRSAtKZAftryA==","signatures":[{"sig":"MEUCIDiKcRZKswspGiuc90gZfXlx9WJu4ItFZfZPnXWPA0L+AiEA5mS1UbmjncgwqSOZj7OwZNCwNVEV2UZiE7wmh97zqQs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1385279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJealpUCRA9TVsSAnZWagAAHt0P/22Sfqh+HT6s+YNeo4mc\naCM0RM4bTj1z68ZtForRV0iv2w3yyhu9LA3/h9M3HURdKZ+XhZd98dmPbNNu\nyqx/OAI0XxQ5HRNrKdB/Ng/+eK1cD79ym6JyNsu+DN/Cdgk0WgM4CLlwePTI\nui/QpqJetDeUQb/aQ88lZXrdnELDAI3CfSF7BPZp+hiESVDxvkvRn/GEuYs0\nUgjqEfROw5TBP6FlZkGzGWkUQj/19WsbNooiEPdw5JmpioQRHYPX7QoTtcH/\nEKQd2QI/K40+RV0Jdh6UgIzLfLHvwYUz0iVs4Ay6fjg6VN8+fzPw+jYD/i4B\nVWLH0rb/bbiDKpC7VlGOIx+p1Hg+z2l4cVtDvmY+Kusp6XWj0/FbmUQTnRPg\nRTo4yVfDO+9c8pA5U5rpMa6r2VL1C0y6ckjeSQX59p7Rg7bH7VkYAKXyJkAN\nTD9GQ27GZdtA0JNWLEQy3WQCAeUi7wXGbU5z59gZR8EG01n2QQEmu3LAPgjE\nzEyDR2qBJ1PgOgUUN1Xr3u/Ypl2zX+ALvdyh5waMgH8K+b7HDhV4Om7I+xrI\nko9qcfWyIOzA6BgILWZ7hkGqwIxWFVvW34ZY9iiXUk3PVVNzC9Cx+t05lYKZ\n6aKQn2hdAPpjCQGd+iwFl8Y9Z9gl47xgKju7bxuHoYAHLiWpd0rAAsVu1XXf\n2PZU\r\n=iXMe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-8e7511-k7oxi7fn_1584028244279_0.10697280712447643","host":"s3://npm-registry-packages"}},"0.4.17-feature-3a3a71-k7pyvccn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-3a3a71-k7pyvccn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-3a3a71-k7pyvccn","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5abca266dc003294f270b326c90ae05951d98a67","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-3a3a71-k7pyvccn.tgz","fileCount":304,"integrity":"sha512-oq2SRuzeiwfKuKkD0WCv33zan1QNz+F1AO9/JU0yZH97fgsLLGEX/MPK7jUYRPe/kzjUhRlcKWbtAilMIihl7Q==","signatures":[{"sig":"MEYCIQD3lFjC/TnrxypAHwD+XnPYZpxB3rKsKF1GCZVDZuNjVgIhANSSgzzJW42Kn6GWSfj+QpCI33VFa1s7z13xcJWWxGij","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1384245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJea098CRA9TVsSAnZWagAAf+QP+weYUrxvqTl2Xiy/MZw8\nmAyR5jLbT7WKJ8/OVUlwWWILAh6v3vYc2T+ZGOYnsNPbTSgh6KUC9RrhGaNZ\nSz4jskEJJkBj7HTaCyg0L4aSat7TaWmzKJy2GaSleEbtEkq5/jOARg/tCNqQ\nD+k0Um9aKCjDOWqsdU8d3/MyY2iUh8sunVZAtS8wWJ+BdudYpoUSGJh8F/3a\nhLkwABh7oGCHX1jHtTvTTu+TPT08vT6Bl7py0BjQ7qsOfC0LY1OwSeJvkHb4\nqIuvyOAvs7QzE5OWoq67r497uUAuP0sEaRak7dopbRdNrPowT+tnAkuDeDn0\nUq3RIp3F/yVvh279Lz/Cn76CeQPAjtCJ0uHO6n2XHdjK3H3dX3o5QzPpqwmq\n2r7Sz/vB3GlDUPgCS4CZsPzFqfxFkyZD2x9AdMQTWwlM58d9W9ebistr8nhu\nRy7XAT8wG3xBcL6Of+vqSEL+mV9x4hbwUpjEKjK1Tlwj0qMfmk3acVCJQFN5\nvPYnsCdADOKN3U6jY/j/s6O/bhDQn59y0nG3gEnsDH1KXZwIrHVV7KgCnVff\nn64HVD8SU39cK96G/fZdzf/8Y8/9BOKwBVndUQuOCRB4Rasz2Mc7CsA8UiTc\nI9szDGZq/IQQ+uU8nkrfedgsBOCG3Gmvr2Cy31piUy4bzThDC8HTmKnoThud\nluFF\r\n=m+Mk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/runtime_domain.contracts":"^0.5.13"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-3a3a71-k7pyvccn_1584091003827_0.6605851669213973","host":"s3://npm-registry-packages"}},"0.4.17-feature-db08b6-k7pz5deo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-db08b6-k7pz5deo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-db08b6-k7pz5deo","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"72380bab1afab0616363c5ded5055314f0f9de8f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-db08b6-k7pz5deo.tgz","fileCount":304,"integrity":"sha512-K9TlgpnZgCSWbWmjbqpAzsc2uVb4THukuas2gACfWKxbNe+8uosj1QAHPcIKnva31bUNeQra5lYrl598bUpt9A==","signatures":[{"sig":"MEUCIQCF+82Fr4atnGqZw8wdFgb3f4N7rPztHUaSavsPqsai7wIgBkaRm/nEZ1BsCqURFMZaKypltrbHEijgOmw0rFrvX5I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1383729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJea1FQCRA9TVsSAnZWagAAxV8P/joNkl747q6HN959OH/7\nJygSzjnBKwkAIH0V6EG2ccnQQYPU9uXPtJLc9NXRtpVkjsC6Krcj+3bB7lOp\n3ErGZi1zCZJS0LlBAoxIW9cVKCm5QhI5NXIirfiLXsq3pzcsf5AFE0B61n4g\ny7wP9MSNqtWZPltx3YArP3dkWXPHD86uvsGA696SCSWSmRMSdSH/R6pbcQHa\n9h68kyenNBb+oibaipbm9y6Qlj0D91k68gwP4UKEtQfIuR6+QG9MhgXLwhbJ\nC9M/xgX9JW1YzdQn6JhXtv3mlB3XPEc0Sa6m2pNdbRtxtXwzZrQQ5KtE8ddG\n9rka2n+J0tzbg0ZNBqbR934/SwNzhHsMTZPF3wMdJW5Pynh6c1qs0+eG2eoZ\nYVg2SMgRKs+37euJvoF/EQAq9xCiW/IhULFP8YgbocBwkiwxl65qwqMzw671\np69G6uT353segpDPRn/d+2kNEP6hpTjpo0kzeQcs3eq+jYj6MT54BhrhWV70\nOSk3VCpVagb50K2LzbPli1GQTuT+Nogl37lNmIdTYVw4qBe/w7DOgGgHCsMo\nlM/Snnq14I+sJpu9htEIGlH2wxLPD/kQjSx6TTc8lqrONOQNW2/TcXWgbfIG\n++sdKhDMmtovd/53AUspR4V2L8QPYH4xSRCXhBpuhUjylrfaYaIPQsm0zd4h\nbYqy\r\n=VFp5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-db08b6-k7pz5deo_1584091472016_0.7043983007742152","host":"s3://npm-registry-packages"}},"0.4.17-feature-33e441-k7pzu44w":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-33e441-k7pzu44w","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-33e441-k7pzu44w","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"dfd52f27b5c83213e4500732d7fa6504f9015f56","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-33e441-k7pzu44w.tgz","fileCount":304,"integrity":"sha512-rcx8gBUQmMZmT/eyRE42Eq4KKFLTBYFpz80diOt0iq5550aY9THcPUs6Y1lwgDcDYZEaYgRQTptYkmAMV3r5rg==","signatures":[{"sig":"MEYCIQDjgJBBmy7vYoca9/68O63MURbPLFOK+8wnxBAxFbjLXQIhAPlcyOsP9bNJokwo73ayHBJeVeI33G0lieYmjaZigY6p","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1383729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJea1XUCRA9TVsSAnZWagAAPIUQAKCi5+97D9hPF23EFPYQ\ni8QQ2Pza9n/KuKuJwaCoHoa3YBEIKK/Fkye1OrqV0bxYicHtOVhZjhw11z3F\nwa2CPH6Lz8ArJSdovXOlWWPYvl9i9s8k+a2iAlsCsStCvbGrbs9jAHfWUdjF\n5ihNwVNJpfzoWFrs2wDjYSU+5yLDMB/XYA2ih3ufN8wnbLMYoSdL9v1lNxtY\nKriq92sS0cuOAFYGV4BdDg8O8iRFmicVlWUIHXP+11rvMKzIeW+Syuvk5Db/\nICHVWB5CWvsEWh5f2kr9uBai40nTTf2ikOtC9o74yEbx6YWgvUog/XyfznvQ\nc+Q3poOmFKOETkyxIeLbBq3Bnh6jgNNeqeZ8I8oGO8HhsVZCYL8+ow25DG3c\n20obsK0XYDwdZM9DueTlJWbmla/HKZoP9dFuibLvCK6dou4NMjOHu8yzGAM+\n5t9JXv4Fvzbj04M9o/LZSaooHC0byDcYY2kS2LEusdXf3/MjzdbUO7Y8+j04\ncbm1Jihd/2JZXo2UiGGkeKcYPsLziOVuF6n3sLvpcpfNG0FeUbWtHUzlgaXt\ncGW9SB3QZGjIqoY0zH2TPPH0xbY9gvKsOgYnArv460v4da8Yk1wXdIOVX9GE\nlXMKWy4JqdJ099sAsdVNVZTcvJ7pMTNJEU51OMnkwn7EamRJN5O8GVGDub+f\nBicn\r\n=T2TJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-33e441-k7pzu44w_1584092627759_0.7695986154362364","host":"s3://npm-registry-packages"}},"0.4.17-feature-3bf491-k7qdzrf1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-3bf491-k7qdzrf1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-3bf491-k7qdzrf1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"72b13eef979b360fb868e529b958dabdb718cb7d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-3bf491-k7qdzrf1.tgz","fileCount":304,"integrity":"sha512-vi9dgPguvn9NiUKpvAJy62KS47cbU6dOhb8InFkYLAlIqP5QkJASyPw4/YDYDRJmbH221uxgWGXXbEW+WQiBNQ==","signatures":[{"sig":"MEYCIQC0RyS5ajY4dPeRcbn0n2jQbTyg/ctxU/DTCAu7FcdR7gIhAJEtAJOCdUb8CXCE9EbkK7Ot4Sb/EnyFr0Vp+3R2X1rG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1289282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJea7K6CRA9TVsSAnZWagAAwbcP/R51eNJnzxEcacUcOl85\nfRJtjK8nzLwMhqK7VxIyhGhDt1uHkWZJg5xWWwsOyvIOVjw/fWLEPKN8w6ud\nQvVgzBPGOf8tJTMtyY1KnhoncU+a9abFVRDZIGZk2JZ3wsWSg71mC7yVlsVM\nal+kkrMAqjMVpIv8vg2i+jXS5LZtww9CtNGzRTc1MdV3O3EfSwRqdCpqPpGj\nxLNO4b8gD9zzf+k0XOf8mp6Rs2vUUrh3pT5ZuM7WiwdPH5u9cAwG4AmooBTw\n/+Mk0amult/YfU/vRFHZhAbW+14/SJH0UErS6I3dp7bRVxJLB+mRyDhvn5ws\nz863C2PTT/orKV6IsjAbFrF/8poZbva/A6WO/8QFVgTOmfxt5kCWFYWa8rXn\nd7MximlWJpt8fYxr/k2GtXEw3L+XcA94WrWJIddnc8GAMB2Cc5z7pJ38A29T\noLP+NTUN8gpB/NOM5QLFlctxm9JClyqZnZEiY4ghLTLj+mJ4guqEG4e4/iXR\nC3//4I72N2pOnDN57reZmb9/xZkxlj/cVx3QrC1KQELCIiyP9qYRuKeV8u9k\nMIB7J6p5Ft4leP791l0wxGZJUAi4DjTsy3zTEc7xmRTTAdxlwjKYlOlW4aqX\n4uSlsvcDuljgcASNnFzKyLQRl2yiId4X6rLHSBU+ds+cB/aMomO8qQlfyVUT\nzcP2\r\n=E5n6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-3bf491-k7qdzrf1_1584116410088_0.15986601504520737","host":"s3://npm-registry-packages"}},"0.4.17-feature-9b879b-k7ua2uaj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-9b879b-k7ua2uaj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-9b879b-k7ua2uaj","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"14dc4678864d8501e3c4484b1a633b20a3a56bb8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-9b879b-k7ua2uaj.tgz","fileCount":304,"integrity":"sha512-JYXyRgiJLMAg3pxpc1ktAfW/cg1VIsnvw++4CMZBPS9YKrBSLGrWUbvoGMthGKM1BbNCVvlYbZtBgyif+p7dlw==","signatures":[{"sig":"MEUCIFX0FCszI6cNgs3lSMVaScuW37lmyvlb2J14qeZGJV+8AiEAqv4v3fmKnmN80N/d33WVsrKWA1eNZjACaO1Cys6khV0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1290398,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeb0nQCRA9TVsSAnZWagAA1SUP/2wzET1852y1PfYNkPJk\nyYjaCM2OG0nqmN1NAZ1xDeFwOiIaEtKLgB5RA4FTr1KZ/whlQdkaahwSUHbs\nNg8CZX8S8MvlKR34/EoS0UmbR3lWrPfjplKpVVormMQx8aR709kNXrpORmIY\niiCO20ZlZTk5mdG03zJjLD0TjMFMWMdBhXMRYkZ31NhLr5V+oVtPquySc5zk\nEtje9N0KLsia5AhOkkOpZobEt5BS4LspqubB3ipK6huPFok6bOi0QUnR0uks\nrsDhHGxFF/EwhHVfRzoMVNPUTwKutO/LxYwFO3mMXGKxCv43urU6IHhSK/8X\nKPFdpspbglQVlLfji7ds45pb5yuh1SEgY7gxkZImNduGYtmdenD7B+FDovIC\nQCptJmu30zhLTXsFyc5wniSkT0EDeewDpPQhcaJU4IJC5B0pxQHJvJgzfgB6\nwF0UKmNGka81BYUceMGek9Jc3mzQAEP+1cYBOohLBQFVGLlw68sdDEIVPb67\n2sSnBPTUbtNOpxrGrElfkl8+PRZw2BiZctH4U6YUCKb//RYTgkvc4jCeUdd/\n3cuSRsTS8Pg1aW3x7NJUl4gAINilmxjDaITuw13wujtGJ1zxF1eK3aoNBgQf\nRt0a5KFqdGhu4qFdSVXv6gAdqUmnJwlVGDQvKDdKSX/fFzs6SNF+I/SQDh5u\nYU1K\r\n=j8I+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-9b879b-k7ua2uaj_1584351695691_0.8847297860423853","host":"s3://npm-registry-packages"}},"0.4.18":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.18","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.18","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"37a8846ee1dcc9128dd59cac081c784b76a5c260","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.18.tgz","fileCount":304,"integrity":"sha512-4HRYGhT6NnJSwXMr9Z8GnssRUn5aDuAI/KybBZ5vxdYzDZZtPPclUtZ+57hWu/pOfcwQX7I6Jq5bJGjynQUZow==","signatures":[{"sig":"MEUCIQDqae+hcZdTx4Lne9+JR1f0dYEkenCte8mZo7Jdd1CHwQIgS8GB3h0v5cFrtPPZ82LPE8aXP+sqaSKpP3zw5D4fjdc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1288896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeb1g/CRA9TVsSAnZWagAAxEMP/R8HtIWnGYeNPl3evsUa\nxmD5vIEp24vFB9jVBj5MXXndfhlhY6yRRtCvaIcwJvmBTD0V9K2O1Fe4KLKE\nXv+O1gpjNCfsBOepjgWxReyn4/jKMXsSsxjRFSac0sblTEPvwLnsuKOg5h8T\nuKw7ZZehFjRkiJ6hzQ44W4wzYldH8DH/cRCb+Ctc0jwi8n2/dVo+aHao0QyG\ngGsEksKpHTH8vu8B/PVxIsnxzzdN0+K9wRv+wDwcwSxAn18GH4KSY/Yyo+b+\nkZbq4Jkt+KQi122/fLnEpi64ieqV+LfRO4UVFlDcDR+Xqosf/oxZJOSquQ36\nczQz8dOiKI+aPkGmtYM3ZPF/l44U7cEi6993bv/z+WwxA5q+30dDFfe+VOYS\nPy/jzxD1zUhMLDjyh/Mi60Hyql2nIXwRnM7XvXaSlJQ7ilrSG68WxtQXdYzd\n0oS43EY3pJptk1K8MWklJKH6sIBfS/pGHZ0SHZ0DDNfhcN+FWAiMH2wpedn8\ndCFX7UT7SXVc8wKK8qzEQI2AJuwqLB3cGk1/iiE+43KKKclGugiZTfqkbIbN\nAOPWRAyjxXCltHBfwlYezpHK3LxdOSsKNxwR+voLua9SkoVJqb5ngb4TXhKk\nWgoH2F9peHtXF6Ao51a1rT9RIAQkFe61G8EDIwk5gTh0tckRbMQiyR/1T9VV\n3g1F\r\n=q/An\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.2","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.18_1584355390906_0.7161887767896165","host":"s3://npm-registry-packages"}},"0.4.18-feature-6779e8-k7uhr71e":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.18-feature-6779e8-k7uhr71e","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.18-feature-6779e8-k7uhr71e","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0ca78c01294202ca28677b65e4544544982af568","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.18-feature-6779e8-k7uhr71e.tgz","fileCount":304,"integrity":"sha512-zKwiRIku8R21u3sImv1K5QvUPARV5BF3NVu8cjIbuxgNCL9BJzmJnIHobfQnfFniqvKCsCvwsBvTthw3ZBnYMg==","signatures":[{"sig":"MEQCIAaEAtRSalD+9AzO5YRD0j/k6GOGOo/jzLI376S/+/hlAiBtruDbNgPVxNUVCNQb046xFFZOuY3Be9Lo+GF6mowEBw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1389815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeb3wwCRA9TVsSAnZWagAAMtgP/11A8OwwFI/aY3jcffBY\nBLVz8bXckgZcGH5JnIjgEPGcsq4FosSGQR6QvIrvldQjMG1ysL+LGyZ0PRrX\nntTAO42vO4fnB8tTWm0unjXz4Qm7x0/iK57Wj40PwKaEC0G/+rEAbF0SsA4c\nzXLj/ydilSnOwU1PKjPEROG11CkOahPjaTG17oBkMbqivqmy9cm7aw+U5zlr\n2t71sc8gt1ADa8Kiio0TFEPiLrWCyEDQoDdAJh0a15PLaQi+BZmzSDfFBncf\nt03seemWPNQW819x1S+f6+a7kr7DbgfqU8L1cres/Lf9o8St1Udu/zbc5PhR\nwsGbHON2fMH/7E6gVNh4BSyiYgD6S0BHkknrHWqIyxfLq9olrk8LQat0XmLp\nINIGyDh9EQetHxSyBr0pYdNfLMCPavKNCXRDXRBRV1sJsrM58L4JeAs+1spo\ng5hXGFOdiD+dNcnVQAToGIkRCN9j2QID+Rb5lTUSfyMyniUvCezurs436FN5\nBPkSoBMJlmw20gDY57IvqlewCdacKQK74AHDEm20gi+vXjBaqDRwadv3szGf\nFBIZKogNJuvHkoj/+6xt2eCWD7/mT0VupdZymSJawjv4oxT+6HMUL/c7l3/j\nzdEEC9k6Nh5v75OESYEUrOZWp28zrh5WrB07VpqncYcml7ZRw7goMCiJkL5d\neifq\r\n=MvPa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"feature~use_inversify_instead_of_addict-ioc","@atlas-engine/core_domain.contracts":"feature~use_inversify_instead_of_addict-ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0","@atlas-engine/timing.contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.18-feature-6779e8-k7uhr71e_1584364591878_0.5304217110281955","host":"s3://npm-registry-packages"}},"0.4.17-feature-c025f5-k7vlj1kt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-c025f5-k7vlj1kt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-c025f5-k7vlj1kt","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"de12fac93045d0fff7ba7b1106e7458aeb09d2b6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-c025f5-k7vlj1kt.tgz","fileCount":304,"integrity":"sha512-4zqcA/6Mif5Ck4Dt8oltQ5JeI2vwlnBCqP0mLGSgSMoWKvXR5gbq8CuaDSikeQhBgRK0WmxHdc12Gdzz5UHZ/Q==","signatures":[{"sig":"MEQCIFW6QGTm6XTr83XeJkIi+0hQfy8J/bTsZTtV3BIVGjS5AiBnb7IVbdUMo7Ns6fuUktmiuVXg2oBh03OM84zMJzLOLw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1291238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecIEhCRA9TVsSAnZWagAAn94P/1prwKcvvKVi74pF25pz\nc3e/VA45n99cBm+zmWy/RBMiYPT9TwN/tmQqZunDRviyElHKfP3a/gGZnyEi\nxnalReM/Wb3ZI22YUQbx7e+uBM9op8KgLrAWzvwUr8gP2aNDFioV9aA4+g3G\nSFveCM3acjs427ED638wKz0qKmdPUxkYaGCr6m3K7drngiHOZdtrWYYmRBC2\n2pfcdrN2IfbQap8CoBm8bf02WdCNPBuJjHi57CaxLIwwVEENRfoggwmP45j/\nNwKQ2wWTZN3N5MhWafUEC2mjZRkvdFwPuu9qlAcKejfGJFBCUfBF+y2TTDgp\nhen/6fPQXlfrM43R9eWQHaqItFud9kCVUMAltgTmBXtyadc4gNuS/BAjhyUI\nYBklNo4k/mdECXdBvjrBWlLjeubIxPO5baajHX4evMZyjJ/nmcf2B+4VQTP/\nPYgBOtSTN7yoC08r+AqVgqUhHcG4yAmKM3ZlH3ljrrkbUo+nByRHfYGmB1oz\nv5i0LBN4XtDR8rH6IRLJVc3089y95p0VMGI5fbfkPCyMGFyxcyvI6t6nNObv\nIe4WS9h3N2lTZEpAFhT4qPAbI75WrHAxoxHZusQyqf5ma3whrccipeKSt8W1\nTUF53xMnyq5gUXEYDmogbOhX1deVplsEqYx5Kg1fpTpaqo1sC2BLP7qZWZnK\n1pSq\r\n=A07Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-c025f5-k7vlj1kt_1584431393202_0.7474168364532285","host":"s3://npm-registry-packages"}},"0.4.17-feature-e98146-k7vpr4sl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-e98146-k7vpr4sl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-e98146-k7vpr4sl","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"caef0445457a610f198088a79a38d8a9d511f22e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-e98146-k7vpr4sl.tgz","fileCount":304,"integrity":"sha512-DPvR78On7VgMUyNRBBBV43J4ufyIsdzKCFhWLVZh9oc4Er4aKLHxmSMLYb9rLKW20EYtXZj6n4bmrXo/NUW/tw==","signatures":[{"sig":"MEYCIQCmXEAzO3O/0ecmAJZYT6C6/KbGW+QV4BEBNgnPoWKjRAIhAJ2hpne2Szrbkl9OOteCQIGspoIS2v47lrIuP8QcYaVi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1291575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecJzaCRA9TVsSAnZWagAA3P8QAJgqDO5vM9Wm8hcq5KUX\n98un0bvh2FOykz09MCHusyTZWSz7omtpZzVa+soJWsOCs9ZrGWcxwLF6lskN\nBvbGCv+3BwxYi+gPdOhgc4ln4AaKv29a5UvG20ypkc0DkPHyb6OupsnAsmY+\n8fg6QRzZTJ55DeP7t2juEaQa8iiHXUrGxCL/gDyNlh0Rqu5n5iK1Sb4oPLG8\n64dZkCkHGOa0lIvuCMKC5pfO7v2dnxYA9fC6Axdie4BwxZrPWDtTDbTjXDDe\npfWDW/Dxs9G07fnQHjyJM5QUYhrYaX7EmKpkIU8PQ85GoUfyRsCVbxUMurRL\nvD859PG3ZCgSzHbt3cCb0jzDWdeNdORXayFOxlfpcIwFbW7ocoDP1hseYmKB\nWfxNb0/G78tkNPlCAo/UAayRWWiTODE+QobLvOc1vII9MLmK/sfGMjAkS815\n5bWCDZoHzcv/zWwSWsYnjK7BUv8jLMNC0eRoosHjJt6FOpMELlU5SCaIBPFt\nd9eK7LQSCmMFl/Fvdhjv6/Q5DdS8v3xja3raxMyqLPudcGYapuPbX043LUSN\n/2pHYXNsz2Buc9Bm9ViWUtp9VP2lRb9AWxfSQwA2+Xi8mY0mZW37/Lj0gXFj\npjjgUr67+RlM3lfZeHPnUH2J0mPcCBDnjR4RuppO4jr2DU+zVjWjgpvsiBC3\noArt\r\n=Gvla\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-e98146-k7vpr4sl_1584438489540_0.9712066532553634","host":"s3://npm-registry-packages"}},"0.4.17-feature-2d7bdb-k7vq5jkb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-2d7bdb-k7vq5jkb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-2d7bdb-k7vq5jkb","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3808b4eddfdfd6edf4d34a5c2c90b02f7e7e8841","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-2d7bdb-k7vq5jkb.tgz","fileCount":304,"integrity":"sha512-Gbo8dVzRUAn/RJsV5yMQvXJD7L9xE/adgdzK/krbor/e/K5DtGtV14nRup5ou2iFDhEkcg/HGBUMZY0P1fPRAg==","signatures":[{"sig":"MEYCIQDDT8f9MACDivqGi02dhP7gdKGHNZUEwEcY94BOojdOXQIhAJUGZFB2Ym9OJD+8/n4C4SfNejqBq9ctKlXMv1IAlaGE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1292232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecJ95CRA9TVsSAnZWagAAuSIP/1cM3hU5Puqf7MOCiLGn\nFbaZjjnbgpvE1+8D0uHTCk1Uf+NsJqvib1vf0bLChOeb5hFkqCBjdI7rghtP\n7CEmregSBF/+65ubCG9RWul3WI4s5BsDkma8TUNVWSVSfidiZh/8VaZQiu9N\nb16DY/ikYs+YAeLzuaCCQG7+RvrMRIvJYiL1MXf66YpNLaf7S+s37H535l3r\nFDn8I6KyKDWbL97ujYJQ6gCetGEQ820ZSXZwtM/+X2fOlT8693Ad9NS/rQz+\nNBGTdWJ0+gpkzBRDI7CJDHS7p9dcjbg1WUdf1hvPpxml0yG4Wct0CoyF1t3V\nHuY1bnZX+1JaOVx1YZ3HK/lIaiXGit4k20sCfb8BqxKJbysE44Aezx23c43A\nhyZPkI/sp3egfBuXjqCKh+YYIq9qM61A1sUCM+y9BEKl54Rwpek2cHXhUlix\nLFTZvkhZYoYRFbRMz6Z6S6/xCU6VRj5lfVc3BOqW/GW1bWybnUJV9BvtyoFd\nbqrGj10/zreEQpZdhzDRzW9x/Wc1338H+QE+OdmIItxZrS9G5cjJXEMuJJC9\noFodXMhGRAq83h2RBD0l7avISx1bETdIabz0s+WThz6w8oMxOiH+mXWY6OqZ\nnIHgHSHuqLigJTYeUv6+Ex52Hpl9CC3p5nfsrN55/UIU93X0qhUvTN4bix3d\ntp2m\r\n=VY7V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-2d7bdb-k7vq5jkb_1584439160975_0.7027486242799796","host":"s3://npm-registry-packages"}},"0.4.17-feature-bfb7f7-k7vqe1bv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-bfb7f7-k7vqe1bv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-bfb7f7-k7vqe1bv","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7fcd0b0503d9ab5d12f80f55b8ff8e651a7d4607","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-bfb7f7-k7vqe1bv.tgz","fileCount":304,"integrity":"sha512-R7QPlFaslvf1uywldE3wXf27zgx9/LAJUgP0ZHNEPtyXns3R2J+i0ZYNTqgzZy7kQRTwYb0fXWw4STFJlLQ4GQ==","signatures":[{"sig":"MEUCIF3p2uFq5eB6nyYo+ofVmpbtUxJ5uvU5V9pfNRf00okGAiEA4ibM3S13ep72TH3owgegjhrhzBvdgK+u00976KNpmy4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1292017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecKEACRA9TVsSAnZWagAAeTQP/3uvp0ukevm1q8/mXl4M\npqI8JhUqpOU58AejDTIgis/2Zu2mJqYgWNdvkbqZltM+CmCJ06HB1FrZ0d/6\nKDXeL84kfDoga9HiIUNpjshWrNihEgZVG7FCej+FT3TgWcZvZVi4dRksmC1u\n5IjztFaw4jcie+3uiR9rkYfZXmjfUE4fd5XcDm/5mezz4HLMgf4o1DKzc79k\ncNSGXCXDVgXwDZBtkSNd5/GDQtZ+s9UL0KHjB+b/acp501pYeVyghqb81V5p\nUSy/4yDhZens8vKZcBsHDZo/Ost8JOIo85SfqZxs9BOZWtzvFe3dibRoylQj\nNKAGs0jfO4Jihb2Fc25b1wE5D6LS0hYNWG+pyf8Y82wwxrWk5IsnNwIeGGop\nW/dHiY8rz5mMITUrV7rE5cFAwGgKpLA6A3sCnbN24ncIHYmbFAlSUbz3rAQw\n5VHG/ZsxWgvF+RaiQy7y9DU7Zbu4vAeLiEGGMf49BjF39fqZhDXB5dYLvbC0\n6jUMDs94P9n0eVPmunAB344Cc11ljqKupl/MA9xycYlbI0p8bckYFv0K6cM4\nUxki3gUc4g5hchX6exzEtCdb9pR/enjtXduWespvCVpWFfUY466WYQukMx7f\ntmBKowkxcfNFe5ttc3TU+1c3ULM9VR93jmPEhIznTCqDnTRmQ1PeCbwfiFqb\n+4bJ\r\n=MAr9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-bfb7f7-k7vqe1bv_1584439552307_0.3994878820812908","host":"s3://npm-registry-packages"}},"0.4.17-feature-c981ac-k7vqvn4u":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-c981ac-k7vqvn4u","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-c981ac-k7vqvn4u","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"54c2b7657f098cf1b2cb67034b712eb471ef204f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-c981ac-k7vqvn4u.tgz","fileCount":304,"integrity":"sha512-D2nfQJuPEu0T2p/L1+0zWYyqMQvurI6Z+M8oz+inwRiIGsoOBZlvMrlL/blH8QYXDnkrxHxDqN8dhQT40dXiJg==","signatures":[{"sig":"MEQCIHbOyyX4lLMelq1zyAqtBkbOdH4jxTyAriHec1Y5QuBfAiBehuxuGiU+04/7V+ybRvxK167BObYGmGLs/JL/N5nT8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1292307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecKQ4CRA9TVsSAnZWagAAhawP/30Ap4AxYftjgJA/VYgs\nrNlC7qhQxtTP9BP3ZOM87FgQVIM3cqWTA0RWpwKtbqeuqoPXqd+UO4zz4tv7\nMj5in1l5dueczw0r04xWZwV2sJzGOJyqsdyYw6pJfYr3zHg1YLpIh//wgKjq\nZNL1zzAJnDgwlUCRpq79O0l7Kk4UkYIh0EIRCndNcZpF8Ftfbf6eAM9I+KDI\ngOKrRoeA7f+C0Z2H60aGqxYzuSBMtR7YS/4vG6u45wzuN7JAJWPJUUdLMrnk\nYT9MgkF4/irCAgojc0PkY5lWfHWpR2D1V73wfmTVAaQrWawszwUDQmQYrvWp\nO3vBeSGFOTgx4mte48fPUBgLGvLGx3Jx6TDv+c4Um723VA4pjytro7aTjnyD\n0B6ZjIQnYQM2MCST8hFWVQTohEVonHW9voQoWjynXLKUKSY0y+ELhXhUnrTV\n8xTn1yyPj7CgEkyc/LWgEj2B05FGPXU34gv8XeJ2ZIC6okJGApkFeeHpfHgs\nwYVYdCPKEJ9L7x78hf8nMUaIhksVit5dLcrRSMg5WfJMp5qxDwnZ144wStcJ\nmpJmI+/jJLwdGhltusl/upo+xaElGNc6b8/JvWTIzQiU1I/xvK8RbkNY0hbp\nYy+6PY4u+DMTeVzowD2JERSBl9QsqcqhGM/GOW+J+CzCFqAvzId52GVh24mo\noKA6\r\n=i7gD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-c981ac-k7vqvn4u_1584440375578_0.8644995673082458","host":"s3://npm-registry-packages"}},"0.4.17-feature-44dd85-k7vs8t0a":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-44dd85-k7vs8t0a","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-44dd85-k7vs8t0a","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f0bdb1f82e4650f0c585180ef21b8d601c095152","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-44dd85-k7vs8t0a.tgz","fileCount":304,"integrity":"sha512-d2LEhbs5VFV494x4ATxGqdRBywDVLQGmcXfuM8jMlaFGf0qknln9b29ZFuPqxV678/vxzzHwvEzf5bJV9L+efg==","signatures":[{"sig":"MEUCIFIFCEA4XobkrbyfAhnjiXghLNYPVHIHFo5RYOBSZY7oAiEAs/EfjRWs2Ye6w5grlBdNh4HxpifkRTQv8yX03PNRzF0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1292307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecK0wCRA9TVsSAnZWagAAg1oP+gItYvKIIwiyvKMa35mz\nTBEMhzXSGTFpQKm7x9CYE+yqKRDnWOKCTPAuivlbMddOCMXhXGd37bJyuvaY\niisnvyiBvhgtjbdGiiaivcPpAtz/S1x4APHxJj92aAXD2zecY7P8epxcLSSx\nXB/gpT2jIphbpnj3Ck8G9lW6J56bYVaLcevNNxostEePf+0KYAKXG1kMKlzA\na8J2kTMzFimwFtVkZ1aE6i/meMEBAA4tsiADxwu9LmZuXKU2tSQDVU63oIeR\nK82mO3bf9nyd8byVCg8c4mQa1Pbb4v/AvjCHsTLY8uuwNemCrkxN4+CqAoD9\nRNB1R6UoWhWYjB/oP0q/3rg9G1p3Y4SBojpeZoOthuadcXLAZ7vK3cqoPw5u\nxav1J4RZM1Qf12jXzI2Kb7mu2RphbTSmJILfw61AKH6PJIXr1viD29SIpxg2\n+R8Dq7xSKcbf1+p4uLsubAlBGGYQq91DmeT0uxOOkNxRhJ5GxE9lROPp+IXT\nv6kDgOW34mlUkPAph94jUJlyQPq/ciUmtcoE7e5hGJGn5sC92nbyNpWq+xq+\nn3nwAQqcweC9UuOw63RPoXLP9zxdxvpLl3Zkg2O8D5fqy+rlxwBDnFXF4P6Y\nv2v76D+5MdppjmarATfgD8W5f9eGQA5vN32qa3GaowR8B2Skx07i9jilzMrP\nTHT8\r\n=oKLs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-44dd85-k7vs8t0a_1584442671789_0.2367016600794949","host":"s3://npm-registry-packages"}},"0.4.17-feature-d2b16a-k7vs9bfh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-d2b16a-k7vs9bfh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-d2b16a-k7vs9bfh","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a091c189b07eb7cc2309962d28f65c4766d8c676","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-d2b16a-k7vs9bfh.tgz","fileCount":304,"integrity":"sha512-0k7pu7Swo47owgDZ1Thk+z+nvARmbCN2EMHMNhFow55kf57gq5V6IU/pACtbPrPd/OKBtZ6aR7tuGXUddCrI9g==","signatures":[{"sig":"MEYCIQDgEiPCwosp898G7qkGoq9x6qspLIjXCgz2c0GjCeZl0gIhAPAfnPJ/Npz6tiWiuyEQ2lOQhIuG+LfQ5o9pU+A7b+Qk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1292211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecK1DCRA9TVsSAnZWagAAQNQP/RwrpiupRFxIyjao84Fl\nzCR1WlthTF2D7cV6ltJ6H2bLL7qX2jQ26T2UEvGUu4kOqSqptb/TFDIg1gYW\n6GGsvzgjQED7OiIWJB2QesdmCSatQfd+jZXBg9UZsNkmobSNvWTdGxWZIL+5\ndhR5fALJ1vNB6gOxCLOhnKqnFHn8dcznYK5J658tWhXls5uVYsUQvwe4XmUj\nxBjjcsq4VVaeDklbMyCX5oAGQZoMNb9Ni0tX3boJt6YTJcKuR7XtFq2izLzf\nuT/ObpuqNh+dRKbnHfWPA4UYThJiCix9oiiVianLAnmQiZ+ktrIElvsdPOuT\nM7QC2uT+3gWWcDdL8Vtj+UWDSCzIZHJwa/43JXG/2Dapp1ZAplXRFmoBNpRj\nwKuBANRmsB2uqrAkPdQr6o3b72I7ViSOmvXdyZxOonK660agZ8nWCsC6jjmc\nb7zT3IQLWf04zQzpokFArCPtWL3vEPpFhH7XA2eaAm5S85HzyZCj64Jiv2Rx\ncbhNamZF++u7Dp2RjNB5KCuEQQMlzNfeLDw3x46agdoCeZ3G1tP01bfWI4/9\ngEu6kQasgZ64QqP3lo8FZsTuNSBcb3ktUoyAEuOKQgKyY3iY6HHWZ5mJnhg5\nbjRw8No6XnR/i6mQOLrF9xYlfNx9kLUSBsKwB342G69c1qIX0Xhb0wUXRjgW\nHFgl\r\n=WJLY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-d2b16a-k7vs9bfh_1584442691385_0.532232229107559","host":"s3://npm-registry-packages"}},"0.4.17-feature-a23853-k7vs9lgg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-a23853-k7vs9lgg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-a23853-k7vs9lgg","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"00aefeb50c1932b5642c4f6f5dad4241c6d3966c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-a23853-k7vs9lgg.tgz","fileCount":304,"integrity":"sha512-tRTkJnRwe5La+Uq2gR7PoBg+H+Yv6duRi7CO3+JVQWoEoq7/Jcc+1r7vj/u7rhAAbZ0BAFKvH1TEWHq2R4YiFQ==","signatures":[{"sig":"MEUCIQDyryMPBf27IZiE47vt3lQS5rFP6LOGAbyeYm9JwX3LMAIgV+AxvT8Yt0Dr31wgI2ipbptJsLDXI8AUYNTK2i19sys=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1292177,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecK1TCRA9TVsSAnZWagAAzpMQAIchaQkdVdbiKZrNqbYm\n/bNFqFfkrAkWju7QzKkw+O49fFKMWypFuO1IMmyvyImiDqXkDmZ066aW96NQ\nt+Pmo2AeALd7NPnNZsZVpLgX+Q5vYJTratlJSVp+nEmIGCwHdt1tPvadyWqx\nE/dVFPA2m0mbD8z4aaYtqzx4W9EiCZ0mzhJ3DSYh+6lFMMkoqCtF5zOP9wcV\n6y/rnFxFoNgILYr/R4fcjxMR8f0SDC8fgtpFzCHxNfj+UxVGstyPu1ii4xTD\nPrs1jv3G3jQPWsu8yMQESA0nvvCYCeEEY8xmVlTCVxgkhoORDa7KokYh4hAe\nisvBD+sOgf0NuDmx2hUqQo8WiJA8RnztyfaSqL6yO6TQeYqsB6ZlqMShMzIa\nODaMWl7WU5DOpZ+IZfZstMpOokjs62CuyU0S2+Z//WhXWWNBc3D0DJO3DVfF\np0NCHY1LbKIrIa3JarWs5ETjeCdq/A/JF3ko7p09leS+DPZVSi+iVBr8sWpM\n+RCa62PiAoNd5/w3U4+gTN+gvDaeLRkR5uNZk+FGqgpOKsGsURgKeyPn7Z8+\nwZXZPlfSzwWMwklmTZMbjVz2stxItgCcuebU+IQnipK6JyoEFGtKrEyreqUN\nWfSYjFJddUF5CQPQrSIiWk8NX1XK3smoy7psW/n9iHMm/LQ/7Z1zVRB1AwGH\n+bLt\r\n=3VGJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-a23853-k7vs9lgg_1584442706664_0.8240883084437489","host":"s3://npm-registry-packages"}},"0.4.17-feature-ee0970-k7vs9t0b":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-ee0970-k7vs9t0b","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-ee0970-k7vs9t0b","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6bf3440ccb9efadb7f363f17bb16085d788e2e19","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-ee0970-k7vs9t0b.tgz","fileCount":304,"integrity":"sha512-6nrmyLT+ZJVUiZ4dWITxMu3GHlb1HxuUyW6uBQkmoCVe62MyfYwcoE6CEuDkaJTM35qtJzgeXsrmWjYUR4axRQ==","signatures":[{"sig":"MEYCIQCyFtQS3pzQ+NnH5i90KFEUbhE3io64GQS1cklY7Oc0+gIhAOJxKV910u/41kM6+JRZscZV+Z/TauqyMRpaOi7uzJ8S","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1292161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecK1gCRA9TVsSAnZWagAAm0sP/Ayh5974EVFnWyjUZPkK\nG33PoAw7EaMxppRgFII/ZNEKMYnGn2CJ3vXL3odQyUZuUiuqZ1cIYrrpD71L\ncHoCidDmeXrItMl414UY6PVIU+Wx/v8fjJooActctnH5MxD4U2cvh0oXqx2k\ntU2I1KqaRQkWyyTM7aROCBOUVYfUxz6MCGDmf1Mf/KwiZO+Qmyx0iD8Zd/Nn\n1RlsUM8Ybmyqf8tpwuK6MV4ql+4PK6AgldIKm0LkDVU8b4iBqBmprF0fSG2K\nwWkd54W3oCIgYKFBW78bK2j+0pRQuGt2C1LovgqO1IF2Ys5V2DRVHXZALz+6\nsyDFjYX7vpWTUA3KJuZmmlj1pQe4GlAiq44syF31OVvHTISUEXKvVrK9/XgD\ng+V4R+SM0gVaN7kzIcLbhTQC4iZMAvYKmAnc+GxbspzvKiRZlKUnrXeQ4pOT\ny2Wo807YdO+prtgL0K4W34HAV1tH+7OPBr5UeDICxGNpolcfsdnd8ZGfTE6o\nrAbVGIiJU0LV3vBH+8XYCjpoymotHgkZwlFDCJcKHt+BagYDoyd0Qcof7ZyK\npP9vmhuREoUVk/MpOUjjZjmLL4Fsm0/D6Wqzwqkea45rjeiqBSQHCOyGBSbH\nlmVGZZ5KCsfVJps2hrP0W7TjaZOiFkLoxzeqLeUmwNp8DYsGzLvHWQYafh1a\noXW5\r\n=qi7v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-ee0970-k7vs9t0b_1584442719750_0.022734434128327097","host":"s3://npm-registry-packages"}},"0.4.17-feature-08ac24-k7vscnpg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-08ac24-k7vscnpg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-08ac24-k7vscnpg","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"db1f037a97b928f49f70f2156cb478ceaea2f46b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-08ac24-k7vscnpg.tgz","fileCount":304,"integrity":"sha512-iI+n4kELyMZ/8Hsn3jFPP2uZJJO+NCv1DclVMjS5/DCJPsubFVKGmnK3mGUeSu+qyJHpVdLB7CS4FZECUWvSGA==","signatures":[{"sig":"MEUCIQDWbXYzO42uXh8RCnvM0DTPqw2mMVvIsX4gt+6pRo8UEQIgTVLRacnxXIT3RL9yJE4byFaAlpq+gc5Gwxs3/he8L6k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1291446,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecK3mCRA9TVsSAnZWagAAKewP/2IGjW+rJlQS9IT/ctji\nFPipHAbLiP21J4q5A0wDHM82BRAE8hPaWi0mZqGlcAunidSlo6I1qp3WK9D5\nyVjXVN77BvaFFxAVQwxZwl1jYy32IIuUBr5a653zPU6paFAli/yYB2NVmjyZ\nVHNul+Uh1mNvdHclj4se3eJCnsy5Jw4Ri6fKSrFwNfo2/yKnObLTel7OqVKt\nlR3e7Wu5U4itnsyX7bvddgaXovcmzovAXYDeLQUw56rAVQ9XfGe/ySN/yVPB\nDs0cVY1jaGv8NUojXpZNvqdkUgK09d9JAQ+Gfl7vLi3g7kUH+bKEHO/Qni97\n13Ea5Z2yz6Z1wZ+O7R8xGiAslQbHBjaKZypw+XWqtkBrqExKMCYZ7ypaOEx3\nrEz65KtN2Nbd7liMERUkpB03GtTSKEij89dIIIOdgBmFL6ukCz4btwmGjuR/\nP+EKIzQmzuPCwYrYz8Tz79rEPR6lPhZ+kHj0f9j9KvDFAAe7/SkIAjLXiSPV\njvYhcSUbMwy39xC7sm8IWF38ZfcPK5znyBcZq2oxZaeMfc+udz+2w6ekqKyQ\nfDseqUY+MWbVC8VFbcNhCnIpSoPYJ0Zi8EtRzmRLhiXTUnWpvArJ8w/O3Sup\nyEch5r8Jk4pUg7Ywql44tx8gvbqYDyJPjrsZWG/u8ZbZXqIskKbDDugsE7LD\nZsj+\r\n=fQLr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-08ac24-k7vscnpg_1584442853730_0.9494462515009763","host":"s3://npm-registry-packages"}},"0.4.17-feature-f4b0a8-k7vu3pp3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-f4b0a8-k7vu3pp3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-f4b0a8-k7vu3pp3","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d487820aed2cea00ce7842f4d2d6a88ce548d06a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-f4b0a8-k7vu3pp3.tgz","fileCount":304,"integrity":"sha512-qLPdI0RlVVEZVFb7hhGsnUYPDUP5IonVKD2EmEHbayAmYMsfn8irgALkakcuR0F/FxXFo4uY5EBroccGSF61NQ==","signatures":[{"sig":"MEUCIDWZa1vgHS0L3+ojg3N4nbLqYoCQ83vWtCBVQKEoIeLtAiEA4IdVGPYRUKVfaGUP+l1qyalW59U/54+bO76R5VtZHI8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1295925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecLliCRA9TVsSAnZWagAAhtgQAJHzSMkOfn5fVWTg24lK\npT+aRwQt0PYXddSTkRRk2Gl3QOU1doUnoJRYcxlriGkESS5HHEZ4J54HdRny\nZz4fNxKVKSjje5eOFOT83++PeBadFrXEsOhnmRXT1FcNlUK8y0KKtRFcJw95\ns+U0tUR2a8D6sUVF/yN9wrGRJpmNE70N5LLMfwQAtmQJPmSZcQOzqKZu0agS\n2mePE4+LRFFFsAichOdzBgs5nK/POYxhP07bXAcAHlIaccgc5cQNEpXqom4C\nP2D5au50/9JIGG9J67CPG498JH0LwTZqxFUwQJMY+VF867+s4JCbzKApL4pP\nCCJeiwmdYkvV+X5Vycjax9dXKX9YLU2lHK4O26klF4igDao19xqWUXJYovHh\n0Cjo4A0HDTLA562z/vldNLXd8rd3rN2G5l0Cj/IPNLr6xl7bV4mXUIaMJqNo\nxmLlUUBUmcG6QNlj5gqRTdfWEzRiiQULzeDg9BPFiVBgQWbIkPqbFPUx0NBw\nYNXDmIw58/pLlrcbcx4QDsCq/Azblf/8cCvkYjSbGOgxjgaUsdNYueuP10H+\nuHEjksnOZKsz+bjswFef83pyB8/D8qG+a1atXaAzck4Wv8KG9sHZ2RlUw4y+\nVs3S1BbVI89N3gR75/0TDlQ3MYg4CGeaEwsC2sG9x5LIZRyX1OWtsjJ3knHe\nIalC\r\n=vlq2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-f4b0a8-k7vu3pp3_1584445794276_0.152298957332359","host":"s3://npm-registry-packages"}},"0.4.17-feature-944dd9-k7vv3tf0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-944dd9-k7vv3tf0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-944dd9-k7vv3tf0","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a791af0a5072a10214541b8c3644a84f3e0c8c8d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-944dd9-k7vv3tf0.tgz","fileCount":304,"integrity":"sha512-r0r3gkP3TP5OBWdybmeVEG3+eDGkHRzn1HY61jZurD7MeCg1KujLJH/a5PTnRHCJcBJ9s3MJEZcbPlyEKP3Frg==","signatures":[{"sig":"MEUCIQDNAyQg/eozmLTMk6ctfJ/lBm5ggtqyq4bl/+IA6Oy3sQIgEVSG/DGcIUy7tEwooxuGc7zPDb5gDt+NSu1jjrUh59s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1296997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecL/1CRA9TVsSAnZWagAABv0P/2QI740AWt26HY4Lob/d\nQ1kqSgnpjPNGNRIKe7mFycIh3HeX4sFazhABWz5bX5UDxGc2aqR5GsjYhxLQ\n8dAphcM7KTBSVki10Vf9Ugp5RutIgcqL/hly7BV1VwmD3sJ6aXZi8BYmkIXn\nQJ5I76CHA12GzZxbYWlRI/K3rzq+jzvLeCgSDifIAO9g/wTbaDWO6FTydBYB\nRtaYf8YSIAhMU9Q9CcDG3C7WDpGTiPo8/MqNfAgq47silgkYJw0pQ9I70NkT\nMyR/T6dxe3NI05wzDLeV2DTlYII0dfvrWrGyOFt7jVHtjhL54bge68WvArsI\nCENnYUcJZdO7PRtdIqscEls7Xd3dhZl9Ytvpf0eFh59IAbj/oCjh0u52UfzL\nsH1ThyVyEk47c5+1e0PrBejbV09H8z3At7LpwWAYX9Ye7GdyFl20Kw0RyXxW\n3xXTll3aEZ6e18MsB6Y74jJr4oxCC01zdapwCMQt1BxGdBjRVqboN6XY/rY0\ndDvUB1AiZbtks1Bc03N9T9YTuZS6ExRcgqUpi7do4d8HuGKz6XJimoZrWmlE\ngJZ8K4PcIUrKj8UDL2/ucFqnFUFKOw/LrTbgrD1nazAsfIW7J6a+gtJWntJZ\nlcYmzdcC8qB1V73+HqFEhuFvZtNJQN1hwYG+PQGuFThXfRNK7etqY50jzqfz\nC+Tt\r\n=aS9m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-944dd9-k7vv3tf0_1584447477135_0.8627299058019893","host":"s3://npm-registry-packages"}},"0.4.17-feature-f324cc-k7vwoh8i":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-f324cc-k7vwoh8i","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-f324cc-k7vwoh8i","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a36178a2383a0738450490351f319bcbcec8b444","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-f324cc-k7vwoh8i.tgz","fileCount":304,"integrity":"sha512-aSJxKTRPrz34Wv1GZALV3zjuWkdEEQ8Q1gYDsgGL1hvElCexOvOUVlpjLazJefky9YQH7pIm3950JhZx0zodVg==","signatures":[{"sig":"MEYCIQCS+uoA4uUomTzuoZnxEwMgUFdcZik4g0omw95GsQWimwIhAPk/gHG0LVQFd6gF0784zGN2Q1Ni4ljMuhwAuc3IueIr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1296826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecMpHCRA9TVsSAnZWagAAbu0P/iDtKN9QzMjxeJlyYvtx\nUw3oIL/HjwXvkBiYzSD4SjOUy/Lxn+9f/rV7i06b1Degioiz1kYDFCqn1kqt\n/S1GANsTa5GvWqKKr9g81UW7l3rejdUWJP41Hqr0kg1kexotRnySrmi9IUXM\nBamc4fz/CviRzlajz549rdEEff/HMrpC3pIVPc6r0gex3BvsZYy1St4IWnuS\nNSqkn4SgYaLgK5PRyZAxyeCu4/DdLdcqdp+otgTux6nf5glQPhUdpE6CbyF7\nAI8V3TeeecS9JVlIG+M3ndNVnVp5UQ8jyuoeJijPaidmOu7mRJOQAOSsQwFP\n73QRlEYNKB7ogFSdxT2ywTawLN/mXuTx8OW3bNIHubgCiz4FRyEsfS21F2u2\njo2JtpTYNS73IqsNeioFHau9v1VD+39Wg5hrM4gw5j422xmQ2by8C1BbeOmi\nnuV2hoFYMPIVpf3kZ296F9BHQ3nWHBelZvaMuqisuQBeGs4U2+KJxmCic86f\nx3LlP/cPUjqkVcAnuySqccXSpF9Tzbiw1BDsLSTWi48dz57AoLaV0ml3ecPW\nI4SRjJl/Mmg9EWq3c9xy1ufMtl5/5s18T608iPSVqAaY5YjxQ4H4T72AZdVX\n6IEC+qWPgJiaDgowGtRF/ECqDPxiIDZbkoSoodjwxq3UH4Fzh0Y08t0iYnt8\nlaEB\r\n=qiBA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-f324cc-k7vwoh8i_1584450118796_0.27386702749864855","host":"s3://npm-registry-packages"}},"0.4.17-feature-cfdd65-k7x1g0dl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-cfdd65-k7x1g0dl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-cfdd65-k7x1g0dl","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9e5e5de27ffec89c5fa2da8a568ae9b1da96b812","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-cfdd65-k7x1g0dl.tgz","fileCount":304,"integrity":"sha512-pYBcwQUpVgKazDW5iWZIj1jl0aDMqSGFBS3lbWwvausvNpnokJmwH8QlE9hKsf5feU1xPoROATX3KAmkKmBerQ==","signatures":[{"sig":"MEQCIEgxLJ9eVgr6AEgydleMrRFc0pRNDZuwpVUYLogm8NFLAiBKve6yOl0q2ChPGCSmF23NFxT5/9KTGvjuDABdEpR3Vg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1301699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecdXCCRA9TVsSAnZWagAASH4P+wZZhZGaB9l/VgXFXz2d\nW1MVqS0nTYhXhcL39R4qQ7ul8Cah+8uc6itlpC0KOZWxTyVIZLgL+RxRjwfj\ni+gET9ZDP8+XAdKJzyGKkofP1X/1Et1J2kL2M/SCiZ+cINit6VtxEwFrgEPG\nUfyuKDnhJTEylaNC9s/bEqi2sf1/ZEWsEim+cXnWeQJv65ZeCv8nNB9tnQfD\nlWVbDFcA3RrLhv9UWTxbN7JCgPw77sHOPEPEKA4a6CGqiiV+gjaXQlkmjYsY\n0613wCH13IA5KgDvfB36AxiwL3zDKz8/FB1lGC9cgyDA/TQjw2fvx1x1BJPb\nXaCtq0y14Qv2Qz5tuQUacq74uyC3x59tXsfujVg0kAM0TtoGIFqgO6/cCwmk\nD0IgT9evCJ9/6hoAp7a/SKB2VLgWQucxHlbfW7CSTgEuucNksawuk4Uw7nIt\nKbtkOXYEmv6BMRgEc+W503puBrAMoNbztXY4JPUbQGSIMOJaZ640DyU4RDXd\nihxfRm8a839Skb3b35lcTiFAIxmko8mVomCvu9X+lsohtEawXdRxOka5rwUQ\nJmYy6r3Ff/mnIhP7WdRfkEjpso2VMsdsj2mwzgjhAsT2YMdcR3MC1wt6ZUEm\n0px+8aqiNcLYOr1pkOBB/I8vpQcnuDEaZDN8/qzU/Fm2PZWyQZtU5kKq0WtX\n+kNX\r\n=LCuc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-cfdd65-k7x1g0dl_1584518593909_0.26730289422652787","host":"s3://npm-registry-packages"}},"0.4.18-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.18-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.18-alpha.1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"11aa187907782d4f320afe87ba9ea4f0796ec8c1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.18-alpha.1.tgz","fileCount":304,"integrity":"sha512-oomUGvtReQXNlr7e+UQ3N1OtKhTlmVlsTV+pq6+XMV1FNF9nphOnU0WSF4uGp5n573gSTQ42jXZbwZR8USJHUQ==","signatures":[{"sig":"MEUCIQD6Nl0eW/QHryi/b/HGgQT+XnZlVydo4+tpkXTXf36qCQIgOjXYAuyYaiGFLtt1hM9BxkfEUDxLZNqCPC6NwBRiUos=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1288904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeceJ3CRA9TVsSAnZWagAA2MwP/1UyBqWYwbc2KUVWX1XE\nmHgE4pVlu4ElNXGiJrtCdBk366Jr7I454LoYSYM+hsIwUWGeXiGl94GOtYKE\nDVuu78QfvBIpjX2CaSbxrSr4ylhH/BFV0bwlUnK4jlDMxpcRk1Sfdk8T16NZ\nYX77MWlep1pSM491mclSUZaxgr+ThLiuUW9AkXPTSLH5zIxkHQcPTg0NVoBf\nwTr6KYwlRvofTgPJ78uFZh7bK3hfdLOPbA6c4/6bker+wCfopwDfDk2t3YYh\nHiFylL+vsh+ZtWoyQj4mQpb0H2ANKcdhiqzBeO8+hNiOLWhFi2BEkTvle0Vp\nSFNObz5h/mL5ghhFVgzKhHpzMQ73C0MCZFoIcbnOiJE3aN6XMiGe4SCQy22R\nYICNDRcxuIJl6+hwH+8hhKTocXEU09Zg2QYhrehlZMmNV0DvXaodPH1PAMnA\n0NT7vBlZWNO47TQ2v/CAamFZ7Wc02F1ewGgxpJ192b358cxH513ZJyM4XbN6\n9v3uDlsgpvKyPPskqIWRNOm1MlVxrEX+AT+AYU/SuYi5I67JT93G4AQ40UR4\nz2FxMq58t9KOpsDoy9j4oqNRWj9RGu3fQCRO+oaF8jP7veyhKYrYTHqTrdD9\nl2VtQBkVTbjdNzcaA1hU0biEtFzsM5474ebVjmOE3qoL9+JaZ/BWWge07hD7\nrneR\r\n=P723\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^3.0.0","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.18-alpha.1_1584521847225_0.18763071263770903","host":"s3://npm-registry-packages"}},"0.4.17-feature-fe6436-k7x5v580":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-fe6436-k7x5v580","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-fe6436-k7x5v580","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ac29373bfb488dcc149a81e3a10964af7dd085da","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-fe6436-k7x5v580.tgz","fileCount":304,"integrity":"sha512-Uv0MFXE8Ffr2J8lagg4BaDGCg8dlk42Mzk8FwmNtSpPR6Yaapl4pFEYXuZuSTSuJQ9pYHfttL9geHUiziF1ZfA==","signatures":[{"sig":"MEUCIGBDXk8JCWu/zZyy7wvj7dR7xCX118A55Pop02L18W5dAiEAvSj9LNkZ/b784tQyO+hMLfEjWVZvZAQM5zW9vdDi9o0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1303139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecfLCCRA9TVsSAnZWagAAEQMP/3yizpl/cBOv0N70JWyE\nobEPxiwoAHUOM3SR0QP2sD+DgsmXkG9EMzxLL5NFkDBc8bqYvJ8mip+FvnJJ\nfjTgewIX26w3p5dS79aHALLPSad5Ily3afh7vb7ve6w+dhJRAARgawRChqMT\n1xi7xNQlhcfDd9lF4jhRwvFI4z8kP0ZLJiGQLyeDtcBnjN3I7DXR9jRTOGN3\n4PPHWJsTmIiN2BXE6WyHTNYmfuM5Rwzo5HO3DH6Be2gz4YWNPi7NNrhcYTQb\nNe2RCLpYYUZBy+net6JC9aNElTDOULufBCwUnxh37bO4b3zS1mc1C/lf9+GA\nZ3UuK54aEt6UNYaYjehVeyMbtoW5yGeMdg7phO/S2m9d3Ked4x0PjYojCRKv\nLHtBVYgd2XXhlX1nCkUg6lL3gDLnu3GYQQKTDiemnGjlj0AMu+9Bt8GTPrjJ\n8LVsP5JfIfjGVfWxi+2EkYzfeqD2eCynQ4aRmejQe2TOFHQb/HfDGGpiVCQG\n85CLiQkZf+2E75QYFtgUeidEmsz8BFKXerrCBrkTvIVyoiDZN+w1qS51ETZD\nXlfJr4kaRcaQucFhwBX4dDlvzgBnmtFrITMQJDMUUmFmSROYW+yV7yK000wA\ntf7Y0hPOxHGXsAHF37bOM5BTPjJhwI/Ww0zMwScHEb5gEoaltEVn4ge53cMj\nMroY\r\n=mEOF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-fe6436-k7x5v580_1584526017981_0.7128292169533412","host":"s3://npm-registry-packages"}},"0.4.19":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.19","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.19","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b957e33fa38a22c4e0ae94dfd40a91e355d42146","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.19.tgz","fileCount":304,"integrity":"sha512-421OEgDZTB50j2WY69iFE3AC7wOCOAjSo9jBaWG/s8XncxYAGP5wcRHtqixHoEAO9go+O1xFKzBOeSLAKTBj1Q==","signatures":[{"sig":"MEUCIQCghYZL71QfTTz5oQrtNndVb84r2yT/IoITo558AhKzzgIgfACU8KHE8AhW5boWaZX9em6H8T0GfyjtxyEcwzm/Tdg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1288687,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecj75CRA9TVsSAnZWagAAHAAP/i5E9w83cnvAhqF46PiR\nLHIWu19Xvqy+ZnQPRQxssmIOjfaQaWN8oCKsaGDdgJ8jH54vw1NJzWepiym1\n2VTOEwHvokKW7tjmv4OLBEVQ1dIdp35V99K93Bz1sXNty+sm3FIoinvdQdUO\nr7CEoqO0dasyi299ngdw58pC1ARKcVOgQ8UwTdOAJniiHxRB+amFzZH7Eftp\nIgk8y0gs5lYyy4ot/ra0FlmO9/rZGl9daPreRzeblPBygR5qMNZnnDPOpnEy\nC7m9jdUzU2my7Isct899CEQb0n+h4AbDWm3U9voB3DkoIEE2Hw/MaLFk1/IJ\neCqA+tUe09Lo6nMvZ6JgzxMNXWbZTFLWjBvW7Q4SqFGio+2LdTTIvAZtpWp9\nC8m/HfU7Ev94XE+J+q17gGqvjPqQrHaFttfWB/vhP+Mkc2eum4ybJGPcv8bZ\n3nqO2aKGAaaWPPu65/K+eG6c6q3ymCk6boHxxuf20AoGbGPhmCOtfDU5i7HP\n6vgS5IIYojhdiU3D5ojJ2Q1BV9QAozUHjbsueKXqQk7vcylvdlD5ATTRtCsJ\nQJNNVcmZOJrGzspkmB6JvmBZhzABLFGNGbQm7qBjQXaNkajw3AHAWb4QmRtH\nd+QurIp7sm6zrEeEzuD/hQTm+5R9fuNoqY3QlwiffYEXD1/EgKWYZCK4e5HU\nbQBz\r\n=2tWh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"obivarg","email":"christian.werner@5minds.de"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.2","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.19_1584545529247_0.7410518119338674","host":"s3://npm-registry-packages"}},"0.4.17-feature-efc50a-k7xih4z6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.17-feature-efc50a-k7xih4z6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.17-feature-efc50a-k7xih4z6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4ae0b5bd62c9888577fe7200f6a630ca54ba10fb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.17-feature-efc50a-k7xih4z6.tgz","fileCount":304,"integrity":"sha512-PXXfgExHJVYIxjvexf/eJ5AQvU52Z/bzVnbOrDS/kMybyftKqwzKQivN6PzNuvRGQzAMk5JTeuj/s+rFyYhU1Q==","signatures":[{"sig":"MEYCIQCrNSc9ac+U2NHlcT4NUdicAgDTdZirtRaXKoA2K9rqBgIhAKLjJy6+3VJACx+uv984SgRPVJCh8boLN+Td3HrwZje3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1300172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeckWBCRA9TVsSAnZWagAAkcAP+gKHxwD8cYwgJRsSgN82\nd+lnQByt3FvDW07+Zw9SX9HZL/Lb9VefBmMur7zodQlHcDzXnPU4/eXz+jMs\nrDd4Oo8PJpYKj/gP7O5efR/h9aXbdm+c5RIGKipMsQPoXXzopoEFPe1GMJ98\nyY2GavHtyaBMzqp22uvREJ7/TuVFuBN64nvqL4VKMTsQEBlrrF6FXSj+hv8t\nTPzHc5CzEQoXdttHUcm6cd1v1H8YEKvWo/DvoZHte4tm3PE5W+KoolSrYsR7\nwM5gm16cnrY7VHtvvJ5ZI+OYAEItTBtm7wA7g094aCy9SnE5XenYHCnhGlfu\n2lmuYQ5qKT7EvwTlG3TMxZYS1YRqek1WB7Eu9L1o26hlnGEpTFYL/JKscjYV\nmh1jtHHJh1lI0YLlu047EstDD6FZNClBrhS51ADfYm5+t8yaGOcjnueX7S4U\nrqhRpIw//JYgoAtQrl3FdWnv1AHq5tX5Lzn9eLxy57EmUIwKY+AX/5i4r2jI\naehVsbIw7DruQZkVCieHIDUwJZOdYtVez8c34QkAyzCeFftl9Dbkf4v9ZEnx\ndcJ1YiI9vhiABwkSQaqrTYZUz6qSgQoOLQAdWTW/FnB9kzVxfNS1GSJYcPsz\nOoaBQf530uB8nvYD/d8NgVg9PcbRAK7BNd0TU101dutGbrqrbYYlnDmghN+8\nwcyi\r\n=Qytb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@atlas-engine/ci_tools":"^2.5.1","@types/bluebird-global":"^3.5.9","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.17-feature-efc50a-k7xih4z6_1584547200643_0.5676620147806186","host":"s3://npm-registry-packages"}},"0.4.20-feature-16db9a-k7xjd94l":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.20-feature-16db9a-k7xjd94l","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.20-feature-16db9a-k7xjd94l","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3a61f851b179a9966dfc90caa8defd16547b9878","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.20-feature-16db9a-k7xjd94l.tgz","fileCount":304,"integrity":"sha512-s4Z+QjlVYHFc1cYngaNnlFHafEMl6rUTedgpoL2m6up1xUezPCLHX9OswFV1mujpKmsidZ2AOqfv/T/LmtoEiQ==","signatures":[{"sig":"MEUCIQCqxFoVcOJ2C0JtFWxWuAXVOWmYilNW5bI35ikukcEg8QIgDb13gqwGTdNmRxdXOcPbmmtKkS1rA6AnnxrBHAeK+1s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1307112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecktXCRA9TVsSAnZWagAAEUIQAJnnD66pguy89zPn8GAs\ntRySDqBbC60KpI2NTwzR1oanRMor7fKOf/eUgCZcXTapHXfwcJ9u7WOXbqku\nVkyRDg/a9xV6q2anTc3YeJ+tS2sjI6SNcZQwSzsyIhd4DnwV6+4WpqQTucth\n+kFY3XNhuGbDvy1rdSW122LbzsnxGvC6hxgZLip/pLEI4q2FZTv9PO987d46\n8GkjcnpDAmKm12meyHnx05QY9iuHEDxXK+hiLvzvQ83+q1ATTQW7a048Ab0g\nnhANjAodJVhOwyMXsHMIEDTj6iFSjXK9Io2gJzSl84IMpr9yICN8UwecBhQl\nL9NuyGH0XvgEpAAe8uLXWL4jQadttnxGNxOUW71mua8mR4T1hGA7Sn6URNUS\nkkZzIrQkRi36rRnjTQIuwoEmG/L+fom2VJehoyjn4cfkwkNPT3vNZOxwN5sp\n74bINUaBRX/bG0MQpIcRUXxxrGnbTn1OvICmem2WkgXtw+SqA3cArn/k473e\n3Hz2yloq6t1gzBU9LUAvnBAqeAwK0MVoMHJrqFFFA7VSSUTbwajvD3Hf6QUp\n+eSFPrnhvUeJZll6F8ma8Mkdge7577T86+wvQR3AQX73yc2gRaPIyKV9UMlI\nNBvLFeKjLNILi4bLDT74dxcj5FOTaogKjRxSBSoN6PcPOb1jEeFp+sZ+wK6x\nL2De\r\n=YIW5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.20-feature-16db9a-k7xjd94l_1584548694932_0.3190119530069404","host":"s3://npm-registry-packages"}},"0.4.20-feature-9a0bc9-k7xk9akr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.20-feature-9a0bc9-k7xk9akr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.20-feature-9a0bc9-k7xk9akr","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1b5317d0b8762f3df152e4c3dbcac62c503d1f77","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.20-feature-9a0bc9-k7xk9akr.tgz","fileCount":304,"integrity":"sha512-lKf83ZhXJMeBKEHjJLpnF6HwMajoUtoA6Un6cn5AHtW0Qn951vn6c87kIO4A+TwKkx1E/5H85jpB+/fvb+IyNw==","signatures":[{"sig":"MEUCIQDUgcdPc2WK7dkAl53pPRdLZ4b8H0lWVVkvc0W/c2Aq5AIgduc5jzPqmJYoODDICCkjxwl4ZJyb4k/KWi50Diw4kcI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1390749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeclEvCRA9TVsSAnZWagAAP/UP/RoRI7YLL1T1IZXPxd8T\nw31GHrQPdQOCmH4VFG9YSda4Sj2iaGPjw+lpTMuIFcUfXmIE4XfhH7YHJcSl\nRYHtLJeX/dTgRTl8KuddtVJXPkK6zSDxkem23uhftEl4RlakRY+33JHSbiPG\nsqsD1e1W7cFVV2wzAnjQHsRssZdfd0YjfilpgVvkBOljmMcoyv9g4uGSt84+\nc2RVQlOZ02anR9id5mGh0MZwhH28lbNQobZxy4Q9nlXlxsx6fZ389G6tqzZC\no2FM24bjc8oGEsMODjUS2Pn74MgFVbkTh6YiMbUwgE2fCOxN8HSRBLp+ql2L\nf1yhNlndBi5anvhXwxlycTQJqOCcySPtOpvBvJPJ76Tf5Nl9kkWS0J0InGmq\nw4Q14OeGzDYPS+mMYR/jeS12zwp7vIK7picGaranJq0+/dusk26AGLmHTM2l\n/mstk39czlSS2jjPhz0hFacAMpi1n95zd/C7E+GAvqcGvhJ+S0oQwbN2nzZu\nxfhg2sOt3LVRLdYqLgFHQdQyLdNFtrNgACfle5aLhAxh5CsnWX+2tyZCi/r9\nKiRaX2LuPqyj2mtzROmduXfEFPfPtwOiet+Sz7BvXFsv01LnikWveoZzQPxQ\ngCQSSzAL4a2rQNo2EweJF6TKSgtuxfjG+18ttfsGRPSFcsjQIbe2+d/LXLeU\nfmSx\r\n=xeaP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"0.2.9-alpha.3","@atlas-engine/core_domain.contracts":"0.4.12-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.20-feature-9a0bc9-k7xk9akr_1584550190892_0.9064361537567724","host":"s3://npm-registry-packages"}},"0.4.20-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.20-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.20-alpha.1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a955ba9c04007b37873f1194a68fa6078500e2ef","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.20-alpha.1.tgz","fileCount":304,"integrity":"sha512-YEJIeRLl1V8CWZHo9XVa30OOuTeCsul8d3nLDDqzxt404WNgZjIpyv7nWqiLTvguqR5w6ObaFYTZAMrB0ovSiA==","signatures":[{"sig":"MEYCIQCH7Jfeo8zEz4AsXSQyFlehDvzUdB+Al4/IsBumyPN+lgIhAKeTsrlleofqiNNSapzKN+HcumO6+ah+V618Qnt0faB8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1390733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeclQBCRA9TVsSAnZWagAAXTgP/3zTXg0eUD4ohAzMpXey\nEaQiGiiSnFGJTEH8cGK6rrYE4FfhBHv+r6P5+UYe5taL6LD6Yz6SpY0EThFj\nQv4fGKDxpwX2pH1JNs0ymkYS2MAMcXEVo3zOTBR1TZAa059p6XmFXhWwDPqu\nye1jaB2pw5ex4XrgR9DGZB+C14nfVWDrGlP5EUGjBswo1dHGIi1dFZ1T+lts\nvL8BEoGdLUabyc2orWOD7DfFLR5scnmlVsy9q5zVoQ3EU6u0VmV8v8A7pf5z\nbibsOAetZU1c02ARuOyOyAkuQkubIGX7Z0KhgyFXXaM1MMhmXvdy8rRSguOw\nDRhN5vha34+YdOVg5Ku+X7SBl1bZ2csqqduho2z7DtpUmDh/Iicmrbo/rPfu\nbYV6Olhqv9A6X7+dlpvkUIHHU+uWajpnqNW4l4hFpynaDpIIf2fU5YAxq/DK\nNCTDGkhrKKUz/GB/DsEBxewhE7L5CeiDPtuiNwKx3CtGP50wTj/V/r1AuOa/\nPJt+z31D33le13u+9up5SuPuUnAKXOIQKPVDHByn5NbSEFnlNEgGhQY64Hw5\nL5iR2qGY7tUR4bihwu6eEQ7sGlTZatO4sy+68HKVAP8fL2nHsGBRJV4AeHME\n41aZ3WrZiGRf0P3/VP2nZ9X2+t1psIr6tTOPaBFnpIwbvMG/RGrwubDsA+O9\n27Jc\r\n=78/4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"0.2.9-alpha.3","@atlas-engine/core_domain.contracts":"0.4.12-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.20-alpha.1_1584550913134_0.1102356168722014","host":"s3://npm-registry-packages"}},"0.4.21-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.21-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.21-alpha.1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"526ea4c95a36a760fe54998a2b0630d1eba0800c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.21-alpha.1.tgz","fileCount":304,"integrity":"sha512-+lFI4cXuckF29dxV2erdP1pUr7LR4823C0Cvt2BECBzspp651njADuYzI/fqkJQoEg1LMtb1KzvveA2ClYJoMw==","signatures":[{"sig":"MEUCIDdvKz9w9QPu+I6YIl9Bqo2WMvmC60cIS9ysULDZcz0WAiEAkfMFDu/ArH++r+xR0GmuEq3BchHXuDKjEdJpxbS7w5E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1390733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecla6CRA9TVsSAnZWagAAv00P/il44DxxutAgiimk55Td\ndISVetwSPutucIuFXxzMsZkuomVp6Zagg2MwGph1YFxa4ZAVB3cD/hg1n95D\nBIzxo8ol/ZA+7kYKcY5N0+nQfXdDnTySy+6c4QSDnqd2ODS7xPQtCGrAELqg\nlzQZQUOre5rQRLP8Xux/xQ8kuCxsHpS4vHG+2jsejqf1tQFflhI5FJFWGoan\nYSx7TaCfVgIvtn2hUen2OtjfbZY6S718LXp5l3jEGlYkTEU0hAMGTrnQnopW\nmHkC7W4AFXa7Le1IgVj6yjfgbB3AbvwhsQays9jF6OYaV0pF+iwFVDMuqYYs\nlvDqL6rXrqMhjMOvEPtaxsjFwPQJ6POEns5kP8vdyMHbCjKsi2SZR+gBVArs\n18mjhhUHtYr8p6QaCqxE1k8QIhkyCNxgZNMKZVgvyhgsQAaYayiXjWzBP3OI\nV0Q+mnlBMjpsoEYA/eRC9yTbZxP8hoZV50tzJ+YgEEoZpSvpwUMhTpslzJfU\n2gt4MKUKgKUBHvdVyQRCBrH6x20A1Sq0b7WsbevQk/g6WlirjE5Zs4kAuysk\nYx9ldWYGx7n6eUH95PVvN6hOkEKGfc+g5n2ep01KiEecWrF6IXY8idE9i7Sw\nY9fRP3/kXzr3hsHlubyoMxVdhHZJFPpapVMnxLfvFaXoYId2aR4CJ2jbPjaj\nbenl\r\n=igk8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"0.2.9-alpha.3","@atlas-engine/core_domain.contracts":"0.4.12-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.21-alpha.1_1584551610196_0.5537590065047124","host":"s3://npm-registry-packages"}},"0.4.20-feature-48ac71-k7ygarc8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.20-feature-48ac71-k7ygarc8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.20-feature-48ac71-k7ygarc8","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"044d9d2293deb4fb47b573d3a86c8cc85783cd55","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.20-feature-48ac71-k7ygarc8.tgz","fileCount":304,"integrity":"sha512-X6Hv+R+ctQhVDsydpCRtSIbKfbl4nVlcBykm1b9EtQmknGYz3qrJbbPqoH7U+eKpSY7nYERBqAwGtxKaDCS4kA==","signatures":[{"sig":"MEQCIHXTMzqq5hdFChkbCQbEolcUk1/EuwVt5Ly1p/H9KINVAiA945a+g0solYTWDyVavxfjcK073d7hf/YfjOE4ZGYnbA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1307240,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecyNpCRA9TVsSAnZWagAAsS8QAJ1Z6STSbF3VuLyi+aDo\nmTZSZYk7uZxU6TRuU9abIeQyZ8Rh9V+157Da4IBU2ZOdK3q0tziq7Tdx8JcK\nA0o0t0XN81v1fHFfWvR0YgVq/xuPq1Du1uOUhY5CYLMUfP0rY1lmN6hyp4hn\nYpFaY9Fd7OdpGkzJCYw2UJLujZ0i0C5mj1gx60ZHawA7QRMDG3oBas3eOZbW\nhDyQbp4ofNrf6lvLJblyhcFOqdCkRl14vNvjog09dJf0fgUTBvWtYBeAhmOp\nHPpOVwVRgLhv6VKAnK2CXuAxTQmJD3MmMUxPoQJNukI6yDfoaY5OWRmbgxdV\nslvh9m1aYeoDCDuE3/Q49Jbh8iO4/67dcTpsxPvdUuQtnBLZBDrAjRfiFutb\nTSBFhs9VwHQs6VlbWHYnIB/HDu9hhKdLBfMLBkg9EZAuwFs3NIwwzP0h2j+7\nS1Q7DjH7mCA9AWET8pd7Zt0df14dzosJ0vPg8/j1wolDHwzR8Fmvi2rPzLBw\nN9/gNERtYRYLQzz9DBBf/3N6uZyId6GP4LDazhRgHt51bcrtTg/k9NM7ee3K\ntY+Ik2QAnWE6hbLUhvympJEyQPq7VFn7dPUJQoz7e/Xc9cgiBhN9AmCdZsPF\n0g8TmkX9HVpDkOuYB+nySUEi6YFlR9NTtVNQ6ZQyb29wZ2/JifHHGzJ7AKqo\nHfbH\r\n=vqZy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","node-uuid":"^1.4.8","addict-ioc":"^2.5.1","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^0.2.0","@atlas-engine/core_domain.contracts":"feature~add_retry_methods","@atlas-engine/runtime_domain.contracts":"feature~add_reset_methods"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.20-feature-48ac71-k7ygarc8_1584604008950_0.3723396413454545","host":"s3://npm-registry-packages"}},"0.4.21-feature-9e1421-k7ykewyi":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.21-feature-9e1421-k7ykewyi","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.21-feature-9e1421-k7ykewyi","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b9c9b6b013ef9ded977610aa5c272b698783adad","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.21-feature-9e1421-k7ykewyi.tgz","fileCount":304,"integrity":"sha512-ffoyrbac3fdHjzjHlA22MIXi09asxP2rS+6PbX1DBReAVPXrPrsnc0ASCepjfqh0pGKfkIryIf3SMI26uKUm1A==","signatures":[{"sig":"MEYCIQDPvhjIR3erGWWcylN+ZoNWhDvMqlmBIiSr5POMyWs9jQIhAJZZQyrjUc4BbXbfETbsWXeJ8A9REP1IqvfNxxKVikCr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1408048,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecz5oCRA9TVsSAnZWagAAynsP/1A/VNE1wIz1H+kj3xV1\n3L1G+xiV9n6BODls3TzxQWFGkaPJ2lwswcAvheMAqSUZwVB5iZ5YdmlszBMX\nKm5UVtgt2eiyZuiah9Uv5Qz2vDN5fODhSBEo0i/uLaOMUk66+PyzFjSRa9PQ\n2vOdQKHldR9LvPlhKvgWLPrgxesDhHWWFaJuF1PFzYIVXzSo9kbHpUQmO2Sf\nv6jj1bknZAKAdMDVi6+6gpHzPP7HPO95aFDuJ6BeXsqgS++5AgZCCZm5FnAl\ndDvoc7beETsflc9eNdbUwUTMuolHj6PIEOcRNJXkuhTFKYtoYf9xBPMUd/yX\nfQztNVFLp/hLhncs6HY+LCXHnnFFk2PHQr7dIhGdsXmqoUSTr+4RWCoN9854\nLVQHud3eczPw0KEIZnV1qW2Qich2ErmeRxGtQbRv/cREuS8dM9fkY2OeaLh4\nKbCS0HO+gTNZl7rscGjAzwpz7oiHSztGp9/qAFxHjH29HjmGoLAk6skyy0Oo\nKRHRj0RGFime1PctHU12KvvlTLHnRhmzjdbafvShISZd4kARo271vgTucYvS\n7rYV58AIbsNoBU35cGrTxXTvKolujs2smvTppTpxmmcgluyhJmDvObDLlgGS\ngt4AxHNMMt5CzeNt9a1k9lW23Dq40fW7FDMnUJQiEDK+SdGzN2X+y+3EvOqw\nTNDx\r\n=ORuQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"0.2.9-alpha.3","@atlas-engine/core_domain.contracts":"0.4.12-alpha.4","@atlas-engine/runtime_domain.contracts":"0.5.13-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.21-feature-9e1421-k7ykewyi_1584610919777_0.822314173446403","host":"s3://npm-registry-packages"}},"0.4.21-feature-30afa9-k7ym7jx4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.21-feature-30afa9-k7ym7jx4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.21-feature-30afa9-k7ym7jx4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"fc31642bd28462da0c2a0e2cc2a2e21d83c9ba9a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.21-feature-30afa9-k7ym7jx4.tgz","fileCount":304,"integrity":"sha512-5GpV1gNSO8hIe22u73bH91lu+Td/YVPUO+27eI/yvxsV9QkDizbQhZquE2AaGmS/iI5xcRuLzEPmVKnokNaS0A==","signatures":[{"sig":"MEYCIQCw70rAB9ps+M1zIfSn2k+0i19v2NOWo4Na+jnHCQ4c4QIhAPnU9jGMJmomfcN51DnMhRs75gN8hAmztK+xx0/06VSy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1408380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJec0otCRA9TVsSAnZWagAAe9kP/j63/RDekT82Dy4KSgdA\n9/948/z+RMBiwn6spHsKAF3sgqLjGiEEG/VAMLdTjl8fD4IPzL0n920MxdQf\nzwH6C/Y3jQGqa6wDB3azoxKn4jG+inD0ilBYjEICALa4mQS2xj+ssTARK+N2\nhbxqpCq85sir6mowqUv1Q+vq1sj1jsIV9mhSp9BrtKo5BTJRn1VOo+y6GlQv\nR7JQg8nQIOWsYxEHQ7VfpuEmUO1Tvv4APj2mhkVh0Kk2b3B+/eHI3YiiMNQs\njgQ8KxoawgA4LJHmOIXorbUNEeuatnQkJv2eJxfxkeC7v6iDeAQU5SMvRdMX\npb9/9zl1TJ1XDFdfqmNP+C0N/bbfNPGwTgpDH078n5UmIsrYCS8oYU0Vljqh\nH7ZnEd7t7QIEIzTJGufGSWyQy6uim7uaVQ5zuJpt735zCEVie+rFdUr8RSdQ\nOhmYM644Umy53/3qq8YE9YR0xyOOTacu1kGPDC6zOeufnHllBuJEDFA3Hag1\n86W36CICTQGxD689Vgc0O+0BUjM+k/ikM03ulM4HEi29iiTIxZwsQXlgpel9\nnHcmNSvAkgtUAIwTBgPE1KxrK/WY+829Mijk73EdalpSoTezalgnwDz4zntG\noLseY1ooIrMy4xUK4udsAcgHdr/WzFqbLTesDVdwwe7ExeyCC7uD2UfrVUEz\nAWC/\r\n=eRoq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"0.2.9-alpha.3","@atlas-engine/core_domain.contracts":"0.4.12-alpha.4","@atlas-engine/runtime_domain.contracts":"0.5.13-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.21-feature-30afa9-k7ym7jx4_1584613933091_0.5224306359989273","host":"s3://npm-registry-packages"}},"0.4.21-feature-1f7a57-k7ypif51":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.21-feature-1f7a57-k7ypif51","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.21-feature-1f7a57-k7ypif51","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"efcce5d58835d62c333e27554c44bb9a4ef7c240","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.21-feature-1f7a57-k7ypif51.tgz","fileCount":304,"integrity":"sha512-ioY+P6XIFTqXy+NhgXuo6CgHtDqzJ5eFIAPwE3Pq6SJJv3CGfNlMZWgpaCh89O5rJZodBScc5QDQ2agiJjvpdA==","signatures":[{"sig":"MEQCIDIaLLUnVLOwdG5YadOa8GdlW3y0u3sXuDj2lg6qkoaMAiBzIRMG+Vo0hP/PntEwOYANmwjMqA4hX1FQdL7yZIHseQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1407542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJec1/YCRA9TVsSAnZWagAAGKAQAJZzLrG+ZvW19Q8Y/OXK\n0Hej+EFqbXyG1bpOaH7DJk/X9qfyQv1X4YTKBmg2vbjQQ+WYThgBbN5Smmp3\nzi5hYpXFh22jjkWp6Gckcfl1Wlo33HTiYWm+JQFsWManG2So6dOSI+KI68TG\nMkJV++jadrYdSeR5Ql3D6TfzXxhb88MU1ioyJOcU+tuyU7bbG9W98ZcL6y7H\nV6nfj7LN636xhsEVVdKhNPalBiiXfv81gZFgt7VG8H7TXS8KCvVj8RmGRc1y\nxeooEkNGlWooJoHz1L43Bo3cQqFYq55/fG9jYsU8LOo5wSukgJhrgNzBLo5k\nyanD8rYlYXo2sRI4VooG4so/eVKEliuRsDTuQxFNjxQP3nqFvyIA07ZA5PI5\nt39WEcIIsc5Vic+iA8UzeH7AAy3Sqfiyd78Y3VLPrfd5ETyNr4E/3IEfr+Cl\n1kFSvopNdlOruXRo6Egt4NPukxsOEnW1kcJYv93AVJ3H4txJYX+ODeRk+4VY\n+r8V9T8ZPN4C6hpPAbRVm8Y51+CVtTykNd/lBZTucbCYzjwOkPf1zCAi1HRJ\nmRIRKntIUaTa/4vQfhgcuM1FqymWKpp3uc+KjGPzhCQFViQHdhIRNQORoMig\nbpRXzsScrqOGbrbPpBqy2LL+lrSUF5ctKdf6QoZFv6bzbnLearAlGoOIGLtW\nbNNr\r\n=bhOr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"0.2.9-alpha.3","@atlas-engine/core_domain.contracts":"0.4.12-alpha.4","@atlas-engine/runtime_domain.contracts":"0.5.13-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.21-feature-1f7a57-k7ypif51_1584619480110_0.20567208220906874","host":"s3://npm-registry-packages"}},"0.4.21-feature-5c65b9-k7yrebmf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.21-feature-5c65b9-k7yrebmf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.21-feature-5c65b9-k7yrebmf","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bb34767c1c8b7c8a1c8e0de36f3f4539aed7fe25","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.21-feature-5c65b9-k7yrebmf.tgz","fileCount":304,"integrity":"sha512-N3tMeOuhnoIjw4AZ89QBwRdrFuTH4/XZePgesAPOjIaEAbfmIpMpEeMrEQwRrI+uer1kUzKleg+tpN6HWAVIfQ==","signatures":[{"sig":"MEYCIQDOpnkj2DJhRgyIoQ6Zm4MLV5DQmhln1Cuuag/Ir9xmrwIhAK/cGow9O9zdHF5QTz+ZhmaFMz9xeMBWigZ4mIMUPPUZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1407566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJec2w4CRA9TVsSAnZWagAAHQkQAJjqdbJKrIE5TdKQKhfJ\nGuLZCDJRrOJQh4jkYTUL+sCu/8INUXf7BQmOXUWw9TeXWGKiH6ZXq1iX4P6k\nBPVDMenqICW+gvoBPv93+xFs/UmvR+84v3uSLgmDzlel4aq9CTkKKf1JQ3Hp\n5Vy7R7mdIjCgc39e9Ut3YgDbrUyG3lWyevRDQC5mR7KET97NZRKpj5b7Wz54\nzX6sb9vLsSYnRyJROaUzeB9M7SlXlpoW7earmXf+ah+5SU8xCapT3F6ZHpYz\nD266nRoRtQwf8VpEmvP3QTegGyhOATm0USbOEQXNlm0gT60pnmO321VdD2xq\n7JvlK4zML2ECitaknAjZbsW3ZhhjymlCe5XU2TjP1wlmusDjATfLb+DFZmEW\nk8Weq7AlfnMqdVt8YeXqs//F8CoLOL1EgyK8Pf6Zew9Hn4gv3ybOigpyH9pM\nv+HnowIXkDIxyJ+qG9MlyX59S/z8sU2ZmOanpgI+Fk2EjggGQNZ1ZFYRJHsu\nO9rDnU7ZuvUn9PpOLijuzf0SN3CzqknQ+wIF+ATzrmvrZlQP8U1rN/Jy687d\nUDEphqwlRprvZL/Y+HUVxqFPpV5+XO3xAkUUIQzU3WpSfEdeSENZt5b/TFFa\na5qFQfygWWcBBsqs1q0j0gmodGK7AAxVkB59LuvVitX6r6wTGcAjpXPrJ8wc\nw9Ca\r\n=L56A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"0.2.9-alpha.3","@atlas-engine/core_domain.contracts":"0.4.12-alpha.4","@atlas-engine/runtime_domain.contracts":"0.5.13-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.21-feature-5c65b9-k7yrebmf_1584622647667_0.44358299643610577","host":"s3://npm-registry-packages"}},"0.4.22-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.22-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.22-alpha.1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"27fda2d6e1e6c901f322ea5fc000acf7b160a346","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.22-alpha.1.tgz","fileCount":304,"integrity":"sha512-W4jWALrKRlLEMhBS2Llu3tS+gAl9TqFSYce5xOVx8YOYaNFrd5YDfI0HlxQhnblqv0EXYqc+iAnYjK0FOeqVaw==","signatures":[{"sig":"MEQCIGeenobzxXA2alNZaS8QJ0mq/OYqtgm/eeb5Svnh1mjvAiBRTvAf88lDZfRA6psl3AXhrriR/TiSOXQXYTG8ThFpSg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1407550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJec3+FCRA9TVsSAnZWagAAXk0P/A4SSLNShakjiXqmHWAh\nUnsTvXotwD+8juO55tsQbVIdBTVN037omET5tpKtrkmbXZhji5MbOK1o1V0L\nq0oSyH79ed8oOxO+JBUEolYq4kFrvfRsyOwEkAOJKzFmVwoK6TqStRk0Cam0\n3GawOsEMxIl0mzI4WblfQwsV3+JNL9PSJfpZ7TYsGnDNTZwm4pcjKxMfqgzk\nG0ZH8G/dMOu1mYRytZNqDNODZv/pszr2R6VjlRuPal85gtHNMYXo3kP/6NrU\nAbMU8MCExKToQdmTJfd30OPDUPk6H1cJiPslbAj3kIvduPuryf95PrP3DUjp\nR5nYES1e0RRBrk74RvbaD4NRTFFQ8JPRwDbvHEXgu/FHiLgy7WQUoiduENiW\nuQkdGPyAc0sCx+yTDbnFX78RUmd7Em3Y4noVtcmbL/IAJOBoyREGx/MBPKpa\n2Pd1l4Us3OCKPS9YjHneRw46V6T39Ga1j4Xs7Nt+uuV+kXeoCyoGWoak+F4s\nhzB7FpnQrR5J9fnH00JyTrfvaDbC3CKZjHOzYPB4FM2aJLae4qn+Je3/tFYs\n6FMPNyJcyNo4NK6jKm1agPi/nV94r+tNbfgIRu8UUk2Ow1XvwCRbm4S/uLjt\nEeSY6/30s/kTh+nf3iEqqqXrap82mmL0KJRQ3DWxq3uNy6+mnPN4dOUx45hK\nl7dI\r\n=0F7L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"0.2.9-alpha.3","@atlas-engine/core_domain.contracts":"0.4.12-alpha.4","@atlas-engine/runtime_domain.contracts":"0.5.13-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.22-alpha.1_1584627588413_0.2963643128075204","host":"s3://npm-registry-packages"}},"0.4.22-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"0.4.22-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@0.4.22-beta.1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"af94d073642ddf16e9977c0d33a9381879310adc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-0.4.22-beta.1.tgz","fileCount":304,"integrity":"sha512-jyvpq0OeO5kFOBjhAzuIsXem7FlbQNky/lSltRZdJgzN9Ooxspt7877Qn2JHqGxZvkRBXQfVkLLpFQDRyT01DQ==","signatures":[{"sig":"MEUCIALZJinLLJ2fPzwKVWNslox6pDLycX8FY0/ToXCcC9dbAiEAgtnwLeDq6MmAhCt1KM9yBonHOy19xmS8CqGNQBOIVzI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1407549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJec7zLCRA9TVsSAnZWagAAAKEP/iV3P7m2pmKl9BjPRUHe\n3HZfwrZX4/0R+Y5eNTeVLRf8iUg7KfkEdrJAEIDc0r7FXpzcMlIEgl1fjXOm\nUtaXtk7EVtzzfhVT5fZyal3LFXLriE0gGrdGtiMDfSSx1bj5izSqaMkWuIql\nnqv+nsyPSx/wsrBdS1b/KJos2FSEuH9y4vJ8uhtX2uGfHHJ9qYQt1HOnJFNZ\nMBT13e3imuF7EO55za7woEsJEpWZv8DAOLn42zrHIQHmrhbYjDwXFL8aEDFS\nIg2EZwUXBNlyP97F+4OybRK1qbH2yk7guVKD3oYrZqY9z/vpNtk0I2ylz8Bm\nLsygYVgMVqkiEFTYlMyUNJRtAVwQAIetdyoJo77R3+T3SLZ4YKunBlX9kOo3\n7gKFpgJaCLDTJHj78LXuk9y89EhzfrXJykZ8dVtVwagcUmpxG5WV0yWlwT8+\nwHU1aET9vUFFNC6dCvp8faQ1QqmYiBi/Op4ioR2BeaHbuDa2kDQc3OG3cJAF\n91BJYnoHyMxH48Y0820DoGWtTsS8RZ2LK+iSHsOC3GRe1zfC/4GGzGOstl1g\ng2cSiZSMYB4ntu4GGzN63GHXKqCfTKuEvdmvicjbz8zu8JKL4t8LZzy2uGQ9\ntpcy2wYUcsI1XHS1SqJEs7l6aBJmsN62QcdvTvDmDc/Uwzv3XmRsIIv00u06\nCImQ\r\n=Nby5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"Please use the latest alpha or beta for v1.0.0","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"0.2.9-alpha.3","@atlas-engine/core_domain.contracts":"0.4.12-alpha.4","@atlas-engine/runtime_domain.contracts":"0.5.13-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_0.4.22-beta.1_1584643274735_0.24922135034252202","host":"s3://npm-registry-packages"}},"1.0.0-alpha.8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.8","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"e1bfc00378f9f4f465add62cdbcd132198fc26a8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.8.tgz","fileCount":304,"integrity":"sha512-sIORR2sWxf8RMdaBAV2963sXj6CSEYm5xGq3r8fBVSKKpPRzIddt4MgaSEz7ol258HWddcuAiK3g1S5cJ1NKXw==","signatures":[{"sig":"MEUCIQCN06Dj2y0KpEBxlosMqhz+A+oIfr7AYI6OZuHDquRdbAIgAQw1vI7C9k1j7cHw8m/iDLwVWi98kPdWcgtM+znkrqU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1407549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeeIWZCRA9TVsSAnZWagAAlesP/iveSz0fzF0CIROdvICo\nawCfE1Z2ko6JyESJITVJp19cCREKhthyKbH47KhnceViClOu6MBSQxvzloAR\nk7nXkTvDWnrMQ47ulrE14Ex8XgygkbbokxvqQNdfJAz+hijm5npwDE2xmKQN\n/YO2ONd0fJS73zHGCRbFUaKgenxKvEU+DvMaE0fTWaHN1qj4axP6mfpoYiaR\n9+CZK9kD4LtR9Bt02R1aNjgky2LLoK5Ql6MigkakMqUR+kLxQmr95S1nUGpI\nbk0vCO2cY+63Mu4TMbtfO3kGKzmyMkbB5wlO7Khc2vNL+QtO2CmmH4LDT7S5\nnuqiVovFo+8MvZqGjBNBn2dUIJVEHTcElTXD4NJIQuqhDIRcT0ycYbXgIIeD\n+POLBr3BZ9+54k9/g61j0Ex9fsEM7RaSG9Zuhm23Qa9w35IG0WCE5I0LlMb4\n5Ry3OsoZHzim7yhxuWr+PEEny0Dv/pjO4YCXquRnt0LHZkTOiWJOnzYDyF8F\nXnFeGW6kzR0U3Ux82hdJOy8DkClceAuIN8OHc41gHIXXZIM8mAAZQ+uxenCd\noZEjuBBB3bgRYvwEihYTQLIgUjSmYwukrv1RWjxR+eSDwQaqxrodkCY6Nfib\nkPilGdj0wPxZdd1P2Y1EmVouAdSFMT141irXokDK9c/LHqK8O3QDJhVIiC9P\nwaQV\r\n=SNN3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^0.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"0.2.9-alpha.3","@atlas-engine/core_domain.contracts":"0.4.12-alpha.4","@atlas-engine/runtime_domain.contracts":"0.5.13-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.8_1584956824690_0.35211346554395817","host":"s3://npm-registry-packages"}},"1.0.0-alpha.9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.9","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b967e1f53b3d2f54bfc8b6e48712fc1ea6f0f018","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.9.tgz","fileCount":304,"integrity":"sha512-zqCHhqQ0H7zaexqBxncVsGFQJ/Eni99iBJFAsnVR9Cw/dzEwggAT8GqsVyFqP9BPdeLW47wa1ZPWHTjaLk/KKg==","signatures":[{"sig":"MEUCIQCkfCrzpnyO6B+VMo1pDDWC7VWC0EaLg+S6a81CxlpqMwIgHFKSKcJiXUwlc0YrFoUqfbooHY9uhI83mhL3Q8cxcro=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1407477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefHApCRA9TVsSAnZWagAAg14P/ixrT0piCnze+5fpFBqm\nBVrBlMMNtToU/RQEMYBQZ3lfXivEx2cPL2wIE9J/Ffc1X6L5Lyh31Hcv4EDz\ndXP1CeI7reejF6WfeexsZ7XIvE/4b86aSyf4grpIyzpiqb8KbPKN6djDGecD\nzC4D6zesLijtAYFL3JcDmSe7NbWeJeebqY8Sx3xuFn+rZpOrCT9akJHDibg2\nc0dmA0iGJ7pWgJuhhsp7sh6FuCJPXi0eKQFPzuRZEw2bgqF68fYDpFZ1shWD\nOTKzR4AXZLOkA+YUBrm8zCaUAK1iFKj7fMweiN6wSzW+Z7KDdKQFm/VJ2OJj\nKFozfOZaJXqQsSeY50TSwj8jj3bDK+cDiAwIZQ4ILZ+bxnxj2Iq+VMOyr7GF\nkZmeB4VSmR8wBUmpL4s7Fft45fiy2JXhkkBat6g/7tWAxgFZnF7eEEu9U1vB\nVpZ/ygeeEu1VehAAhdzE47lIxk2SSDi6I5OGELeJv27ul9GqmG+Akk30kb16\nQYV2GR5YixFnfa8KdU4C+LKpsLz6RATd7T3FPxv3KOGrHuvSxaX2nF4NCHrq\nuchxLTW6YGgRqaDCLt7F01AEJn0dREZaPAXZ3+318I2bKn98/WCvNsMJKynQ\nBmQqjpbi4nGOK4+zY1xJcvjJ94RrUEBd+imNllMw9skm5C99QgfG/TAK/r4v\njrnr\r\n=jGKU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.9_1585213481443_0.11190174793724728","host":"s3://npm-registry-packages"}},"1.0.0-alpha.10":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.10","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.10","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"095beb37ec76fa683e7f6903fdb47cf4567a1bf6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.10.tgz","fileCount":304,"integrity":"sha512-hj2VQ5Md+a+Z/zXMFnKhvkSe6IGzL83cciw54hNBrihK/bsA39d7H8eq35Pwsjlf568E6tTMMdtLwKip+DdwNA==","signatures":[{"sig":"MEYCIQDlUbh5cCOqEBRW2mEcdeA92ja1nvBWt05HtYZp8wTMEQIhAKe4iLM28mlSNfzzYzvnlvEbnF0b1cE5Ocpmr453a61K","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1407478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefMzGCRA9TVsSAnZWagAAkvkP+wQZLSg36nwTtgYleYB4\nkQTYmMYUXRoCKlujrgBKHlG/mTzNIenoaaxvG+oYaMrOess5A+XSM4bQF7uc\n3vyFF0Ygv/QENEavS9/LtW3N3krgNaO852SmET1s9YXsh2NoKNnBv1XyfQ4G\nPdSg7i9dPkQQKb0MBu+lmSNV5CbqVC26kqt3aNbrAsSDvDY/fFOgpXvAnm0g\nH4U2XJPrnncgLB6AhF0mhZjiojNhvJwguMOJL4P8rJy9z4z5fl6AexWVDSMw\nfG44YxT2kLKRT6GWzo3aOZwRqQPZGaljgrGVbaaTIS4Lp0HZhG2tFXa0H11I\n41ZxqcDlgVQTFoai71FFbyIaHgu2Jxo5/t8jGi7Opo0xqD/CzmUDjj50l2uM\nuamCjy/Kq9nkSdhuYwnRdS14GjUCE48kWWDV2bJ0Azm59Dqo9N5lyowQPgDD\n4Rd/y6NJaNQpJQTHndZgIhEpMhPTENB7hGTXVh8fljPf7+mlvSMEu2x9Py66\nAQM0UKkzrlaT7gMmDe1kJnXQA5zcfOBGjuus0GBn7qV4QrhVByiw71YCOMiI\n2Ewu7bu9suJhIRU7L9JZyH3cOrKLSUpNL+SMqlsb7zKoSqWyz8GcATZq96ov\nK4yiM1OvT3tiXrS2Hf2Z5qw30Ij6wg2joy7YxzsekjyRqYHvlcpR1+SuWViT\nspYh\r\n=AEhB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.10_1585237189612_0.1962749782458495","host":"s3://npm-registry-packages"}},"1.0.0-alpha.11":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.11","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.11","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6bb4b5c8c3e7660d347b44a358bd00fb8c24eb86","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.11.tgz","fileCount":304,"integrity":"sha512-B4WdOPYS3VBQea3sFft/gBuIgQc9nFaR0M8DiaI80sygwOXzPnaUFKUPg7PPRKHUg3XFpxhNbuP3XdtNEd9COQ==","signatures":[{"sig":"MEQCIAh1ZOZ49t//mTcrKXA36GOR1mbjZm1Mt0U19BLqW+O/AiAfRlZxxhflWGS843au0Y7ojgJ2wlaH4qkRzPhGRxp7+g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1407670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefiriCRA9TVsSAnZWagAAt+QP/2s1h/S+tjnZkCv6WQhw\nBFySzlHVNE9T5pyw18g6z3a9MjQLDTaXxAtA299u9XRMS1uzyDM83N8EfSQk\nhnkekBmHP0v6vd8c1tCMW9Ncr3chJIoXgsVlzfkp6agAy2YT7K2zYGBtxgDN\nklkAgUYeFHBTZXi5qhktIPkXiBXH+HjnJR+uooVIN6NL6ZyB6xuBcDlu1Ceq\nRF1z6e8vGzYdRMjfeecwRugUiCLIV2HcigwfBnv/d51WmSMNkV7Jqywm1lzb\nqZOZUHHTnXHwzuIBSpvdB167Hm0OZvwvKEQAu7Z2ISLNkEFFvPTodFmaw5aK\nxWNT0YKPCWrl+f/7Wk3Hy80ZwdsPXNB9GdMAbw7J9RYlEAUq9neRJcOKS1Tf\ndYRXtvFD/MVn5rnBizp7/s9mmvaWA9lLrx4lKn/ebNs8zmDzMWg/I3vKe3uE\nrzVQfDClc0GUPf7o+QLkxpdzAPgEv0mMq76Cr8zQSiCKBarH2/Z/rN4f7P/a\neN1ljw/HGRPf62Ipvfvc7xM0fRsFu0MQTUpvUvWBmyDeN4532aEaq25Qfykm\nF/xd0nT/YJM/4MtFtzF2CGeaAcwXHDM0Kss4KqswvvMrh6WeEoPj7Mk6pZmH\nAwetT7VmxXC7KknwJZG+Hv+D0pRgm7mykTgGMYyiHQ5Cr6xVPj856qDE/wpe\naixT\r\n=f/JW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.11_1585326818369_0.08713612067634346","host":"s3://npm-registry-packages"}},"1.0.0-beta.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.2","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"acc2eee9db883a7c3665637873b985e00d8501e4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.2.tgz","fileCount":304,"integrity":"sha512-lXoC9nr00x9Ch17HfJC4aYqrXVuR6xgrVv6XuKC2oOCHNo/7w/Y6OKwW0bDE19aXVanvqO+eh5bba9T48BLfcg==","signatures":[{"sig":"MEYCIQD8udr2S1J/G5q2GPPgXAUSKasYTLujXqI0GpTa/slzvgIhAN4n4jmDGjn3AtMLHxMadVI3TCQzrBLN+yuvURMuXnfn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1407667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegfAOCRA9TVsSAnZWagAA24EP/jh2u6SkkKrdC+A4Yq9w\nSq7ARHppFqBIjuEaSOxRb6AmXbIAIu/iewE2SPyQzhVIJ8MPNy6UsAsU5yGG\n5wlJvGUzKcssrJXhYlCUafZ0XhNYjYsBHC9zWMM6cgLOAnUoE1NL/lvDoOi1\ni91GQFLOk3g8DIiXyeqMjXBkewHCfxxwXnWZlV5jzBpKoKxZaPd/dB8gUxDi\nhm48e6N6cV8r/HD2mxoAhhvpWsEMo7f0BZABlU3sbkw9NwnP5g8S1mN0ybkU\nYGaTqefpMZJMhK/TcDWLhaIVdOSKrKcbtqezOoln3ws1JFwyXsgOCy5eAgMe\nXO/5VzEzyDE7n4bRaAzAku81b1sD31Of3EY/Jz6YdV6M+ebsC3WjB8l/mL8e\nnCK8H2RyyvwedUIiZOYmag0BiT7mENuQquwNPXWsDLEnKoXB0rcgLoshlbyA\nvZnq/NEVHb581+3pex88CD9pMFh5fbPyM1DkRkpWPtaoKA2IugKyc8FjSCcL\nXRqIjlArMVT8XkF0p6rD8SgOS5SVQjqex8mUjTVTkxEYa2dpewiWnsO2/bGg\nOCSFrO7jGtlVS8muQw0YEV1igLXZEmgmJEJlCd/ZryHi6kqaRdSuY5e+mu3a\nAAhcF+7CtplyuEyYtzGJn8KDdqlZQihhXl2ZN3+Hmc41oLzIaxQPmw3ndWuw\nW7XB\r\n=2PM2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.2_1585573902487_0.2380056683480245","host":"s3://npm-registry-packages"}},"1.0.0-alpha.12":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.12","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.12","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"538def63b9937e98a910251c4115184993dc3aa3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.12.tgz","fileCount":304,"integrity":"sha512-DX6GQmmTPvavtzOckyvRnyHcvgELyvvemWEd4Bwol16PXu8glPBEdFueLOWIzCHSeGWqBOeJh9axLE3kbTPc4w==","signatures":[{"sig":"MEYCIQCTdV/v09ydELf2qyjrTdyuKlbBMjOxsdXWp8GJpvUqkwIhAOIw5LlZaCr1a8lsRazhOedk4muJ8P7ig8ae+OACJqwg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1408287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegwMWCRA9TVsSAnZWagAAfWkP/2IBx5CEnb5NdWI8rDf/\n0iRupVZDPLFHdSntMo7Cl9LP8zIW3TkDxtPYvTxpxMSvfEF8jQq0qxpcTpLr\n1QiSZ7hKYgjxg7ZPN+gDeSK8S7eftW1cresAiLdUd0GeavZydX7QhwAZAOEA\nlQkh9j/0+otJQoOW79AQHGnrFhncPxfp3K5rg4WliE1WULoM2p6BSEY/c6M+\nCLXkZsml5EX9Z9jyNeUU1pCSAhors7taST5tq4ceff6703Bt5KyP6M4hU8rY\nMRvzoAraY4phjmCDKN0gP+HiH7fNHaPtaI+2Gj4vjCbK5E99PDNUpObn8Cz7\n+WYm62FMsXk7006vVEr25vkONFgie1vUuydGhKlQDHKQcHpr2lI6yyurTv+R\nf8ffINhvBT4Fnud42V63iKv2hqwV3VHnRl2moswilIS/2lP4u9YTYH79MSMI\naSC7pCutQtn+KMzVHZ2+n7735LXJtxF9iNvtZ6G2NHkgQHBzO1exDKNGfPpk\nYAKVHRCigfBIAvl/VE7qNQBKm9QFur/kzfynOBBk2qEPQguJ0RVIqKNq/kOH\nDThf0oSbX6dRIezH3xTk4ZBiIcjeChOVXP5FVK66wf8fR/a3oK/5ES2ywmpK\n38jsOU1bfFOk7o7zie3Bs0xtg+A4D/DmyZVV8H7JFnvt3Y/TNMeb/e0h3NKp\nR5Ve\r\n=hK3j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.12_1585644309598_0.6228229565197791","host":"s3://npm-registry-packages"}},"1.0.0-alpha.13":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.13","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.13","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7ca5fbc70b8a6f93974e068bb7f0943b6650b54c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.13.tgz","fileCount":304,"integrity":"sha512-Pg4qkU2bXYkX/NXNgBfoKONIYLPkHV90CBSy2MsIWcxR7b/pTezmLl5fHbubOAhg1oNBKxSawkFRk1UMLXbpJg==","signatures":[{"sig":"MEQCIEClDDDSCqL3qPUeH3bCo7mQ0PiG7ynV749LBMFip8csAiBRkNSJpZck7PQmAQHP2YQMlf41p65rlAk0763g9sPvoQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1408286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegwrGCRA9TVsSAnZWagAAs8IP/3CsR2mTQpkYGryqrLWv\ntwy1s1suh1Ew4zu5C8pxs5XXWNF3GqYedU/shz/16sfg9pbD0t8PFszUY/h/\nlC0mZ5oApqBu9I9+H3lD6uZCRAOLTqR62n8Wcvhxe+90mRNCTJfKlT0gZdXF\nz1GcHyxNIBsODiYICoWjjP2cC7gtjhjRFobUJ7k7vIsS0IVYrdj1W126giCT\nn/4eO3+EAikx5UCcm3KdQe7DKKjBkEY7qyPm6QWBIlOllCJ0IH+coVJhgvju\nIUapPdnehKqpzvz8smY+3rE2QvrSatbE7ZqL609KgwISYrVv0g3W02npya61\ntmAUvGoOGpzGRf1quG14SnG16bXGAoLr69zKO5CdFjKrrIEoCQEKZhLILngT\nrj3aSPsnvJAyjW4c9uyRSYbCxNUzlmtG+ApRAv7KMxSIJQ2lHwyEopTbJWS+\nSvWZAy2+QF3g2o5SnLyolG4PtcVF8zsquGrGnEq6qJzJx84d/aLe/HiDr9xj\nROi1GnwkpIDBJTS2lxp9+i7AnoExec1Von3Sf66O0F6TNKzuNk+9bJLlf0pX\npaJvxFqeDsSJCRlqKprGfrG5qDXkMzzteCCboxoUROunDSH9AKuOnKFnkD0f\nOhHOvwO4qqA2pz/oKCSXTUgO6Z5S0v/HR2OL/8Uy+DYUzLYMRq2W6y2DUqUH\n6qE3\r\n=kMnl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.13_1585646277938_0.43801257579580866","host":"s3://npm-registry-packages"}},"1.0.0-alpha.14":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.14","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.14","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d475f8ea48705a1030c23e08bfc337806e723430","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.14.tgz","fileCount":304,"integrity":"sha512-LB/+fG4XfPG7/U9BbWtbuPyvAm4GaA0V8QElSsZop71faBufV11EaBdy/q4/rOFLvA3SnCys7Q383m8POoxoJw==","signatures":[{"sig":"MEYCIQC8XZ3liYEwCsFR9sgxXDQ7WX+iBLe4bCsWC+JGo2OJPAIhAM6pr2HTi+lqEnpGyyoc2UI3ICy/kQuI3AzpCz5lqUxS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1408191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehuD0CRA9TVsSAnZWagAAcJ4QAITTi6M6e1cC3JR/RxFp\nA0D6nwnEJhk01sOP8ZACFw4TTb9TK9n+qIAyHjo9j2kFej+7SKDnaaqR4TuK\nvFTdpNHggIY5WdK8ADEHnVv2HG7S9JU9hoZmPoiEkLZnvNeJJG/MAQfyd6E2\nhhPdr+xj2s/CphUI1qJxTTkRimQyxH8DH0huCvpXbodjwH2sOItf6UJzqSck\nFcCEUXDMevQoofiovmw9axSFTC+a5gkmNOLNCMZfbWIvRslM990OC4FDIrCQ\nUEMSXkr2yg4V+iBDeUbUB4FfGLLdkOUl+IZuBGEa9grvb5yF+5Wh2Ws3OJdF\n+47HWDU6YmzsUAfGSSnsz4YyU/Hz5RoTj82iDU2x3wsM7vWblkmt7H/rMuYw\n+AlKTWysOs7Y1BvEki2A2c7QclcqnepsSVk2qZ+NlRfI/ZBEWsxswauICVy2\n/cDDN7kWmZlqr1T0+Y8yFaf7y0T/mk11pIoaDwDYO/h9cpIyNKB1yWcPu4OX\nMu8nEFvc2vRPoCJzH85Jyrn2HwdsGsplkCqwBhTlwUDAdw5loXFHE7L7AA7i\npB+o8u+pXHtfQ4tf2VFMYr/XhFI5khc/im+C2Glru8cJlhphm87yIWWayaO2\nfMWRf0o/myKeX4trgpNnBPPGuijVUjzq+7wLPUi5+QdB0YjbZVqwyXwLKdnG\naMoN\r\n=6qDs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.14_1585897715783_0.35052094021126323","host":"s3://npm-registry-packages"}},"1.0.0-alpha.15":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.15","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.15","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d092cfcc009ab8e47aecf5a7b5a2880692d9f0c5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.15.tgz","fileCount":304,"integrity":"sha512-A2CtsOuMgokicNpEbydUdPAjnpWIhptx2O6Ea13YdCnT/1h2wDhlKU7q7XMA290Z3EOGbaJlLWcXcHVCJ6w1Rg==","signatures":[{"sig":"MEUCIGqLdp/DYnCI3h6nm/SDtMAVDtAU0w75KUrnObcLMUp8AiEA0kqUV2GgCyN9GedgDjKjndF+ZWh8JAKff7+7EkI4Lqs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1408191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejd4NCRA9TVsSAnZWagAAvpsQAIMB1UzGYSzVZO6FhalQ\nko2T4o4e+uysnnOIuvaCahvoRNuQTBcDQoiHAqgJZYZci/FNs++Nqncf5qGU\nDiQYtDbzXoVnPatKBPlMrt58gazlLvR1MX8ss0a3s6hRWurWRVXzy86LfP73\ng1jh1PaKvS/ZcZrbv6aINl7I1SJ7um0L8UGYcRHxJbiAzNZWWmnc67QaABqD\nHBR+8hjHhTu+1kovRBQ+f02ACdnvWx2Tqm5U9T5FMyJCTNZYYCCB4BtiNihb\nXTC5bzz/xh/Ukq99QCGRLkcm6wxaHodY3QJ6xkpUiBlCeeGqOCMgg0j6zgsS\nOLV/KDkFY0mIgtb7hUJ7qHSYFkdjuYg1LHHCW5/TFUS8WEqlx9IIyhqSGOX8\nP58wRgavS8TJt2VyP5heIy4GyXQYN+jJQLgXcGAlW160NeLARIqU0rrEbkkW\nT9h7sPW5SxIKQK2ChtAuCgT3W9nt7al9a1JJGf1RTdfBHR8q2bxVkR2WQiyj\nHn3iCKjQBB6cpxa81w6nx7Q1kyzV8+A8goOsWa2VgE2LmDy+gw+CLBa8QLKC\niJqq1umxPQ2GaMbhnSmRLgVArzvTFK9+Js2qrlMhfz6mSP57XQGeGCkm10M/\nVTb8qkv2+6hgB0w10U3DJgWFM6acUViAIPoWdstdwc2U2ytf530vp5sxRBie\nG1Hr\r\n=Ht4q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.15_1586355724705_0.3844267574860185","host":"s3://npm-registry-packages"}},"1.0.0-beta.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.3","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"317ed7d3e7733c730eba1d752d8402763b18165b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.3.tgz","fileCount":304,"integrity":"sha512-lyRzhtDT1Ew/YLuAvzzrSDtxSn8hUvHK1jbyjcFXKUrxoHt2+7lpXBJlaqJhJ9TZEYXISBZx0tONx/b/XNE3TQ==","signatures":[{"sig":"MEUCIAeCyI4FS90YxA4iXPcKXqbn9viZOIBNUsCb/qMEKFWoAiEA5zrHtvs72ONHj/veM+w6BgsL5PnaL4FBMnXI4ylQKdc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1408188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejd7SCRA9TVsSAnZWagAAnkkP/1W1XLheN5qg/sgqoy9e\nkbhubA4YDw7bjwE7g3SKhrowNr4ECqvlx3mFDDnz2TGoaHdmsmqMuy69vHdN\nsA+E+I8ZLNIgEQXMM3BGqqJZHjabJrA3eFEZ+ZtSX3pphJ9FZoC2LeOAhxr+\nigKIq5iUcdCGMrGgh9jV7yHFT4u3aPgom2eRGCPqGRumHr1PCw4Dv41udSrJ\nnhks8YCaC/TZg1IswUKjtdu7mWRLa1a5tzCFaYuZ5zIu7HfhrtH0m7pEZcpQ\nm55oMITxhiDCqNXT3TC2fBO8iNAnHri98tTHbs3c8zF5XSXCRKdGj4IhDlGJ\nLckwb/K6FLtivAQcM1yuBTsMtgx8Ci7rYCzqgRCAoKJS86w3maI5VWXuyZZC\n1WE/CSLaPJ+tLgKOSUt8J2uOspEni2glcfJaBZ8S6QRosbnl2LwySknyabWY\njomKAVlIOORRKqymdRCmB2uXfnN2EWojy+iphrojIBt1fM7g4KtZvrkVpaBL\ng3FBT5llbOPkMP9FoItUd6WfJ+b285eK3uRG7EDBdYT05huVlOKbmEOMyZh8\nGU9TcWeOkX6BIirBp1VG6n04byeaYDEQnTUYjlalvyw0PE1M93zvLWhra96r\n+ccAuyKLi6MYkifxWbZGRodxc4EUwjfEbHnvNlSm9rxK34DA1ik5evNyNDoG\nrHPK\r\n=ODtG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.13.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.3_1586355922277_0.06265169385809144","host":"s3://npm-registry-packages"}},"1.0.0-feature-d221d5-k92u6uyc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d221d5-k92u6uyc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d221d5-k92u6uyc","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4e885684c4ca47a01712f08b28eb77e47ce2e853","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d221d5-k92u6uyc.tgz","fileCount":304,"integrity":"sha512-dzX49P843ntyDT6N1guDROvySaHyDtWGfi+5lcUr4s6/Y4QFxE7QXWd5p3z9Cd0sk82g0uXdEtsNugESG4e1ew==","signatures":[{"sig":"MEUCIQD2hqv7K1ttVBD7fhOgcs+jfRXgyxjn8oErRxR0uNgTkgIgMdLP7Mb5TI6k3q7z29kbCMD4kFsrTkQ20LcnLVNKjU8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1406333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemGZlCRA9TVsSAnZWagAA9GsP/A3xgwnbGh9Qgl1elu1Q\nxieNZXoXYyMMcfEtzFR7GQ0aoNKhMUVpBd2sr0WeEqlmJrozxmava7nuC97E\nuSa7ClP7+oKLRTtgFZc9/jTSs6fQPNFD0LV7IwwVQDE1ep9nZYdyXmCAomg0\nql5UAtW2yyhjm0agIyinxtmJW5lWWpf8Tld1GLQwN2Vl+5WOvJuh06ap8haz\n+m/QDMeVLFJqW4CQKlXKOF8t/r/5eL7svIinsKGG59LCM60HiK3dD89kjwGM\nhVsS/DBq4H3alenwgo+CBBIIYqqSS/Bz8zJCknYnEX29Jb6TaZcTdW0ESmhQ\nmc0vk30tiaB73JDNFE+89or4/M4VBVFJQgWqaPnlmOzRBwd8qg2Y9CfBZdhh\nKtLUslTtWpoTGW8yvXEJaozfTfUKMOMHWjquLMvG1HhEfs/cU93/Cc858LFh\nThPk+d6quopLBdkbYGIeOg/AikNL7Wosged4DyhpFRSqZXJ2OF+8MoV+Sd3T\nhpPqEu1CJqGkQ0oWz/ixF4rY1VSqZzJt3jIEUJBIkKHML3FqkcNlADewKxX9\nHpTuvyA+VlhiPb2fK/vlACX1MAUGGpBbjf04EJuddb+tDgk+7LHEI+JKIpeg\n5H3gtNHmq7OrGbBYykY6OxSS8lPiWMwnh1Xj2M7k2kqrPOM7jwuOcapMSacq\nQUT5\r\n=rNwT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","should":"13.2.3","bluebird":"3.5.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.12.0","loggerhythm":"3.0.3","@types/clone":"0.1.30","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"1.0.0","@atlas-engine/error_provider":"1.0.0","@atlas-engine/timing.contracts":"1.0.0","@atlas-engine/process_model_parser":"1.0.0","@atlas-engine/core_domain.contracts":"feature~pin_dependencies"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"5.0.1","mocha":"6.0.0","eslint":"6.6.0","ts-mocha":"6.0.0","typescript":"3.7.2","@types/node":"12.11.7","@types/mocha":"5.2.6","@types/express":"4.16.0","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"3.0.0","@atlas-engine/eslint-config":"1.0.0","@atlas-engine/process_model":"1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d221d5-k92u6uyc_1587045988337_0.599788608866348","host":"s3://npm-registry-packages"}},"1.0.0-feature-d221d5-k940b408":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d221d5-k940b408","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d221d5-k940b408","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"e9a7ed0e6575a3cd603fca6b4eaf0cb6dd3e8e7f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d221d5-k940b408.tgz","fileCount":304,"integrity":"sha512-U3ufnVYED0m8l6aVqxbYBZAHLEydM29bNDlq2RUJU0RY7dL7wUoNOWOBZy7+OT0KYRxXi9buZ1kf02imUXTvLQ==","signatures":[{"sig":"MEQCIBdeaJAzK0VGEMW6bt53X5InprNiNU8B64xr0bVGlp/bAiBO0K7WwTaKMicWk9KI7/WegPz2ZoJjnpTvxmSlFkc7oA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1406333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemXq1CRA9TVsSAnZWagAAFaIP/A4WQDp68ncIrGyobQO/\naoo/PJ/KjFpc1DPrKZ9Ysskn+ZHefxEexX8d7a/+iADTtphlBcn/udDUNB9c\n2NeiXYQzZVMiKF4RCpJEnfMuMPh3FrJvISynRNuRa2YbiSnBUKGsKUZn8fKC\n5y365x3vCW5Vrl7TskjAhLZjYETt2eipH53LJ4DN241gsWSLRH0Jl31iH1wK\npLbk84JHVouwNK2jSWwG7vv8urawMN72dy51O/Qjwibj+HZ/9kdCiOJrbXVc\n6dGcXko8pLHxeyeKSyNFuuhV3pDTyzmEDpAy5J1TFsa21mcuqwuYqT581/IL\nV/a5cpMf0rMyqNG5ufsn/MdOe5oTuVH1IaN/idvAS/VeyiobZJgmW6tMGeE2\nXI/df/FIgZ7RS6HfHC7Om3sc12Z5ORdHS0y+BX/DSZuDRYnUUplEGbnnzMb2\nit0sdMWhxonjDjduZ0NIJdNkKAVQAvd9rq2QNV7WtWRpXcJWU01vObYWNYPV\nbgKj313eVdAqNQSwESggixFi4YpBwnamTRNhUCYMssxxpLedbVRueGWvm0RS\nfPh0sDEs2zL3Y89StzwLk5Yn0yG7ZGRywT0QPbXs+DJc2nZHHaE9jymjuWZU\nUATpHYyB70BiVJJ50g61zfrx3vrLdF4rDOhN7GZhJVbcZPEx2/YFYFfo1NBx\n5bgw\r\n=7zI1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","should":"13.2.3","bluebird":"3.5.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.12.0","loggerhythm":"3.0.3","@types/clone":"0.1.30","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"1.0.0","@atlas-engine/error_provider":"1.0.0","@atlas-engine/timing.contracts":"1.0.0","@atlas-engine/process_model_parser":"1.0.0","@atlas-engine/core_domain.contracts":"feature~pin_dependencies"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"5.0.1","mocha":"6.0.0","eslint":"6.6.0","ts-mocha":"6.0.0","typescript":"3.7.2","@types/node":"12.11.7","@types/mocha":"5.2.6","@types/express":"4.16.0","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"3.0.0","@atlas-engine/eslint-config":"1.0.0","@atlas-engine/process_model":"1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d221d5-k940b408_1587116725274_0.6346819931544094","host":"s3://npm-registry-packages"}},"1.0.0-feature-9887ed-k949ajx6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-9887ed-k949ajx6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-9887ed-k949ajx6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"375423f2abc48e60533e9f57b810e425e711b4bf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-9887ed-k949ajx6.tgz","fileCount":304,"integrity":"sha512-d3wo0GcwF8IepoFzIYwAz5cn0Rn6dnwetoSdbSWaeldc9ax16/A4NpRYWjxXDH6o0TYGEUmKm2empGqycmGlgw==","signatures":[{"sig":"MEUCICpRJJ4WV5kTODLuYLgcTbMHcC6nrdVWPq+1eRD6ZNYdAiEA2xkfmt5CTBWJDh334FoZIJV2YiahnUZR7QovqBvZOUw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1412873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJembWuCRA9TVsSAnZWagAA5SAP/iKr8hp/zHCVqdWiWvoZ\n21MXagy+ZXa21z8n4ev1C568HUoaFevxuq7KLgRTkxIhwE/6ZGITtp66t/tH\n4qTLBeoJfH5KzrCT6bvqHBXFVX8VsyvoRs1u+4/RHS7bu6d2+1Sic3B8Y2KD\ndAd5C1C96Fipaju2fmN6b+2gybPjEf9lRfWVgrENNCw/xxlbYd1kI9pa/puV\n6jrUUS42k+GmaC1YcwAuCZy3kX55qCgnoni/yZJuf13BK+q3icBaZVphM8TJ\nDXVtm8eNr+xXEFXd6SFgumXKiCgvvToTpStVgS0XUhbuwOWno0R4BoJe7wy9\n1yNcPpIIHibnsmJQKDCHV9Pu1dQVaZiuRV1kSQKtm6548wBuol0cdcjfLqOe\nET3aeeowvkdWJrWaX8Jaimq83nJ9jDVuDOE4r733NvnEQgdZrrS8hN7w3pnt\n1QCI4MdY6T3qxK7G43TpkR94PLgvdQtuUNYDC75+9S6Y/yYj/zdXfjp3LJVa\nOrJ6JGnrn7VZXbjki4GKKBR5auaEn8l88ydEA6tSVDsaFISHQWWQ91SQcgqS\nx12sdyBznl/DrmoBCpxoDAzy3g1c+3L/yNUvYVSV6yGJXxuKim60xHZVlQt2\n+M9pIzZjSEKCgBo50KebRGVY2xUeJeUXq0jdk+wQjtF3IUOCFN0PZgzVi/It\nJ24s\r\n=A5B/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-9887ed-k949ajx6_1587131821794_0.6805202769711498","host":"s3://npm-registry-packages"}},"1.0.0-feature-7eaab4-k94ah0x9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-7eaab4-k94ah0x9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-7eaab4-k94ah0x9","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4d389bbfff9447fb8fe6699abdf0a5c37afa2d31","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-7eaab4-k94ah0x9.tgz","fileCount":304,"integrity":"sha512-kzwm4noS5g5gHM80bmPhXvpbapSeu2HNW7XrV/kdN/Ue3JmkQpQhPba6b96rdBoo2/H65T8XhkQJmEGYUL6N9w==","signatures":[{"sig":"MEUCIChRNX0xwfDexfZKPI7Fq6IIjbnqo2rcs+EMOUFboaMrAiEAnnj2hNpKIHjA9d9XGtchP9Woc89KCSkp5oc18+lD6DM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1413290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemb1rCRA9TVsSAnZWagAAK6YP/Aqp9oQOTemzl6XPt6HZ\nTQFIWpFLsDWmNdzP+S3znyxSCO98Y+qif3hES+H5aTsHB4Q5C5y96qguBkPX\nkh8GpGYB4M0YzmosqCGgaeSlWuds4vYFtFq5zoTkw6GVG40XaGKPbjQUnBOu\nteM+xvK3sTwQsbmqdrdXuBYt61fwoVp6v0eW1PtxVL0obuXiAQWTpRHRcFXe\nntctz6R6ILmblvxeDmYmJtgD8MuQzFbYVbl7GCGGzYkPPKelz6aoD06GCyqE\nLCfsbyQKvbMMK+cCAsgVHItfjefrbYHi/ftgXr2ltUOQ6czY4zuV8YIBsxI7\nKtwDZ3oxjrSrPSOXuXZF2NKNMYki3bq+UUzrp/qkZXS38MiEFsLlLp4i2FDu\nG3Hgho3VkQSalD6DnIxgivsQHnoUWOo2uTBDCRu6p7+xI/gYiv15DJMhMvLi\n11Jkg5idMnJP7h0maarRc4sluvOIEY5BHAEMp8gqWbgPs4bctrC4tcpchF08\nlxni6674z7cJRkJ5hy53E+WbjD+Jb1DlXffTOAVv1Q1Fc08q0jvQ6WIvueZ/\nG7p6mtGLm5HwmhHtvWoeAFsHpmqnn9LsS+BugIZOpNskii7f50IFVZjQ52EY\nfnfKelzSR/McESEPacMtw6lpE4jbRMIkb7zgGanrilh9inRJo5lQK6i+LNIJ\nh/td\r\n=JLWn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-7eaab4-k94ah0x9_1587133802865_0.2534111501029428","host":"s3://npm-registry-packages"}},"1.0.0-feature-69c1f7-k94anj5x":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-69c1f7-k94anj5x","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-69c1f7-k94anj5x","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bf60d8451615cbbf47fae9eed324905376796697","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-69c1f7-k94anj5x.tgz","fileCount":304,"integrity":"sha512-CcBh9/WM6Aw9KWA69QzS4GiJYKDxzZ4sPImTUW5I/SZlXE25b/+LXUEZHlrzcGGs/O0pussFtQkxwnpl6Dv9vg==","signatures":[{"sig":"MEYCIQCmNTerr+B1hbA2sfeEEas4Vvq1dHd/GIWibNBh2PHrYgIhAPkw5mc2fFSLLtI0gmAC2UoKDJIJv+d30Wa7PLT4vq/j","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1413605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemb6WCRA9TVsSAnZWagAA6LMP/2Pzb9IKUKDTSSIVTVhD\ns5RyOi2C6pz2k1uZT0oQZMk/wsd114kFYGf6i0AnBxHCSzcKmLStirBG7BkW\nT4UEbQi4P6RIIbTmQ9Y7D5x507YPbpjcdRkXtNF9C7Nc9C49Ey/SgNgJorMQ\nd+ekzb6W0CeVNP6G94Zw3dx/1zw4ySVeIh8FurLyUfzOjt6M0s75ab/wi8ww\nInOpz7vW7um05YvkA4Qxt+WQKZc24jFaU3mWC5S57RZhcONDion2qpjtmMBs\nQ+SStApPPSHnuxMpFEy1WUinewQEXl+HlyhMcMJt7uZk0aNKECfpqHmt6T/2\nERIt3FWZYbWP/3g+H76ke27qqxS/zYdUrevsUl96643uiJoKNBT/ckt1Hcph\n48JvAtF2gbP5Aq+QCOcx3WDO/e7qeYK0YQrVCSL4Ct+KDevVh8BwWzECSGaW\nVsU1TgIyDpPw3ObWbAqD6CzdlGN/h47FEGkZ8vRzjLKHYYp740Et0v36dCzo\nDMlVAWCVcC7vXiETfcZnMxZkaik0x7yqAEEoMGZPGc4OaomjxWJpvTWxj7aI\nQrT2lm3Z4j1ztvvwvsUbru3bISH7Yw895mxKGpDqZaz8Bny/dTRuWiS+ZQ7H\nuuo9H3pLp0zm+y/1WRMWgD/0qmbLQ4+1QOHs1WjwJKIggr+MB6C1n4hcSGup\nqCYQ\r\n=d3aO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-69c1f7-k94anj5x_1587134101749_0.9291096805407344","host":"s3://npm-registry-packages"}},"1.0.0-feature-97a8d9-k94bqlb3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-97a8d9-k94bqlb3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-97a8d9-k94bqlb3","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"88e5a268b69fce5fb19227b6411d9fd9d5ba32e5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-97a8d9-k94bqlb3.tgz","fileCount":304,"integrity":"sha512-1d1VGQxexRE5uV/Fgiu0O07dF/k3pOIRMepspum7n6xgorYT8cKreqz58WhEGHRHTrmppbTQwTt2G7gIc9GrzA==","signatures":[{"sig":"MEUCIGtqYhgnYPDXs9jf+vlVnGvUfx8sbx4smfVk+NziGcNLAiEAn7iExCyj//LcG01kBmHMd1uVkOqYSB612NzvhAr/AjE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1414939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemcW5CRA9TVsSAnZWagAAxpAP/jAOUvAySOohDm1WIRuB\nZ2Qg5z2CKXG/a0Yq9rdpDzWLsIfdWmxn8Nyyr0QXxBpPuLS1I5YbMFz8YmfG\nANZEL5vkPl7yMZ5i9Eo2oMl7k5uHaXgtw3NktMWd6W0cU7WOuPetFXl8Z9tM\nJjsyiWHKMkuD1uHKRpOjh727QCU+D6Q5CyIexNTwLYBAM8XIlGBqKEEoapzq\nHhV3IgAsIcAE6lt4ghbvGNM+SwETBTe2iDFMJOZelLPJNzNVaJb8HixrNGwF\nmwqZeGAJvFmTli0NGIHPziENZS8oT/YiS1sZIhs21ovEXPNZF+pYNL1UiQjl\nsvIsp+kHwgn5eDok75TMDQ8zAmgGS/12g3DpBfr9QYdw2MbbMP0gnv3wfysI\nADmRQ6SM/NXY0X2M38PhmLydX1X5cuaVP3mHOlvoDo9FJpxnK6rx2GLjsVm/\nvgwMuhXk9tOrSlAvfoYzKA5bvCErDhmmMge6iiy8uUJSpqCCnZeacT0Ak4PC\nX6e6e6wrApLuU29epd05nhX2Lj9jxs2fdY3vhyMHeVQx9nZieEk/PgZnbw4N\nRNfSxjGFnakT12sgDRuvvGtuUVnB3+FBMzxfnQLh7tLM6ZilzIreH2PhnpON\nGon8qVN8T2xnLr7dbR9LgvUslJXKL0b6wGKktnE/FP5EB+xqDVewD0NuPuSd\nLkAj\r\n=iuAR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-97a8d9-k94bqlb3_1587135928443_0.5855990684109973","host":"s3://npm-registry-packages"}},"1.0.0-feature-e13bc3-k94c9h2b":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e13bc3-k94c9h2b","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e13bc3-k94c9h2b","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"70f9b1234addc5cfbbd84e8948c269be6b71d4b1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e13bc3-k94c9h2b.tgz","fileCount":304,"integrity":"sha512-FkRjO8lifvaQueA/RL2TDyy/KmndCatKvCEA19escdfsdMyeMqbbJMj1MJovcohDNUqBB3tLbwDUvdawOIeZpw==","signatures":[{"sig":"MEQCIAPt5m/NszXX4J5npai87hFYkZvLVMR9v7PQCxmE5wDvAiByP+sUOyWpvcsmr7xJazmm1/0GJA9Wt+QdKm856Elysg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1415821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemckqCRA9TVsSAnZWagAAgFEP/1gY++BCqEB2dBm5aUqM\nhcuivgR0KdW8r7vSts0ddFSR3MuGOvVUfau4tYHCim6T5uleD0K17pKyv5O7\nm+2A5E2S3eXZFla3gvSLOiX3GHKu8EmRaQOjl/mGFHEuPsuf4KYjjYw7ur8O\nD3tCm0VPCILjzZapFBX/Z/GyC8Nbi839U3E+5rn0mgm8c8UKBbzIZ56bAf+l\nx7CqGyHeckpoUXGxZw0NYFUr2anfTqmvguZqkDflDF1Qc5uwTyJ/TupqBDeA\nyq0L8Zkz1+rjtM4lxCp7isCpasKnpeC5rHJEvrorIw+EcyuByi/ytGL7puZO\n5agSZDEyESidnbHTuNPLg9UJ3DSfbFGaAkhGbo0RnlpZrzBQj81DVxgV7FIm\nfjepd9Bi+jQiVbNBMAveG4WRhBEYV9PLnkpQcczerUsR6RbOcp73/NZr35RC\nY1lZKclMnSk58deHmecEJPUhJQA+rqJC9wsO0KfBMb3CWBex45pfDfkzlQrk\nZD/VeiHrtKMD90musspLEo+CeNKJGqCbdQQ5+usXUP9A/jc8GBKarTtt7rxZ\nCvOMAejlMYP4TwYHbeDy8ygSD6K8zBjl5Q4tlluT9XmhXBc1FBeZBiWVQEmE\nyfXvbrw1tf1Zn3i9Ja+NjGilHbEcauMYpoYo9FZFnruxvsDkirgvdAA7VsQc\n7TdD\r\n=9lz+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e13bc3-k94c9h2b_1587136810128_0.6154027542593183","host":"s3://npm-registry-packages"}},"1.0.0-feature-317514-k94ct984":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-317514-k94ct984","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-317514-k94ct984","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9f9a79cec633eabaef2796d84a096fe785caa8ba","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-317514-k94ct984.tgz","fileCount":304,"integrity":"sha512-F1aQN6320gUYesNk8wnb9MdG3nY0SJMy2zfSHGNyoi/hddjGGVHDUQ3R8KdKtwt9Qxk47FdK8QI2B4gKDRy2+A==","signatures":[{"sig":"MEUCIFqYoiaYSOIIa/v2RjlQBHINVfrdBUJws8VV/V85//xdAiEAv5sT6vJA59ndolgThVqjuB051GJ/zrc0BP8h1LY5rMU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1417907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemczECRA9TVsSAnZWagAAkRUQAIGNyRWaVPCoJQFmy/ip\naRcWYyBXb0Juhg7BYVEAttAqgbMu8gDviG0gnc4GknqIubqSdQT1+Hq650KF\nGoufDNzOSg04xzFxIg/Jl49UCVQzJ38FX3VJ8UDlonBH5Y/4BemgeCftFnYZ\ndHRCeGeQQBYWL767sjdbYVj+FUPkf1dFvWslxSjfliagYZAPEn8VRrpCiJN3\nCTxMpt/H3lknHdrflR+AN1UOCaRRfF+gT7jBbS2v9dTf/9IaMOvWJZJ2ZLvz\niqUMl/kMqCMNBKBsOuwvbmhpB/b+ZarjTKkU7gbKqRftacBJjNE8GqbitJOM\nlhapZnvzotJwpZVvmO3LAoO1cWJhdX6rkXMAO6ZdM6bQMLCX/yIvvUNDRIIt\nkVdCJiGI+/ODVKaLmu6ClYxdASXfooON9SqyeZoVgiMApFguRX3vVY7sATjV\nda4RzfI3XzLUvsUfIZ3W+DeMBQBtXbMVSVAWoBOdNuQ76GbdOW+ZQCzEqOHj\naeZgSZ+05LL5MChERkVuFSm6sqM+dyR8RHf+nF0ic2WzolINFs5P83nv9N5n\nVmfErWDP7lptLrA+mx36fKlRmgQSf1Sm1u8m7ydA4N9B+VpiNNCzNpncd+rD\nVI2mkDUSVSZZ11C9Rk6QEdKMiqbqZnIUZ4Tf7xgX53P6sgB3jTEYMuZHDeRK\n+Orq\r\n=Tygf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-317514-k94ct984_1587137731771_0.2262731200489132","host":"s3://npm-registry-packages"}},"1.0.0-feature-2d4fd4-k94dd8dr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-2d4fd4-k94dd8dr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-2d4fd4-k94dd8dr","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a0341a0f3abd15c57ddb801b4dc35bd09748d3cf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-2d4fd4-k94dd8dr.tgz","fileCount":304,"integrity":"sha512-OLS0u+fP8FRo0bBYH4MVJPPtTtXutSedXNPFN7efqJ1Rg/DvfRHZjPdscM+zSwRcfjQBY9Vi8idS08CNvshAHg==","signatures":[{"sig":"MEQCIAcqSOYBKRpi0AWArOFISSsaWWnQJ34vZiVR2CYQu//ZAiA4iIG6kIninJMfmF0NogIs65L0+k9yckCIlnb677bghA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1419361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemdBmCRA9TVsSAnZWagAAWXEQAIO/Ej+EVKKPmdQKuPCE\nDbWzP8UqQwmrJgvI/N8h8D4/+C8Zjae6az9vlT91XXx5i0aLnLljxHuQ7TLS\naQxNUW1+s1Tdt6077w80T4B4Ii2aomNQTly7kU151noNFwVyCzt6qInUnn8g\nDhcPZBSd+cZocwNDiegjCW8KI+tlJrLmRvKT2g8AolrDQjdJtW+BC276YG+H\nOGTHLgC55oXll2JE0zI/J7klzBQCwAZWpmlIFahCXvp6SDxpfSoLm+eYu35U\nkxK9ULzVTKM/Q/MgRgyyhBB8aQHTNKcaHaSuq/JnWk6Q86oJeltk56++YLeK\nICqQjm6gzcncjEeJMcn251FCLVA5GxYrCEZz3yhSyg7XWHhiPZjiW9PeFWcW\nbMLVtf3fYlhLNJ/oPWtdI2L8FkQNFu0Bx0vxI+l4wWo5htyIoEa2cv+v1WHo\nAo3S50z0N0MEITBuytPCA0FIr63RkCpum0COWvLP7qVlPQQQ4nq8PJBoXIss\noPfd9hpy9oeURUT96N3dynaHAaVDIyBRmchxt4TAuqWKDzHNPQ0PfsNDx9kq\n3iSH7qQh+5C8YLMyKSh7g6L01sW3k6XX4UfmfmBhKYm6h/jfibWaWMMlVlGX\nrvQb3RtOIpYzVu9UbG7C+Y6j/1S4xpF+bnfdGtCmUAT6um4H2VEtD5t9GAh7\ngqy0\r\n=HRrx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-2d4fd4-k94dd8dr_1587138662416_0.5435667515747085","host":"s3://npm-registry-packages"}},"1.0.0-feature-452d30-k94duyvx":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-452d30-k94duyvx","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-452d30-k94duyvx","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d6f4eefcc6c0436fc541338385612d2851c70540","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-452d30-k94duyvx.tgz","fileCount":304,"integrity":"sha512-VyG+Ehl9eHECLVHPpL0DzakyAbGRiAUZXAL7SRP3Uk7MsI01v0eBZ09iYoemT5aPqZ3Ru4BIyhR7eSsO1tza8Q==","signatures":[{"sig":"MEUCIBrlCl96wDXEE0q/6eDu6i8FBH6Ycr9LH/B7Cqoro8QUAiEAwvCwcJGBnoHYjcvNO4rV56o8G5hHEvM4q2Ak4EGhzCw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1420693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemdOkCRA9TVsSAnZWagAA2CQP/3AmGHtp20OMp6PHN6o6\nLXGmm0Kf7CR/ckJi7hd25Zfn4l/QOdfCIEiB0tpxdmJ8ehZgfgCpjuBI2qpq\nHwESp1FEyInDDTz4WvBpYtiytBIH6M8g9yIX93Mj5w1jvDHTCGfYIEsYytd2\nfiAqFtGKqSrRwUmAZ15TEwBqgdDQlipJQusBNpJ0uqCvrNVwLU0C1eK+dQBw\n+I+ktmayoKGduSGMAq6tHzb5pnlh4LAstOqQDdMWwzay6fai8Lmn57vpSacB\naI1RVotsmY/4UJnvGw6aY5olQyYRBGizIE5fU2ccuV4te1TmjlpzB4DSD7Qh\nqrt6JANWxcT8RoIjmT3+1rFsIQy+b4q+I5vaMYTGeLDzcqxmS84Lh+lTsM1u\nwkGUiBu2VGKnQqqiD8b3gfv1o0MJcSisbd7ZJ4HfgsjGkEEkOxrdFoawzG6m\nxndfMt6iGUewqg80UiYbHLDxd0ziLtxl3z8F66KKUU9dQ/CrmJBZGh7xkZ61\npMCMMeHJBHO3kxD3msQ8DKoFSUiBR4p2GvVhIg+pfGzw/u/wfF96JUvu46Ws\nKbAg97/tN7oFTqbR/Y1DoYnd5xP1BQ6exJ+umwaFSAZreuSBbdGn1SBQqdFj\nRheJ33JNPZYiZrjAmALvv+sixzlEUdHAy7e3URM6QWTbNHtnui7VwKPRLtYe\nvP7c\r\n=Mj2a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-452d30-k94duyvx_1587139491780_0.048430600603765805","host":"s3://npm-registry-packages"}},"1.0.0-feature-d667d3-k94dxbt4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d667d3-k94dxbt4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d667d3-k94dxbt4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a5ff8c6ab0514738a943a1e5b35cae65146e2159","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d667d3-k94dxbt4.tgz","fileCount":304,"integrity":"sha512-UBkU0Va4N93MYQLO4M7MJkDkRpymX6XgofIqJkLBCpYPo9PMf9E0BLMhiTcObhP99/1GspAqN9nStphnKQdoPw==","signatures":[{"sig":"MEUCIQD1rIXQPfu/mUkkk5V+pz4Z9fsszRWIDSQ/nnvxW7rdtAIgegXJwRvUkBYLTjZg7h3PO4uSmR4TfwkgvVFpEsC3/ZA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1421177,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemdQVCRA9TVsSAnZWagAAdZgP/jsFJp+EZSBkmqPA7EsT\nBa7yrrZRZ8NANE+S4Euf/9Wa4LsAblehOxOgnDOeEpI6LPSPO9e6A0Y+YLSs\nkclyZvmx89nFefVlIILgWNe2uvGEWdMSLBh13jhDlCtVQl60tHAkzks7L6kr\nkC+YzV5asO4fa+I0NN78yp98AXLaAN4gvrJ0Oir32nn1W8I8k/IFwb8ozOM3\ngYoTmpUD0oUTMPPwRE2+Gbpp7NVbl79nhaZcP2bstdbe8C69hENsqiWUBei4\nS0wXlHLlpBzx6J6Jqk3F0dOQgW2ZxvI0PK/AqbawUFFcjnLQ+eazZSQmcp5t\n7qmkX6UcJMK882rd2dmZ6LCzOaMLUanERW0wTto8+nKSvlaK/uc3C91336cR\n1ppgVGde5KoEvnrcAuuCTxzLC8jqb1IEWEUBNdMEabn29AfsL6OtjCaVWcgv\nDJjX4YH79wbPoeyAS8m2Wrz/9pkhKjMyUFxHTGb4tdPw/CH+Vmntq55wXitO\ncHu2DN4PeNmHIyDHQmzgHoJgtk5oPvglgBJq+Ii6xtLIRA6OlMh7QTPsLU9+\n/NvACGs1e1eTSeMXqTMtdNbr9+6nOoR6z8lrXGFd3ezy933EJvhxA80GEdUY\nROZdB/cG9R017Kvhlga7U4oEXauaie58yss2g59SCf4BttzUNuQPEwXlFoI9\nL6OB\r\n=RSoq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d667d3-k94dxbt4_1587139604599_0.31173069773479","host":"s3://npm-registry-packages"}},"1.0.0-feature-9fe6a1-k94evmll":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-9fe6a1-k94evmll","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-9fe6a1-k94evmll","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"eb6e737b54b188d19e0532c8ec2d14be86d9ec21","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-9fe6a1-k94evmll.tgz","fileCount":304,"integrity":"sha512-AF5vnFtc9VbW6I7BMH9GWQyXj/AmZr1i7DzCyQegcBuo3kRZilii4t5BhypXHfwsYknbwAlf0bocUKE+oEIYQw==","signatures":[{"sig":"MEUCICUaHbhw/rOoPfXJw9cpxPdVLcYGruqb0fuzZ0saGX0qAiEAm66CEhqatP3Pme4WVarW+UMQTwhZfEd+yMBxw5Aiydg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1422676,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemdpQCRA9TVsSAnZWagAArqkP/2YyxhkQ8fh5/oOhVHUm\nyS4SPlBn2uKvwWJ6+3/MJF6vHyWgpovhGnNEog2qArQX2//ObZWcIQHRHreY\npTvsccOWFtY9ieDAFt4e50s/3rxmhupauJ+oT813qnKy6+1jT2vFwKwlOCBD\n2pzCVjdVx3C/I7Cm858WcKSNOuumJaSYyf5YD9mln2Yy0iD6KaBdwLoMKpzC\nNz/cxFDZjgvu9FLDfn/6bi9q9vt0RV7akVjhYBacKb9xbhp/AqX4HpVpMtZF\nK9UO24QilIAO2j6S5pRdSSWs8iUvZkiU53GVFStUMXvD7tB17FsSbz5ZmpNf\n+370y2p0nbWyc2kaEOpCSyUOFNH1pGgRKaqgHMez5kxryfDb7lBJPizL0xtD\nht9aoOjMNDhwLiy3dU81MstuSn1jM6Q+zp/LH0oHrOv5PKbqhBV6bb1dYzmn\neKhp1LQReHiKxMcWlwleHrCv2xS7wG8AGJNDToZDb+AhnRT+IQI3pkch22T2\nJp3VX0b3MS+9/0C0+sMJP03IGlHV8S1VPk4lOX9JtaxZI0BJgNZz9g1b7QrV\n6Z7PKrgWx8maVJCm5YJFPXpWobL7BwL71uCPELjb/jXs2R9KI6Tl34j4H6mn\n70baSjJuFufhAWkndQSUw0VhVTT/e/bW5wXgBXuezL0Yhx0XW3/dBp7c0rii\nS85H\r\n=4ugH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-9fe6a1-k94evmll_1587141199999_0.3352468700193898","host":"s3://npm-registry-packages"}},"1.0.0-feature-ce4697-k988kx54":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-ce4697-k988kx54","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-ce4697-k988kx54","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1c6ee4d470622d6a84342ec5e9d46f803f405600","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-ce4697-k988kx54.tgz","fileCount":304,"integrity":"sha512-tA0WU6b6+j2fq6d6RDSHC24MYyp4PiZpB9Iww03/Up39Njbraa32JPT90NB2aKMhAu0JtUFn9XFjHG56X0QAZA==","signatures":[{"sig":"MEQCIDsGB5Zb796Z+KwthMo+kr5v3X3FnpJ2Xl0aBZreqGdbAiBDAnzF4ZYxfrDT6IMwX4O6jwmgasMC4oYYiwryJjZyXw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1416285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenWHJCRA9TVsSAnZWagAA1eIP/iWHKD7zCz/61b+ICyzr\n/B+iHHbC3q7IUVeXVSnqe7zh5CYdZyCKtR+MJNXj2eL0ZC6oRViessjaIYMx\ncxKuAvZU/hFfC8spLSxC0tfHXh0I7iF3Dz1p3nTDs/49dKggUgsSoFXF15P3\ntTkXf+J6hQ7Ozin50utmRi6IbOzWM/NopTEhq0a9Qwkfc3IWo9Zkoyo/YpnL\nEGwNfLXzZ9Aa5CI7ScUxwQSQHpaRxLLTbNlkEzWtaizAa5hO5cbXxp17OJQA\nguXtBz2qdqLKr9rpxDyoBYev1IoN8UEA5tEzRzyoVJwmUEBSR67ARG4Rreau\nXJ4Y+jTSkjFo0Yqu4+UtBAWstxOqk5B9x7xyA4OUsONVbqrFuxTjvH6Ql7nV\nu1BbUONQLkribj0J4+SJe/npclc1J7LF95zjx+APeu4tus1FFBkO/UWFZDJV\nFXz500UiXywX/dBnlUWzKdOwJqFQGIcle4dX2u6QIZpfGwbIduDu/BVunLY1\nGxjlcox2HkUimBwxB7ydbDK1jFnWHiNSouZvUKEadUwiNir8Cu+vvuUqXce/\nsBPTSK349RQiSMIV5GH9vCuSI6S+b4A4GkMbojMLryjx5AeS6trPMVh4bG1Z\nXHBg5BBT6GuATTfv5+aDKP5dQ4rtTFzRwbtxLyn7JP9QYj/0bMo2mJz6e1ja\ng59p\r\n=QmA5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-ce4697-k988kx54_1587372488694_0.3273085518261334","host":"s3://npm-registry-packages"}},"1.0.0-feature-cc2b87-k989byum":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-cc2b87-k989byum","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-cc2b87-k989byum","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"304cad9f6cf90c99b4cae181dbc5b6bc80fb7286","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-cc2b87-k989byum.tgz","fileCount":304,"integrity":"sha512-202NhKPzQ6//7TKVzPCV3jC7OoURJHScd+c0iA0wx2P8osN4FDlQTqQtgqWs2WKaHJ/DPjbjzIGgSXeg2eh/kQ==","signatures":[{"sig":"MEUCIBMA4hWCqmuEeR7hMAI+5fjom8R20d8cm7q2GsXw5HDaAiEAgDWMyicDwXUw6TEs3GdKpkBX1SjrgqV/D8koZE10iqU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1414633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenWa2CRA9TVsSAnZWagAASAcP+gNdHOSXfboZSnssP5Ga\no5iAxzD00yO5ndoyK1VgYsWmN06Dhkox37Pfsl8V3QdM45hojRt6hrf1MLnX\nc056gI84XzC3oTIfhT+jQyXheTY9Zt6xtswTiwMblMs9RdwSK/6h0bN4qkzb\nrDx3GPl/9AfegnkaXW9ZoheHqHqySCxhW6DNQgOQFG3NkETI2KYzvbe1FRJC\n0qcPIaUGHNHneivdE3irVLRAVifWF0JywmASdMEThzCIMhmDaZgVBbrT3IV0\nHJvlfHWkQsMBWSFsraYfOpba51WKwXPv3ki1+OUeh69AckMhr3V/eZTfXpOr\nBIEA0cOHHMZP5uU3LzgZ93IfWlrLXbw1rO9JiLirA1xFM65hgAfPxeZzSC1O\nAmzE9qiZPJ/ciwHvTFpp+4+Wjk5cuiENIFP+Jll0YifUE2jVGBMZL8Qd6r/2\ndqpJ4d0Fo5VnPVkNE/GkwMD4uCVOHY6wimA4IIWoVaq/KEx8+MvNcS1UivQi\nAi7jMyXeohuch95Ah+QuFoequ3zybGE/casmVUofhNObJGxHJJLn/DINJRdt\nwXGhXyyZNDKLL+nLedBL6ARcz/esT3PbZ24WigT0EX3O6gZfK5aUCimdxeqL\nFxkbMzdPWj1WGasWUxjCJDjxJR7H+ncxKdnncA7+iIHLznanakrbSB69PVxG\ndhZA\r\n=BWDt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-cc2b87-k989byum_1587373750466_0.9788155655753183","host":"s3://npm-registry-packages"}},"1.0.0-feature-24b9d6-k989mayu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-24b9d6-k989mayu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-24b9d6-k989mayu","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9469a39ec368b619d9e7b9d2f3b3788780583408","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-24b9d6-k989mayu.tgz","fileCount":304,"integrity":"sha512-AsKobtnHqBXq4FrYWdcgkqxiuITvCYlM8QY1jCPUYtBC0A2QZzvHbCrAKRXb5uWftrQTTFErjGhh8IbWPF4pKg==","signatures":[{"sig":"MEUCIEWmmZPUboUvyB3MrH+GDUgcx9X2/B/PiZRbTuuv7pgiAiEArT9ZVLycLBnlYfN2HAsAF4yjynljDJSr3e8Y/6iAxak=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1414447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenWicCRA9TVsSAnZWagAAFBUP/Ax/AsMbHhaskRyMQv5f\nPfE/JiDqn9z7pDTok1EoUQetwsy/3/wue6eyv5cdbq9fZTGE2p1N91G4fZ2/\nyj3GtlhvuQBXOxbz8zCpVPR805nxPOBjj335IySHjSBfPBzLkLj4O9gLoxcJ\nahSWJHZLsXTIFHlGWwBHj4IdbzEIt7YicmBVa9cpk2pjNj+Dh7DndpdqS/6J\noetIEx9LE/1VZGrZIamaX+WBZaD4fzrSgFj0bXH7y84xQbxcWYV+EIInpFP3\nd9uJjR1CDAWhGI9GXz+X7cYclu+FnACnW1VZf93tstT+r+/W+mIQhGjC93GH\ngCHl9YOimDDvfGiYmhhK8LXWKc8uPqxe8mrt0RckdMU51pqwhSyPZUB6Sm/e\n/dvQ+BZZ2jJY3Qt8Y89xWnpxe0Er9zdp0Ts/AnMZHIFR8qt4lgrwqMydCzSq\nKq2bWJc7XNhGvLpI3Apt3kvyhAW79hAov2Xubfj4Kv3hH1mbGrrngZ4eq9TF\nw+xv/QPv7skOugBqHmvhbBdAQeQjxkxY3X1YBNSkvNMJfM89r7epuKnNPkgU\nEN1lvhAYw059O2ojpILHYk+H586BTJK0aMsUr7jW3MCGHjzYSzAjWb7LPz3P\nTY62IEjaCCKMYrojEnj9YORR6KhpbQ3uFPdvse5Udia/ewAV9dD1lGzYpunE\ny9Vv\r\n=bvY1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-24b9d6-k989mayu_1587374236317_0.1517754368462576","host":"s3://npm-registry-packages"}},"1.0.0-feature-d4dc3b-k98awtzc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d4dc3b-k98awtzc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d4dc3b-k98awtzc","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"104ebc31b2a1b3a0b1d1f67b4bc1bf0e3015e201","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d4dc3b-k98awtzc.tgz","fileCount":304,"integrity":"sha512-PC3+OXQBgPfoa9GPbGkzDEGTksFVJtMP+lifXHmVCCcGZkxscGizhQHPTO/ndx6qDGbZ/5P+35OtiV8VtOJR/w==","signatures":[{"sig":"MEUCIQDu1YmJ+7M5mGoql0ZfODkCdY0lWLKsdH2ooSnG9OzQbQIge86DPE6IdSU6eInwRtvaqP5SdifdEke6NVkv7YoX4so=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1414447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenXETCRA9TVsSAnZWagAA/AAP/0wRmggDRKCJOOBSLjJI\npsU8VT7RvCy/OrhP9AOFb9bhpuEZoPWYCy5i5SPb5iYkfy+Nx8fhTJahCzFq\nLy1PzpQbvZ7MAQRR5WY5hSnco+dpFH4V3KCG6a71Aeh4GCPhxqaNFkocFZvU\nwS1YrG7hkZRx947Nu+rRaKEC2Ba25SqOzUKHr+aN08AAu5A6P0ry4HP1xDSF\n4/fj/YkX6Yaz965ee9Mz6HY62CSecT0qE5q3aDfKyjv2GQJKCMfvRDdMHF6y\nzngIsbxjtDE0flo14X0wbj3zBiJrgKPs1HxpRKnvmSTEKKu39RrTCiqnx6Sr\nXSlgG6+HYXDrCgZ6hIm7yE8f2sgx0RchuVifOBK0cVtr1l1fYknYrd3bJeJf\npN3KRsxSAlOGO3IJ+qiJDX0JUL3EwovHx9ED/B1o/Zj7C4TIIreH3E76BYk8\nYAarCqZXJEPQw1rwEbOjBg+l5YXIuvXdwjXfa8/RAa41IudIWtzUe+mjTVAH\nUx6TDvb8ryHTYSl/9esp0EWIzvstso/nKClXxsPYaVjUYNhGz5KnZb+2ZhrE\nKlpR+dt8iCdxl0fUoJPbZjUaxgfmVigWNYh0vJWLXEZzbyK7JhVTdr6txU2r\nXlVU/ZZP5d8zBtRv2w7JGISdfwl2UEwXYF2V95hpcNpoQGe3SScsK2KmDbEV\n7l1h\r\n=xrOE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d4dc3b-k98awtzc_1587376402734_0.8938050096444277","host":"s3://npm-registry-packages"}},"1.0.0-feature-a8832b-k98cufey":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a8832b-k98cufey","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a8832b-k98cufey","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ff2d5c151555d4f100a6fd2e9bee647f1172ed8c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a8832b-k98cufey.tgz","fileCount":304,"integrity":"sha512-vWpwyUZdSmmN2AsnkGzLAqHjiglTkSJGkvFIFVEE6E9QmTQvfrkZGEXQhUhr568vmdWMTX9GDU11Tc1JS8KKbg==","signatures":[{"sig":"MEUCIQC9tRuUSTD3ZUP4au1M3Et0q9QTBnof5z0XJeX7qoYi3gIgde3K80cXgr6JcKA2IQZZkkqF43f56P8yzV2ZqUh2wu4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1417224,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenX3BCRA9TVsSAnZWagAAahsQAJ+4NRuyJ2L80F/Fn1KF\n2AOu9qSQx+XCYJkzb6Tq3wZS3Rc8mtDnTglqG6pfDtiO5X9t/VLSPMUOd5Kq\ni/MgCnN5HbKx9OcrgQyobyF/p7nK9DY4t+bxA1DLmNSW2EiCpxCitrhmO9w9\nGOxqDZsrt9yImTMgMdvmT3W5uxbgED7wvsTJtoQRTiTlDNPvsSCQEcAwwnVu\nawotH+GeJmdieEe+P8W2G77zbanTla5kym30sowFvTnhi+QMiWWQlSrBhBIn\nBnoILFooU9FtC9MSM+y1XJo3gPJkmABri2PsBFBgWkVpEz7FpFAKoFVR4Scq\nq1TNDt4m9d5jDHkUAZialZ18dJBAUzsiPtAX4/d0wKSeVI4rA6pz5Oj5knB5\nUrW7fADD182Ub9PqEm4Gh+gKv0sZJ9uD2U60GoFUQ/LEAUhUm8KNPK9YBEC3\nHCZbcwW4S65X94eNplIV7LXMfqaEypn3OVfRckY1BH1zOCo9MwqQFzu/zgmH\niLuoMwohvMocxbds/pDZMF9h666ZALugTclY5v+/BrEfNz/+NNhw+9vX/msm\nAQU9VzLgHNz1JWfjbqX/Uvqf4gMjR03an30x8sDumwbaA2+BNOT1NlhCpXxk\n+L/xFKb/dR4TYG876UdQpPF1hkbZTABS493FtAfODN4xlnVeggnJvypl5ZWY\nckaq\r\n=fQJo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a8832b-k98cufey_1587379649339_0.44041346240645796","host":"s3://npm-registry-packages"}},"1.0.0-feature-7c678f-k98l86vl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-7c678f-k98l86vl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-7c678f-k98l86vl","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7797b98cfe3009d8766526e87684f923c916739c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-7c678f-k98l86vl.tgz","fileCount":304,"integrity":"sha512-B2rPZD4tQeF7VrfEldHFUm+VCKrt9DBN3i0ZrRdnu4CCok0ad3UwbJncIM+s9NFBQoeMcTZT20rsk7821pJw5g==","signatures":[{"sig":"MEUCIEWBOWnICFjYMMOLW3yxaW3EHUB/6w41gIcXZ8UIYH8OAiEA7QITQrVtbGGp/K4xkHlzF3g44pA2D5iH8yp3uy7l49c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1417314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenbTACRA9TVsSAnZWagAA2qMP/AmMRdOwe6pVzfGwjrmB\nXdGRpgO4sfu4mu/dYg1Mza8M+5HXEFO5MaTk2QEjRKCENs11e2eq/Poh7/RI\nTM3lyQGD/lXZi/TKET0M9Ez9kfMcaBJr7y6x7qmixLYPFKu9Ib6ghcxJCk5w\nQvQs36cr42V+pXc1UqBvqnYh3vM1aEZXhrZCmeYxSjEyFkC6bcrYFkUx4SxN\nbZwMk6p7YYEukNfmdikXkx5zVZjnK6+w16xS1541M950aQ6fi1UERP3Evo2N\n0mruvz/Irf+7IlOecTWjkDgWzAsps9KZNHBZUolAw86+2oGN1cVxIST8F6Wo\ncf/B27Vzhin+pNx0G2TJHWO3zZJ7J/j/C/lllODDd99RTLHGGENs9pCex/U0\nGTAQRFrzvxnjvHwlG2iBz2bijTpnQN9Aez1u4gKZ01BMwHm+sq0DyWRRF1mU\ny0B2R1PrHARWFKZA0crxnt8kMYjm0simYnWD9mIFMOASbvb1q7FODwEr16Ab\nhLsnjiDcynHlKAm1Yyek0qDn3s4krBIm2FLrpNGzicYCuOEmagc9+DPurgaD\nY/ikxh+K6jukaufIumO9YZ2lLAD44EmhGc/QWSvGpz/3zxuz6cIvH+wnTO8R\nWKb6Qu0kspn4dMyZ4wGP8l312bkRgVQJ9CW2kourZqUyJKJhgNwEuIygqzd9\nasIn\r\n=aGFt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-7c678f-k98l86vl_1587393728022_0.09013558044703696","host":"s3://npm-registry-packages"}},"1.0.0-feature-789b53-k98mtumr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-789b53-k98mtumr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-789b53-k98mtumr","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f584dd74fdb1f285312dced003a67736f7c9a560","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-789b53-k98mtumr.tgz","fileCount":304,"integrity":"sha512-1VbB9UXcFpExBWyvcbz4bhrXbMZiIA4xk1SwGKc9kbArmjEnXl2eLOTGOeR/Kq/AyFE76YBTp51eBgjmhPBrfQ==","signatures":[{"sig":"MEUCIBsLe58Cozjqm3RJkNxOV+OBl4jylhxf9bp/NpL2FvUqAiEA8izlqdHBjZW8WUsr6fYNjYIVr2v4OlW8/UWTp5JWh8s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1417314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenb9GCRA9TVsSAnZWagAAoOwP/iwFd17S29zE4XLJ6yuS\nUcktnD7Z6NSluEtTfDUg6I1cn19LrzlHQTe2VeG/OJvLaaVyMtkYDd7JQT5k\nRuPJF3f//CL+k08cCFbRR4iuK9hgN7UymA6GhsFNVgLqRHqnB8fU/ftPlaAK\nwlARfE7b3xihWMemHtOfB6oAWavGYralh5WOB7eNWp5s7a9/6vrfHG4jTD9b\n06XHnYcn8eTlJHvgnHnIccjGo5r6lb85msSrRunHMoiX5elThmAQb0PsmAV2\ndW+j6zu/CdqPPSQ+LG1ooKyl7nJ6i62TEdBjN1WCT5TBqLv6hcb52GP/+MWS\nsYVdvLWkXiYok/kf426DtxZWYLdGyd8g2IcwPn+OKVVQr3IOCVfmQv/Y0G8o\ncoyYq9SLjqH4HiAHZw2BcGUf1xa5zZUMab0/j+hlfY0Ior9yNAlNOUYbL0lx\nDMoYk68qyW61FKaPMql5Mx7Xytx36d+MSz3M9dIiYWbaJ7ufXmT+dATHk1iw\ndbnW7lEigHm1+RXSacrYOLpHQp1tN3Rkud1Q21eEYMu2q3+IZl1QELfO1UGJ\nc8cY7nWbkHDkt2GZ5miavLxnBVP2q6K8RaYhxS9ERUOpsYjv7Y2E6/IKYr1g\nesT5MazEPXcPrAuAPAEwoq2vFjcEK4kfmhbIspuVYJvxPMgLghAg0l/Gfpd3\npzbS\r\n=br3e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-789b53-k98mtumr_1587396422024_0.39822704641530837","host":"s3://npm-registry-packages"}},"1.0.0-feature-966c2b-k9901i39":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-966c2b-k9901i39","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-966c2b-k9901i39","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b25f091eea736304ad6c7c58e720acc0267ff888","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-966c2b-k9901i39.tgz","fileCount":304,"integrity":"sha512-UoCeuOuDF1Wg4hTHvbY6WzkBuazcpW6whvWOdy2eHM+LaVOGWOi3g1dcLxWP6DU+y+Mz4P8CFgzZTMXgZvdR6g==","signatures":[{"sig":"MEYCIQCrqWuufQYr7DBgqnP/XOOUbsa1k5X3fsf1JcS6mMIBRwIhALSzl2RM/ZZkzd0rIwsYhkPHSStF/PDgQiQaB0z61sK+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1406504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenhX8CRA9TVsSAnZWagAAoQ0QAJpaD7eOn86UbA0e/zax\nwWq7wk7MbuOLJT8ZeO3DYUOwuEh979gLDVW84ZgO8PVNToJpm7ls071bIVeA\nstY7NqU71LUZsmMxMLAUVVxQUu5JIGlNTM9U0PyBmXoJwxmQNozTkgN+uLo/\nT6O7a3o4mGH8deBDzcFWs+ve7L1M1zElFxNBamPBp2To3XaQKoETJhVwWkeT\nn/xa6FOVieYfUlmoOQr+2gdn0sIh1IEfHUkGSPqSKsKx7BbQnylzZ+mZXKKZ\nvw4xfAZRCV2s7kHh83hA5zYihY8HWKZFChXvX9jUwTEbaZZvHM/2BLEeiitl\nqxwAUDE0zDh8ZueNee4JAgvDhU412FXQu0dX9EtsoReOTVp13ppEWrgLfRJg\n4ZKfOh9L/jD9zCVOi5sT5U3RihmJitlCRQ3AASfv6sf6BUIUXVnopK6YaUy8\n89A9DDeLaGxEnEP8jU1Ap8dlOWHeF3HBDJ6fjJ7lPLjQkp+Pi8gf+7EmquEm\nftdxAKLYcmS6uiU1G94EJgCVfq+F2vkSIggGW2XknnC0XY9B71BBBF06UlP4\njg1M4t50Ge6GZ3C5NMqTxOtzYYczRfyiMmK5FHkqd5ZUHfe5GygGDn+OygDY\nN4v0fKnSnm3cSAWcJ4SbyONhCsTqmQkTtjXfI/pbOsjX0yMIiK8LiedFDVlp\n4axB\r\n=0Elr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","should":"13.2.3","bluebird":"3.5.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.12.0","loggerhythm":"3.0.3","@types/clone":"0.1.30","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"feature~pin_dependencies","@atlas-engine/error_provider":"feature~pin_dependencies","@atlas-engine/timing.contracts":"feature~pin_dependencies","@atlas-engine/process_model_parser":"feature~pin_dependencies","@atlas-engine/core_domain.contracts":"feature~pin_dependencies"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"5.0.1","mocha":"6.0.0","eslint":"6.6.0","ts-mocha":"6.0.0","typescript":"3.7.2","@types/node":"12.11.7","@types/mocha":"5.2.6","@types/express":"4.16.0","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"3.0.0","@atlas-engine/eslint-config":"1.0.0","@atlas-engine/process_model":"feature~pin_dependencies","@atlas-engine/event_aggregator_contracts":"feature~pin_dependencies"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-966c2b-k9901i39_1587418619542_0.0935200267634253","host":"s3://npm-registry-packages"}},"1.0.0-feature-26d3d3-k99ivsbq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-26d3d3-k99ivsbq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-26d3d3-k99ivsbq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"03312a5c6ef059b45eaf0d55c0675b58347ee8d9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-26d3d3-k99ivsbq.tgz","fileCount":304,"integrity":"sha512-0SecBb4K6fETOydf7Mg1IajAXFbS4UCz5fbM6DXugbE21XxTqXQRpdubV0mWXrg6xKksmvk2FAjzpFRVYMVVZA==","signatures":[{"sig":"MEYCIQCqS1LsAnsek0xXxSxbuw5pBLhPDuApjfAbSaHs8RiO7QIhAPErPyC9PMpDU/70l6KpGWnZdHSRZB4J71t14fJMJrkt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1418645,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenpGTCRA9TVsSAnZWagAAJhUP+QFag1BvmGXulL2adqRy\nxMEyYZ1ftRMpZ9aV0CSSjRLVF4HJN6Rpy+CgCLpWB2Si4pzCSO1IOFMQ/Zwr\n5Y+Kh3pRBc3Tjg6vd6LSPUsH4XnuYpuK4F0feEwzMz1m1xg4hWStOYqI79Xf\nM2tokt6FkuFIkCRq4wsUCxfhnvXSaQC1QO/BQKGMt/z5lQc8pegtCnp1UX7d\n4H1qyDeENkki2NnWTDrpYbkOwNh226cp0h/6a3RSGmJU33KCncNvjNq0KokG\ndLJpW9+8esrUnajNnSuTxwKqaIAfUN/39SqM3W/kRgmEfOX0cRbIsLYVoC8F\nTNJUO17VlD+I2TYYZwLspbK1gMk76SUtkeSG8tSGeXhvaS+hJxav/gIqcvCJ\nCPAiP1aoXn7MiyrAnEwzQz7dgdfNHkfRFsCukP5FHL2yIP+jWN8Z7osWQDvo\njU7TV8VveihhGaVrrmTq97An63zQHQl2X5iRFO1mt3xzoYxx40p5xMLRkjkT\nun+kitwzc7w/8EXW5P2zm5xph3onUbc5rg5996Y3FYtuPyrJNkXbH4vE2jMN\nhkbX8BA7yCGem2pcq4vIw6ng7QgNJ3mp6CbFihHdkrRKYyTr39Mtn4QVe4AD\nlErkxbRxPYzKlQjLLiSlZHmAtPLuwemPumdo4l7z6pkw+QBm+tvPAPyZN/Q0\nvT0t\r\n=jOQ0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-26d3d3-k99ivsbq_1587450258902_0.34392870651283847","host":"s3://npm-registry-packages"}},"1.0.0-feature-3c76e9-k99kjxkq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-3c76e9-k99kjxkq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-3c76e9-k99kjxkq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f59ca251565a692a594237c062fee6975f07fb10","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-3c76e9-k99kjxkq.tgz","fileCount":304,"integrity":"sha512-iG+tG43JljTBht2V+g5tA5WnctNT7J49AeaUZb71Pnaf8HeEdKS1Ju+WrOrXCwJRuXP/j0R7Q51xzbEoqJvutQ==","signatures":[{"sig":"MEYCIQDZdcQmkd6EWVuw1j8SvFEbnK3Qfhm02qxs/vsh22VpJAIhANPDXGH+Jynh/cw4xR+loA4l6bwUAvM9hqygLJJOYDaR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1417455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenpyICRA9TVsSAnZWagAAkhoQAJOcCgo4O4+1Jef03I2T\nDp/1G9LXY7T0ZGIdrD4vRCUMFgCdh6AkO6Hvo/qSpPBQcFQdnmDM1XsruL1T\ns7awFa6ZRGXkB9//9Rsi8ZVx1rE3CrOWQu/aT+7gStko/nlrd17iXqcla7Fi\n2UJ2K92HSl3Lo7AHgugKTEflC25iQyaLQvVj+vZ5uDAFrzWVreAM0CnF6Im7\nNFl+OB4qtfduonI6vmC/PGixJk6jD7orb3z+DJ7zjXks3s2TQ75XlWPq3JJM\n1RwhQon2j9uOyEiJtmPVkv6ZOjDDPzPRhYbKmD+jm9bM8RIGhxhY0wU1xCok\nAecgAh27gkQuFABVMuY/EqWKPttrirGvGJyXdYlZGkjbA+RxiLYYR9UtWLby\nKLFZdz2TPxWxOgwAyLMF1Z84qQhFaLHKBgC+ko8cKaZfSZ8MVKqNhxS83qvr\nYJQRQGIZNxAOten1Tkzea5liFFYnOblGhaBNskOHSSS1Jo2V0VXi8kIewjq8\nMFi+T8jILny79er0WNIBaX0+vRQilWc64kuAkGkoQyxrYM6O9lZIiEMbDcdo\niP+y6z1bv7VHPfDjcHulIPuybUrNzxdzaXPEZIMrCmS110lOcKcpqN4hhiit\nNWrghxydpCAuZ5SMdbSRxMr/6SbAlAuPhKGDkBrJzaNnno9FO3MIoTgEDxLP\nUEry\r\n=Uy8e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-3c76e9-k99kjxkq_1587453063710_0.29769587545144693","host":"s3://npm-registry-packages"}},"1.0.0-feature-15454d-k99ozj3i":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-15454d-k99ozj3i","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-15454d-k99ozj3i","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b3b76321d267a4fdaeb78af40a677b1a5dd03dd1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-15454d-k99ozj3i.tgz","fileCount":304,"integrity":"sha512-S2ElLOZZ324WlXdqWMBZxQc6xhoiGs+/VFNJNcupcU21fK+0JXNc0o5FPVg81E0RwlfNu0pYO0N2FrpoFnbFNA==","signatures":[{"sig":"MEQCIQDqn/lef0YkCOCUb6dFCZcuNagRqPcROGIRS/k3Ijc1SQIfCLQ+zXVGBW5d5neh5QPvMD0LepVLZNTN6PjMOSqWEQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1408206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenrmeCRA9TVsSAnZWagAAeNwP/RmGjM2/bUKjZfw/dOvG\nYYvIb62skf9rpC3PvO4zKXg5s+Xooghxw/jIsDKqXfsHlT+a3rd02H2dqJ8s\ngdRtke3QMFtNfQVHGXxAy1XLQjRsSMGkVwLU1R9JE8pNgoMp14OnYas+4ojx\ngPdoQu29433btlTkOU+gMdS4YjM+ndUcn/xpYvoZBcoCjkTUNXeEQlqv42cg\neRZBOiWiJ4TM7/0E4W4G1CPKtN6QtwrLcc/xh+v0bkKAe2Cf4xl0JR7v6vk7\nYk4I9gYveCNkjI4oNXcZWpQhtdPApq9H7/PYS9SwWLr+KicTIsXTfaHi7Mqk\nQSqTpUMG6AJPduiHWoPERNiiIEwjYYWjZFmIor+GYGTciTJHbZfTbN9qxAXu\ncrVrGMtOQUVs8ORASA08FzT2THu3s+Ka2wGjvTS+Z2Aen3V2trNGaVs0ujjQ\nzF4QwrOYQwovr/jUg6Ai2Bga10q3lOXlL00Rww3dNfAaqJTMXZTUd9xtjtju\nvmoSlMCRB2Q5F2EmM6jT96wMk2OXs5SlTwNIdzHtB3nNCegpEduQXPpmrbKb\nJlW9pTdNTYkYposH/e2Wk93AdLGdqyIXVYEFKy7r8k7lYp1hXuwE1WK/J3Tv\nyY8hRCCB/sP5PcNS9SFAU0e+TE59drE73Tq+Waigdj9l+uh/lDpdq0UL4urH\n/jCK\r\n=gfD8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-15454d-k99ozj3i_1587460510479_0.5704952937811054","host":"s3://npm-registry-packages"}},"1.0.0-feature-a01bb3-k99p9dtm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a01bb3-k99p9dtm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a01bb3-k99p9dtm","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3838f606cd96119458ebc958f20bdd449cfc51b1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a01bb3-k99p9dtm.tgz","fileCount":304,"integrity":"sha512-aR/RQuyPfG7rzKzfOGpxe7uZN3qDBsBGRdajB8AYKnlODVrRuD7cf3Dvl/mv2UxdQ8viRcuLnpvfhjERPwIgEA==","signatures":[{"sig":"MEUCIQCRNN5F0U+pr5rp5oggAav1LX863g/6qFlxCULa31ZpsQIgb2nvGxP2LGrX++ScKiBoUvXmSf0zx8uC0gqQ0nawVvk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1408905,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenrtqCRA9TVsSAnZWagAA1qwP/2jlLAThIUsMr4isa/Mj\nKC4p5XvJcml/wjGIRU+c4WTymFTmdl1QEZ/ErRkGqRa4UKvqX2ScsExTrqKR\nUrxSakKnxOBhd7iwFeIiYWNRTf3c3t6YRK1uAP9WYqK+S2uRxq9GoxWPTnK/\nw+lYgagKbX0wvVKzEuOXxDIwxoJOmM9aTu3d0BEUUUJN/qd8R1rTb1lB0kAu\nKWKwJyGTxLzOrV1MnbvbJnC8oZASov6Y+lhJYQNEDDit4RC16Mgjip/0iP5+\nokDZMttm0fDJnPGTR3DmH2caNxrMaaDBKBBrGCeiidtVKA5u/klR79CzJkik\nwiCIt/xIG6odUdSzbpo4y3GzcLKkY1fcw9nBPFL50/L3HZPrWnzBQDCUr8Ga\nsuSiwP1OMm8iwnnrKzsLmAgj3/7FXZc5PaeYYZjuWKcLjocNRcpxySrbnEgU\nwq1nM73IILO2bqT5kvcWqXEejBKMbUWpSCnwHv67T7NbX6yWRkhULnG2xwji\nbmDamDDccqa3jurCZ+YVFIpCP1i1OIxF33NLQWMuQta8IFQtNDXyTqw/uGuq\nG0VlndVB6kX12XhWqCJVBOoxKGwR/K+XXiJE5bQ/svkmk9qqJ8zEQGDCicOa\ny3XXfeGvAPa3YKqd7zl0u1gXKeqpFWJAkDzk2m11fvqZryC2JUU4y+XJeOJq\nYjwQ\r\n=CO/Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a01bb3-k99p9dtm_1587460970022_0.6573390708744749","host":"s3://npm-registry-packages"}},"1.0.0-feature-9f7611-k99sz3w0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-9f7611-k99sz3w0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-9f7611-k99sz3w0","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0f5be1a8c00ae8256a35d66574496619fbc06f16","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-9f7611-k99sz3w0.tgz","fileCount":304,"integrity":"sha512-oMrx41+QBbHWcSYXrvPwE66/GsE5oBpxhrsbGaak4y90tw/vZ5UMv5Y2IupvXQSgz9EIvNB5x4X20k00dMKfQg==","signatures":[{"sig":"MEUCIQCi+U+O4biTC8sJ9lVFbUnA+iPYcLa9o/rWNn7++3YXFQIgCC6YeH2Ws325xvkMi5PMJ2rI8mJCM0GVmt5pPXZkSkI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1409993,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJentPMCRA9TVsSAnZWagAApCIP/jhkqi1WVxdHP72w/7+d\nEP7RxZ0SpBllbnxd9EqczHyW3ZtCtPiWsoBONOmijq76fO1d7PILkMFEP5uw\n+hVA6rvAqBYdOAQqZ6Mq0xTS1i5Wv/9IIg6U91hi0yXHYGTO9pFlGZcghgtT\nXy3BH9R+pehehccC8Ep+TsT+goEtYu83f7F9kSmxH7iYH/XtJwXJmEAPFQVK\ntZOJ9+9q0UXp8HTWRa713FsmECsKXL1smu4TWEneV46xRepU6Viv/kVIu+kN\nQC8o93SYby5ZHuuEgACZtb1Ct+f1JoDqIc1nr1crN+ZGToJG4xXyuZIN7L9u\nPYP6GJ02Rk3258Cr7FwECdb/bDwXSGg6Bc79Eiq8S7bw3oDAqs9XASPdofEV\nNeMhjYK/0t0QRX6/QRM9axQEkDjJ7XtvORR2K88KkiO+Mx1Jl3GtBvx47f6k\nhJXODBFM0Fay0wE9YlBxZS+U19aJq3hN6crVQqbNZjtZwOk2Q2c/OhO1bTZq\na+lxBWXYRhIfYd/6WWVS8ajlQBwPiDRJD92PP+lylwVqDXZiFKDcUrm90eal\nICP+rXDzvgTiU/9O94PJKE0lNUTy6253R3KKa/2Rf0/Qwfj/KkCCAadtB1OQ\n1j5Kej65i6RZN4Ct1gBCh738e4gTg9dJKzyt04VDwU7Srh/DfvQ98BDNj1b+\nUPMV\r\n=AJGl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~fix_resuming_timer-events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-9f7611-k99sz3w0_1587467212077_0.9971252977558511","host":"s3://npm-registry-packages"}},"1.0.0-alpha.16":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.16","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.16","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"12c7fe89d0804945dd2aadee6bc0509910f80b75","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.16.tgz","fileCount":304,"integrity":"sha512-XKh0uSa5Dl4oREw+eZUfAdgxQ1qeZt9w/TWj/+mitMA1xTG3HFhSXpXIO3pYUcywtRwdYZ3peNLlPZJWhpiQag==","signatures":[{"sig":"MEQCIE9klnPrKbUotHkQhGnaoLmD+JY2EGpgzdSgw+p4GKneAiA+K4ziV/26mJyCjKYKe396XmfKdTbessi04kPOmlNjEA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1408890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJentiDCRA9TVsSAnZWagAASJcP/2wFP5R+3mEMk3SREArx\n5e+YgifMAhvnzkVpNripOSdi3YRNcSGbrjBo95NXe9gvS6HVcGcsAzVTsV21\nJlytV1D3dQYSFem8k/v9nm7Cs2guMCXT3xW0yYVo4mwKhr4/ee9f/F4DLFdf\nH34ed+WDoUOerYxy1khvQUplAUUWLnYdguIUdQYk8cEMqOa1kMbQ893nkm3U\nMOYCp8spaiHbhySow9aOhv1fuaozLJOFQ5OB9AHSUU/JyQYGt3xZo+LtJi3I\nDPhfK7B7nWP9dHT73+MsxUpzrZU/Ei2m9xFaSfOOSptaOBi+GSACPNYyjoVv\nToSeaGCLt6l9QE2KRBmPIAugcG3ZrGrZTTBJxHIjaOOCoODFvgKmY9qszZlM\n4yS7QAkBQdcawobIxH0hpfW4MxHlWflDoZwMEslCiaACMAg1zVDz3IJkfPZb\nP71hsfIi/Zc/n7uIjrBX+mSGzJ3Tdoxip7qGaLcTlG5GtufO8imbrIFMPEpS\n6Mv37cP6epqyEHD2+zWgniE0Oba5ZscTQDs+BUxI1XIIUj7cAyswBRHLaS2m\nJP7VYpYIdDyY+OGMfmOnh4AT7rXkwcayyopr3ezffkNzCkOznYHb4zxlklhX\niZsIx45r4jD71FbBYYIWKlniwwv0spF6ljkfviVdyBmuk1KfY1GAF/zEm4KN\nbtWv\r\n=KfQd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.16_1587468418572_0.14617915861978203","host":"s3://npm-registry-packages"}},"1.0.0-feature-159ffb-k99wj4z4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-159ffb-k99wj4z4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-159ffb-k99wj4z4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9e1718699720e2baa107a2bb45973b5dbb89af05","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-159ffb-k99wj4z4.tgz","fileCount":304,"integrity":"sha512-aEbZcqzGQ/Rg8yBfW6ANi9LEYtHtHdA5NSPVOltILB3V8JK7zImG7muRo3YRDiAhXgQ0mslktpnwof+50cmRfQ==","signatures":[{"sig":"MEYCIQDaaayEiQvno9dsCsfwnMUI/OE3ioDOx6IVX6Ibk2OLHwIhAJA7m1g9jFIVbSiIlicf+Tx2BhL8etgCLHeWp6evIs8G","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1419379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenusfCRA9TVsSAnZWagAAgl8P/1r3AcFznteCtI9w/3hs\nQE2UpgQgXnVxpA+yX5cp4/qMQ6DlBQy+DV8noLDXXK+J1EIkl19X6Pyh4qfk\nA7JQVVJ9Y2JB8fB7D5Mo4ea5b5mnSGshdxAt2qGZqk2NQF+wOnBDSEwhnFT8\nOoqn/xU/C8t9gqKjr4m7/DNBv8S0xUP0ydMylyzPmkkKAQtAHG9TFLnQ0rvI\nFJ7w9PbeMCUA+iOMmn3OqEU0ReIA2n2IN8dUL9Nt57qBXxGaYfO+0KU+xZQZ\nKGRarADQmvyn15RIKw0bQ5XfMx3LUoYSGh/KP4zhe13jFdB9Viw4dkc1ng15\nwzP5S/UoIAECa19s/f5HOtiXzeJGC/QIQ4c0nmCSBrPlpKL+rS1TXzFuSa9D\n3FmeoKEBN/3xKkcg/LU2i/aXrvhOTnSXaMaZKJiBK2oPGrUqo9YjOcZXBvdU\n7aQH9XqCrXuh1hnA+RfFZIvK3siO/fbmdj7/khyLNfZu0UEnaVrXYL5OCbLn\nWszCgWxEDADixfmrArvu5x35UQ75/v82zf9Ruwju/5BVjIL4LgbpgmIGTohI\nJI7H7wlpESY7EBMLCR0QYY/CIx7vdtzhWzyWk4ODnGUx2QWbLoe+y/8N0umE\nsKsOSbtfR+mLMAvz6zgfoIrQ6hHmTCl3tDHnc1H96Ixgbjxt15g52AJtRuR5\n8iYR\r\n=cmky\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-159ffb-k99wj4z4_1587473182543_0.8738716864286826","host":"s3://npm-registry-packages"}},"1.0.0-feature-bc0bf2-k99y52yk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-bc0bf2-k99y52yk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-bc0bf2-k99y52yk","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"571d69386841e05be042a93572250492f8d04148","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-bc0bf2-k99y52yk.tgz","fileCount":304,"integrity":"sha512-RgIFptUQm5ORMw+Lj8A+P8GoONRWFA825bVfItMo9fTdDBc1ZS0gNk2XsPfge/PU1YgAVHRpkbUXUSW03tEgwA==","signatures":[{"sig":"MEYCIQCB2OzbKR/hGtuCelCYr182VzfogTBTmDG8Zw7vZSAitwIhAM8StNViyv6q3jcHBF0iByadc1vCSs/WiCk4Vwc8iaeu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1421421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenvWwCRA9TVsSAnZWagAAAHoP/04jNtmb/EKPbwoKejNd\nkuT7wJKOuVwKGnCPK74zOXly6n1NXu6rGJibH9ohwE4w+62WuTRicsbcp6UY\nSPtCqniZMRZ7nRGy/nb/zKj+kuU5GBVOUjDfj5GzF15DYIlYeYe0RwEBlGoP\n54ZVsNNpEC5GPItCXXr5r0JWQ9KuUkKcJ+rZdF3YBIlySFfYGq/nCizLCZcH\nTJ6w2bdtAiMtkwYA6dG8K+c8d1MG98AifuWfpIqQsRcEmZilij0tUAcWCyhJ\n2eBhGXxlSefRsxVLw9cq0WPdI2yosP4QnKVOKJ9Vt5IJNo0Ti6c5TZQ3sUsJ\nQRWMGK2fJ6/LyJus12B9qFqaVTGGFg/72AH3b2YiGQBKmMCJy3kl021+2bbo\nbNC7oKcBIh3efTfPMc8y79X/aZZNXhyhhNOF4ZxqS7qvloBL1X1n1ZkGz6tT\nD99aS3s9DQP5Lt+6O9k+IICgO3x3YtbCBGzrqNIabih94L4FSRtFqRcvKqJD\nZqeyc8yVaIZAMgkg3ytHzQNgzEQmcnbYUb3m/M913IEyemLgAE3fzjxUx7M8\nOPDT5lds8sbO5kx1306h6Mn4+HQB+U+b37nDeJlxy/YJFlTczDP2uoOTuyWL\nNoPXIME2K2S0nqLVturEEIWzhOl0GrHz4nhxBluR7i9iNU0Zec8LiksazLBq\nwQZ+\r\n=SDBL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.3","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-bc0bf2-k99y52yk_1587475887587_0.21353304425212016","host":"s3://npm-registry-packages"}},"1.0.0-feature-3b046a-k99y5in5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-3b046a-k99y5in5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-3b046a-k99y5in5","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c121ba20b9524331b8c548360f77540c15638536","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-3b046a-k99y5in5.tgz","fileCount":304,"integrity":"sha512-4SnZZ8ZkasfOIEGaiGzBl7nJOay96SxVL3dsMdGbCSX61f1st3pBHOvgZjx+ir8A59ZmJcjE2fZQIsWEJA9FFA==","signatures":[{"sig":"MEYCIQC024JxptMNO6ZuQ0zNID8p1T9Udsv41Sz85miDmBJB7gIhAIfKNleBW54nbdLFiBrLc7B23osLsxupsfMizfEaBBGR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1409973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenvXECRA9TVsSAnZWagAAMOIP/2mDe7ip2SfzbgTQZHkj\nvluIC7cttbhhVKDoUrkLV2SrH7lemy2JKTqgumvD1G+GDEk8PFS6Ww5taNc5\nzZNBB9AveyDrTReQ8XCbEHpz0ySb5VN+SNWYflHbjf7mmuzHDTjBD0FGQ7Pj\nGtvN07nH2KfMfO0yKWTks1VBh37YOyazJl1MWzfst+ygCFQgQuXlG4a+B8bG\nfPpHBDIJqTlP9ZU+hCoTr1hWKjN3mT/w4mUMnoWYMdRhV+TSXFy7pAZj57N3\nIHwqjyA3a8WoN6fi+sR3TkievST8KQt3avsPb/u5M2X2w2WTIjw5CTx+jaY9\n24XM68wkJQ6Mp9mf7UBdkyWQqK0PZug0RUCJIrIKQVjM0KlEXkCPVzLwFrL/\nddnnrMPAOMK6Q3E4oUe0NnSFE5/7/87bnNiF0Jf8XcjIBgjHr1354v775VQg\nD+6E/qS5mOserwZNbeNodUQFa2MFf/i5TIpUKeVaI/tvdCBf49obuQKGbMz6\nNa/mozfaJlpiZO8okenEIPxS7b3B2ELDH6bMpHaxamFvkBt9GxgC5bZ96RxB\nNlnrOdrxujxU5KGCthoEKYjtbdWKuPVP3uVt9MEMhsqY9HPkoxSWAGLCpHCS\n4G9wS0Xk9+abbovxOAtQKltPIlJfchDviphlgkqI2cNC5lcD5s8PhZq8ZGvc\nZbp+\r\n=C58r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-3b046a-k99y5in5_1587475907779_0.06320348572219392","host":"s3://npm-registry-packages"}},"1.0.0-alpha.17":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.17","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.17","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2a8dbeaac698f5f469808ed7cd728bd35a105bcd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.17.tgz","fileCount":304,"integrity":"sha512-1DXR6jDrCpXs3jNhN1SRdJFU79jf47YcW0yxspvgr3ZNef1DAyo0wHOKpMuROcQ9QEdDJ5Raxd5bTUy0tRAs0w==","signatures":[{"sig":"MEQCICwFbA+a4/5Ma5abxtWelBTUKqwMZj10KIFGkCSoBcqhAiAmieMKzzgWFjc7DQdvFaIGig0w1+LlinJ0ePs1ygERPQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1410657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenvbaCRA9TVsSAnZWagAAVG0QAIxHiMLsYQgi/ZtYjfC4\n5Ljwp/Ng6F7eoyJnM3jfisW8OxGAc8BXerhzFX/YwJaGtDp048WKYONQj6aN\naeT6pDBcLXAKrIQyNdVxVQXY4rxcOIpdXzgf1+LH2SN3SfndXZJ/sHmfTFHT\nUUBkI5UGCdBKMZ4bVOnCRjeqcqVi1JGO3Llbpt+66bAS7Z49JQxwjHEkmGXc\nn3ONzyDlYMWuzdmu/rE7TLoIug5Y7lDzcsXbBZdqOIfUeh/ejpPK1HzbpY3q\nB3ijQE42I+HMdpxc00Q2f++I666MUQVbmU40fbci3np1V2r8f0c6lRDII2nM\n0K59LeAW6raxFtH5aXVyzwlrQhnVHSV0b440oTykpJpVaBz16wsRd6UV7g6D\nqidL+ia/bxatIIGT/E3AYs1K1E7wFkje/HwBxY2/b/GbEHxLM7lSjaQrya37\nfuRPozwroIcQcI84uC90mN4dSddGWwGFkitNj65P0xN1ZMqwqvl/UAe4ZlOy\nBxSAGoq2n8RZtjzc93tWwWh8NM6Qv+gXAM60P98QkeJ/xFjBbLK1ki9EyyX+\nbhpeNSe+X0ctFrrPkSK6AAINcuIp7tGyFcxXEEVw1ngU0lv5NxkRChA3rPnm\nIM4YjZhORqWdmuO8ab9kYpPqRwSIELdcKfwUVUB4W3W1eT24fD17XykkCWMj\nf7r0\r\n=mXcl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.17_1587476186251_0.9327626218536771","host":"s3://npm-registry-packages"}},"1.0.0-feature-21267f-k99z3hsl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-21267f-k99z3hsl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-21267f-k99z3hsl","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cc595506065fd4c80ece354d504a878c6a89f5aa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-21267f-k99z3hsl.tgz","fileCount":304,"integrity":"sha512-8+OkH3sTaC90qO9KkZ1fb3Xfx0YHVhz7zesNzqDe1W6nnzvxGHThCM9OyTcY6TQLVz+8QpCoABPH/bh8bVjIsQ==","signatures":[{"sig":"MEYCIQCpVfkAoK6LcrKFlaID7w9zIZnQIrQJiBw5tqibByGsxQIhAOkOGIjp7NhNvXKo3P+Ae+T6ZgVfogPJ/2EqdRy4s0G0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1423887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenvv0CRA9TVsSAnZWagAA1cMP/iXx7tffs5ooHCdSt/5g\nJmqg7sOL1qDa2CZLAdhx0qDDwPlCJOiQCFFLsQ+He1Pi1jatVo2eLL7YBgzw\nNNj8DJ8mxjqWVTcICDzmdmnqSoyTRS1CdyqaJ3kuZool8zCCFU/+GNfTslas\nfPETD9iJFmYyKEYmStDGaqc9YwkIqN2XmkFPJgwHIgLK3L7nX5sHgP1KOkgI\nDqVB++lf7LbyH55sp9JblMnnZ6OShWFoajhVF/+VTEwCAWc+veSnK0nejGfl\n4xTFi4GuW5VTRg0ngksuZ8S8JJhxX1ixcvo4OD1z/6FkVJG41fpApdmSJSSP\n6exMkzcqLnsEym+H6v5b5+Gda1UPNZ8CywjBVZQeACKPdMjg2fCwGAWa9zxm\nAPhLL1wO/3NljJ61TupD2HlKBfWVTC0kdAHNSnV6xEMF3yIzsFngotmEu+XK\nXDO95jzxFqxjb3k+rref1GsUEFX73P56Z4n7lmtd0KXnEL3ITwuRpAGpM5tc\nRTGE63L8M6+xzuYaL0q3ZMBJjqopgME/mOTCTWyVEWqTetVBoB1YWUOUEgN5\n+37EPY38W7MM/68Yegg+OZ7EN+6f8+S6XicrL0OQ/BtUn4igg/8GkY5mfSsa\n4jalpAo3Y5gXSX2DCFLKkfOr8hSb8rbP7qZ6eqzkY0eAAXsIpzHMWzYBYFZv\nmnNA\r\n=9koV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.4","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-21267f-k99z3hsl_1587477491861_0.3608083205103123","host":"s3://npm-registry-packages"}},"1.0.0-alpha.18":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.18","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.18","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5c24c8d9f7177943979533b0ff2bc240027fe304","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.18.tgz","fileCount":304,"integrity":"sha512-GdWNld256bYHd96MLGV1WFd/RP6Fy02qL9J7Dem7/u4ldCa0rKuThCCvcRUG30eVmuTCcVECsMj89GeNZ/y1oQ==","signatures":[{"sig":"MEQCIG3zN5yNSySBB98+9iPv/5KVRg5l26+2MBh4iZOXxYKaAiAKRPlQ+NBq2MBHsi/A8oEjqQdlA6R/yBbU+u3E1WJojQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1423872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenv0nCRA9TVsSAnZWagAA/L4P+QH549pLx6ZX3+YRGuKK\ngaviwPKZrUcXrB7Gt+AzYY8WhFB6PBN3hEzRPVWGc3tEyQSd+c0H+kpWM5U3\nxsHHsmJ9IPpxLXp5fjkq2gAv7qgAg1lTAEgBZPYx8zjCbEtoXMpxqEwtPXND\nZkeJnmBDtEgWHullO+7RbnWysgmkdsd0BCAWXxjy5vNC4dBQEwUUOuZfEm/D\nbmFdm8ZvmohDf9QkYJZy0OFYdj+QQtEC5LY3joXtxMKKOZoHcJgnGXO1XUo5\nun+ZoOT1nRT8D7xld6WRSHRuS7JHl9N9YM7e4LJlcVv1SLdBR6jwIzye//SY\nswbqIhaCm0XngODiI/ErSLhEFrZ821hdp/u2vN9eircr8TEZsham1rSC9TAG\nsmQyGDGvnRY7HsxeqYrpUy//uv01GRn24Iq7PDpb35jsfxctP7mTnPzN33lB\nJIq2Pk1OYUtlY+WmNj9ucSLmTPou6kzZz3+9H5fXrMIMerEfMsVPnTUg1ctX\ngtEt1Sz26PH+/JX7TG+VHbvhXyFU9K5JimRg8PxdIlxKEomD9X6K1LxJm8iu\ngEy4YASRE3KJR9NmhczGqTy9JpJmCZB8XfQK2bEbyuBJ+CFykGCOFPJ00YqD\nc4HZ9X43aQVc35+1qM0avEhhR1X61drMipbRvHLieY0zrhvZdK9U+GlsXQzG\nVWa/\r\n=FPC8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.4","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.18_1587477799418_0.33771046136361926","host":"s3://npm-registry-packages"}},"1.0.0-beta.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6f83f9e433b3fb03ac65703508c69fb8ff66dace","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.4.tgz","fileCount":304,"integrity":"sha512-Oebm3pquGPCwX24u3a4d07FMDWnWdhxa6Ecf+GbO5I0N7sahxCo8kcR3M8OfUpfbscn4G409f+Rfb7VixIrC+Q==","signatures":[{"sig":"MEQCIB1vFP4sV+tzQqgAT1TMBw6oofBO2hNyav/0iyrltD8BAiBLQ3BlZmykGO7/9uzKdc4KQx0Sg6Wk6U4iNzYhsDxu8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1423868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenyJlCRA9TVsSAnZWagAAkaMP/07PgspbhSWc809ta+Ak\n9qgE+zsqMJBLaBSIDkJfpM1r4NBAWDJKn46kC6KyNv/j+CkJaVCAqOMAp8Da\n3CXrk20XMox5Op+sNiUpoO0xblXTYTXdM3YJ5k0jga6Jq4IdMZBNqR/raPyb\n8YIMBWSrxrnulG18rueUu1ic/VGDU5bzUsP6Lt8KO3GEXGod7KMUnovInRde\nMjewKdbiFKSi4uRVziGUPZ1ECkFr1baKl0tRZbDXoIC9HrJGJaXhMAaXYBN2\n9+BmVhTXXtL8skY3ZFTsdPEK6l9l9w6z4B9bKKMEtPkxUCzidG7JwalYG9PV\nPQKWnJceAn6U4Kw5eVzUHlKRpDuL/r+j/DhVwduD+5ddGWpU/CEKOXkwO+Lk\nXWIu/Y32ETMDAaOMQvdOqRYoQXTUvPE4tOePzIhkoidAQT63989x5xszJEML\nAJvUNxnh/gAI4g8oQgf6c4qMPx2id/s/RUYz1wk5kcTmcKfkxynT39kt2aDT\nLLEJ2efCKwTosXX7ICn4iqZSpo2vOxva4OUoIUNmeEbFxRoWMtLACGAjfx1S\nKTMdx5g+B7RE/G3x6NCoZKqExbhcLak3PRLOuTaOMxq8TJrghFj1eGlHWfle\n2DSFACF3/OaP5f4NaqaBiA9l0yI2DwRajtUvuJlu55w3ilCMwhHYcMhVpgHA\nKwxK\r\n=KDv9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.4_1587487332496_0.899247563101558","host":"s3://npm-registry-packages"}},"1.0.0-alpha.19":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.19","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.19","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bac414cfc690ba230187e7bf6889eb1a53f388c7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.19.tgz","fileCount":304,"integrity":"sha512-L5fiX7viYbcp6M34iQjXZj+0UmjYcZqsgHl8fM0amnq8cujdEBwUaaZ7iMjf9dR+fg7HFMaYS3z6Zt2UfDXGag==","signatures":[{"sig":"MEUCIGbvZATLIVve2+Lc5hXr+9ZBm4s/aQW3Kt2WyGHvbJelAiEA4lEeQs2+njzOpMBsaTU1qEA3099ov7fXuDbid9dDhWY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1424635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJen+z7CRA9TVsSAnZWagAARZkP/AvdRWUJxImzOHMp8YHv\niAT4yrUDz95ZlWNRNf7T9dBVuT4UAXPhfxXpQdCHovljAsAg/hisGwZaKFR6\n2PL4Nz8zD2cKy+qzfUyZNWfYhV5UaJyeY5/1Ht6C57fqr2uAOAFkGTPyArFN\nn21inNRCCx7fEn2c5LpY2UD2Jhk92cSL7J9cYQHh1suRLThP6YvYV6uqVeNi\ntTXaPJysHOqkniufZI7xG+RomrfPrqbcR6K8VQalNxavhPA5znVDxCpyCpqy\npNR78xugHGhJ/o6YY7JvEPkb4I6oZHDYhx3H9IiwgEcTAJU/E7GPGD502pk3\nVYVDjxDmKtcKhxocmbNREfyhwtGnSv6CwK29/3S19DCK8St1cb7Eq9k4QWi+\nXlkeoormx0HJkXHTjgGGlGK+3wVyJT1K8s/j7ShEsgUBxsMf7ligit2LuUoU\nqV44V+9Y1SX5V0ZnK6SOBhlJV6xpnnXMIW1ZcwkAyr5lFiw0lnfctEK+ff1w\nBcbySAg9RbDR3WOTHMz/QlZWOQCd9Q960KnnMgaOU1NfXGrJ0Xf+6WESqxYF\n6kiM2vEnTa0qmn6iUacr0V0SrStFi/HhCE3SsqxDVS1LUU7V/hP6tAozSfTX\n3T7sbygO2f0igLWaWRBMkhQQpyOSHHcIIktYZI/g0ezZbKu3I8Z3PnnQgfEJ\nCmse\r\n=lKNA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.19_1587539194887_0.25540083600840036","host":"s3://npm-registry-packages"}},"1.0.0-alpha.20":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.20","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.20","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"105396d45c0dcbf073225fab4317436778106840","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.20.tgz","fileCount":304,"integrity":"sha512-uYUYzgPvXXhVbb3IusYTmnAFaxB6X45FVMy3o1C6jxW9cAGmMkb818l5St3muoJVb2QMZb6PrMpAc/IO/Gk4bg==","signatures":[{"sig":"MEUCIHf9b5xdxFsAFK6uJvHIBsRXDpNrjJKNuRPm3bmm1ZDJAiEAxMMoBEWPXFUO09/O8OBVGoip1k6IwQxCQNLPyZU2ihs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1425749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoBWHCRA9TVsSAnZWagAABsEP/3fCBh03mg48vNZCrjUK\njWJmFMxV2uB8rjjJj8hpAXLF/v7sHhqWdCIAcarV8ZVbc++jaV3y1zW267Bi\n1z7017oztSY1I4qvJnNSNKngdq+bMKkvY/bgRq4QUw+/XhJ2TRWNA+jYMUst\nYfw3D1xdWM3FD2vodY+ZBiqD3T6sEnpZyQb5QgYWghYFkADI6fK2ZeEZNq7B\nZu+YRW4eT+6qalA8vEAOQ27+bzqW3oPW14oWtvsbQJ2F72KLwc+u1YVJJzDo\n08TGTuk3e+cy48NgTJlmYd+fR8rFg+oXlAEAqI0avPf4Zp8/5518A8fsj4yS\nexbHDKSY3vZMH/sB6SbsxII/YdbpPzeEW9oH8Mk0dMeMwBb34sulMUWhjsXC\nXNCOe2WohdJ38a+gbasnbuCXcgvNw2QzEeR3NoYXJgB2FW3QpIfMypMu1gLd\nSwcXCBIg2rwIgA171VSf9fQfgU4TYepvAQwuBsyrzC8cJFyZbcxhrtaMvMrf\nL5AbFs/ATQXQUZQ/x845pNaAmIBDctYXO33Jexgk6VrexPcFvB+/asbYcn08\nAFaMR6n94efE8KH8OWV5RwE14gvuX1V+2ZFof/9mnBvKtGEJpZqgyox7LUxb\n/alaOYEXQSohkLAhOlUfTlr7VIRoESU3M6raNpO9sw6FNIZMr8W8DNKNuWvW\nMeMr\r\n=njpG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.20_1587549574987_0.7545467349149841","host":"s3://npm-registry-packages"}},"1.0.0-beta.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.5","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"053e1a44ebd2c6790a91f64688d246c07b4bbae7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.5.tgz","fileCount":304,"integrity":"sha512-HwUAxqbKe2dt+Q/Hb+7M9OFjgedmOxtny93KDT3LrucHNPpPoWagArC1/yJPeV51ZU7jv65ILe2XWD0Zx/I86A==","signatures":[{"sig":"MEUCIEOavYlM76sBXqVlVeHhVY77VwvXDaKt5yEJAAgVyKaAAiEAthAJfCAPFsAA1UDo6lOwgSQrFbtx2yOKiaIdBBy0lBw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1425747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoBcnCRA9TVsSAnZWagAA9lAP/ioiss6F3/64wfFr5UtZ\nR5vTODm8Z5Ug1dfeBor3u3GT9MPDCRBBdaBm3yG5YtNNRf3ZCmy3bgVX7Jkf\nPERTmajfKe+Pl6M64LGW0Y5HOHsOlT2SPZjJNgsvjZ8zXgwpWMYu9Fpk9fMA\nhuG3epF4d62HGGEYgVdMIHRehUrCVoy3iYVvWUDJKAfcmsha9cYXKAr1V8lc\nUNMthMh0/HkkMv4thTBSavONlzZzSNiM419ZR60c0JfjvUN28aKJMcMcMktP\nnbyHY/38u7ZoFaTd83O4jKRCO7bxUv+BpJvku5/Y7tLEwSUcSqhIcjsLOFoF\nKNCTNpUonA5S6YRyFdzVPM2iu8uSimD8VqJtaVSX/WdO8TTzDrgPc29gwruB\nHeidLg5TfznjCrBQhhRU0pNtOS7B+BDYz3LCSJM1o8KJDzyGHfFMTvRsk8R5\nncUOpGZk5SrQrxkjhP3q3NBobzRqy1MWN5066xRfCptObqi+AE0EEd3FIcTi\n4LFtshj7tn0nU5F/yM94vlkd9XDkkx9FV1sC+u4dXMG5L9nLrsaJ/J/5EKib\nImLA0rYSbDfOoJbrvfgOjSgCKMDxbHr/zk5I/a72fRPLRw7mAi/l4Crcf4gn\ngegHrhJszk6e/6L35GDkWN8uQAvgr1w287ms/rI1metUEldAnc/EMxdNo9fR\n1VnZ\r\n=q8xo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"^2.1.2","moment":"^2.24.0","should":"^13.2.3","bluebird":"^3.5.2","inversify":"^5.0.1","node-uuid":"^1.4.8","async-lock":"^1.2.2","cron-parser":"^2.12.0","loggerhythm":"^3.0.3","@types/clone":"^0.1.30","bluebird-global":"^1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^5.0.1","mocha":"^6.0.0","eslint":"^6.6.0","ts-mocha":"^6.0.0","typescript":"^3.7.2","@types/node":"^12.11.7","@types/mocha":"^5.2.6","@types/express":"^4.16.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.5_1587549991227_0.5608372181450787","host":"s3://npm-registry-packages"}},"1.0.0-feature-0fa662-k9duxlip":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-0fa662-k9duxlip","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-0fa662-k9duxlip","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4ba031cbd0ce4415b23b8980a59bf55da955401d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-0fa662-k9duxlip.tgz","fileCount":304,"integrity":"sha512-tMxFDRb1IxQ8oXFyT5KklXH2hqasMgvVJ/0Af+varn5XtTaLdw6Y7MvplFKiHTcFzVMuN3iOWbKS6yw4h+BETw==","signatures":[{"sig":"MEQCIHBfzgyljt5QTGZyl3FjWHghpzAMdHLjzomsvhpeybT2AiAgiwqPxxjIkqeSwGCgmDWwXI5++opEDsQC56gsHHo95Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1406504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeopFvCRA9TVsSAnZWagAA13AP/jgOxGs/ixaFv9+2RzKP\nXFykdV7l0kp4uBnaIR42AI6q1Wn+5l7P2BGRir8Rq7RWTcMgEjuzqmkabAnj\nWITgihDuIlOrKUfWWYFbd9LJXm2e0kvwwb9vRpvtVMflaOa8naaYRgzuGrYi\n3idl7caAgXUOR6K31S3fnh1qDsl5lqwfO26awWVYh+OKOfmCodqW2NONxVA8\n+aGjOMgNl0hov5WUJkl9eOPmAHFxXyIpoI+t43FHNwnuezMcBXY7I5EguJVN\nQW18fB380sr1ohoIMUpju9IC244uwkmfBT9WAXzA60bpD37lc8RQrJjalKW5\nnIwO5UZGgGAcTqFWi4Fz5cKnYs8lVcT9kg/SiCRquy2UYEYcRdz8pAl8ikvT\nNb+D83Ux2wfFU8HS63NmgCPNuBGI8i2lNstWBHsjm0iJ4wPdUnnN32lhnYjh\nALxu9GiZe4cQTzg1DswL4K+PPkPIqefjDrgBErWjr9ZiXWJBswLUscjf3HIQ\ni71Lp6kcX1lrTZw29EMDG7AUtiOiF6hkF5nYdP98LUykk0t6UjZDE/yj2Akr\n7QDqyDHBCriAUctFm6xKjpuOGyZKjUDHI0RCfUVuByrjjMYtRY96IlYfWyQp\nHmrDlkIwpdph4COUDxbyNf542cWhYJDTRKA3aRh6/6iwuZrXEhHI1oUfMtfx\nDSKM\r\n=AMDP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","should":"13.2.3","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.3","@types/clone":"0.1.30","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"feature~pin_dependencies","@atlas-engine/error_provider":"feature~pin_dependencies","@atlas-engine/timing.contracts":"feature~pin_dependencies","@atlas-engine/process_model_parser":"feature~pin_dependencies","@atlas-engine/core_domain.contracts":"feature~pin_dependencies"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.1","eslint":"6.8.0","ts-mocha":"7.0.0","typescript":"3.7.2","@types/node":"12.11.7","@types/mocha":"7.0.2","@types/express":"4.16.0","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"3.0.0","@atlas-engine/eslint-config":"1.0.0","@atlas-engine/process_model":"feature~pin_dependencies","@atlas-engine/event_aggregator_contracts":"feature~pin_dependencies"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-0fa662-k9duxlip_1587712366750_0.17154820635306067","host":"s3://npm-registry-packages"}},"1.0.0-feature-ababe2-k9dwkzid":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-ababe2-k9dwkzid","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-ababe2-k9dwkzid","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1a7313b4d68ef920172d38f05fcec5a49df7972a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-ababe2-k9dwkzid.tgz","fileCount":304,"integrity":"sha512-9hWo8UoXdvfJJo/koTLUlBnXECQ92Gi/axZLCDUfU4IKTYeJ/MfJOQQT31Ep2yyUM8US4tL2cheimJ32lHj6KA==","signatures":[{"sig":"MEQCIBTZXHAgdKfeyG61vs/YZecY+wt2j32pCQqrCl+aEG5RAiA4V9KOapDwKZ3/D9PO2urz4MICG9RDA/1BexTQm1m40Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1406504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeopw+CRA9TVsSAnZWagAA9LoP/1aMYuyNhgUz1mFjWQy2\ntdN3CkBEMUsEWGCgFxLEbfm5gc+vZ/PFmX5PdfpbPvIwKSrN9bLO9iqza8OY\niZOc92xR4CqW3I+OGXaDK4zt0iT/a/0QffWEafTd2l00OPdVHedljSXzy4pW\nsCEB7vCXfMl5/X32ZkfDgKHoX2Vv+L/O3bCPMY+wi1YaNNlNpxSf4auUsXUV\ndufNPwUluBlLrxVvs52AjbhD8F1JnUK367Wpe+6WN4IW1++LWNh0/1e5rNGI\nYKVTdrh7kWruf270faREZYAApethBqC4Cbh+V97xUlviJwXJzr4xkOoQwDv7\nuhMs4Ls2MYWKtGLtx7CgSJWtrTko/wS+iGUj3ESjnF7gG0NaYL6+ez1y7vYM\n2Hh08EO2zpjaageFYLLwA+c3khSiCGDpEh+YZgdZ4qwmcqy575TXvSCG71h1\ntuV0TV1K6cmSEOOV0klVS7LsRjVPoOZnzlncYKyrDLCGF6wHLmfDBZr0a0g4\n2QVR+YjzLUMtvEQBqK2yAA6BPDvwZzy2wb5HJEeEKSkXKRdefN7CgJ3K0fSy\nkAs4hYCdu2ts2NGW4vhoENuc4wxG6mfSB4f6tAmSTKPWSuyn8Rf40wxQ05X7\n/eDmF8nTBV7xloHBXCuHbVlLqejn/+txROEY9pQslZqwqQ06Nw40rqG7L6b6\n0MVv\r\n=RSTO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.3","@types/clone":"0.1.30","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"feature~pin_dependencies","@atlas-engine/error_provider":"feature~pin_dependencies","@atlas-engine/timing.contracts":"feature~pin_dependencies","@atlas-engine/process_model_parser":"feature~pin_dependencies","@atlas-engine/core_domain.contracts":"feature~pin_dependencies"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.7.2","@types/node":"12.11.7","@types/mocha":"7.0.2","@types/express":"4.16.0","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"3.0.0","@atlas-engine/eslint-config":"1.0.0","@atlas-engine/process_model":"feature~pin_dependencies","@atlas-engine/event_aggregator_contracts":"feature~pin_dependencies"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-ababe2-k9dwkzid_1587715134142_0.5718251819456832","host":"s3://npm-registry-packages"}},"1.0.0-feature-b7b933-k9e738xr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-b7b933-k9e738xr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-b7b933-k9e738xr","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4ab12a99c489fb64ed167d691960221f54423e68","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-b7b933-k9e738xr.tgz","fileCount":304,"integrity":"sha512-REvWss+XmQxNxNiH8f6CLgzTpIvjZMLXaT79awyiPZHV4XEjH57TaESRlesPNdVRJQ+4t/kIZh13qItMNEaKWg==","signatures":[{"sig":"MEYCIQChFK1c3eeY7E4jTE/a3L8MEr4q7v9SSRBEEsUAo1lq2wIhAI9uGKbGnPjoppfPDuhl0sTybPlYwbeZiSkBAyWqhRGt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1406436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeouEuCRA9TVsSAnZWagAARrwP/3kcwJ7d7M2H8+cId0mH\nkfmjKmKb9rqc84zp0aJWfPDvRchKlEiW4OQD8yqaDgNTjyz8smZz+yq182k1\nGt5QwNo+yhXDHdf2YN6KcBYmdKe2jFkT865oFMRe2lpnHZmT4MeyHSpi12rc\nOhzfj52lSxGHWEiZWVViyvZbzaKX2NsKW0M9/DvKuEMD86yrRGr2+1OQzEm4\nvjl6tZdLo1NX+y0HfamUP/RpY19SgiJL05MhDTpmQJi5aghhHuevs83sbHvB\niWUaXkrLHy+8xB5uUTJPzwYLgtfkVG+DnKiTnIRr904he4TNRsQxUfpzEdi4\nrFPzZTIw+Qf/qe/oF9e0BOyti8Srcc1m+RL6hxRHyb5eZGEvex7XLokFdZOQ\n8VIwCocc4XVOD/twg7ppwcZjGd7tF1qEar7rNE43ufZ3Vt1W3V1pBQHWbwPw\nm5ZdLPNehW/VtuBvNYkLBf49j3lsN0ZhTTGQFsCKTLaadRIRJxgWNuH3q5iJ\nnVI9ICTukKtLQBI/yOYWyxt/ci+Ya4o7tTldg1ZnB3HEILSt6MVFU5DFFqFR\nsVqjbg3+Y3lDK03lZ2LQ1LL60qasnJEZMz5HSQQ6H9vHCPXoBq91JDYpQq4s\nn+T37CDaeYBv1XKdkyU4pa+3PSDk5+vZf9LbCON97/OO0LWxBQKRI3hmE7EJ\n9bW2\r\n=0N5n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.3","@types/clone":"0.1.30","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"^1.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.2-alpha.1","@atlas-engine/timing.contracts":"^1.0.0-alpha.1","@atlas-engine/process_model_parser":"^1.0.1-alpha.1","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.7.2","@types/node":"12.11.7","@types/mocha":"7.0.2","@types/express":"4.16.0","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.1-alpha.1","@atlas-engine/event_aggregator_contracts":"^1.0.0-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-b7b933-k9e738xr_1587732782000_0.8810532200724637","host":"s3://npm-registry-packages"}},"1.0.0-feature-1a59cd-k9e78vds":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-1a59cd-k9e78vds","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-1a59cd-k9e78vds","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"535665bcf765bc08c63627c9a7a8e91e4b1a4267","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-1a59cd-k9e78vds.tgz","fileCount":304,"integrity":"sha512-CzZ9XVgatGrYbM0sfMiYx1T/WNtKFmjHcgSsTxN9hEfxMxa+tLYLW2ZuyL0U8e6sUDuIiktCTOPhRxZFw2glCw==","signatures":[{"sig":"MEQCICq/xecaKfPnUPn3eYVIYM0e7Eq14wbzKEwUZ/7G929MAiB0z1WiIBqFubI4w5n5K6aB8nKMb29S0jCONQBnGNMIQw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1423851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeouIyCRA9TVsSAnZWagAAU+kQAKPvjc4q62BvCPlazvhs\nWP8kKShgcdrAK+WjJzipr9CWApV9Gb90nHkk1losKgs9+NIe3CN+gNav8h4i\nu9Y4l8MU1e+G+FGh+wjcUoVcZwmv0AVrCE20SbthdD7haHuj4vo/EWDOeAxX\nZrJZ4mqyng17p/2rpHUIefvh1vuh8riLClsA9PsYxb9S5EwF5sz5+csplP/y\nn1qXRb11CZDKiDV07ElO8V4IYp6gYMz09VQkCJLlHMhLw4mwl35FqEomvygj\nl9WgfuRGCdXUAJdFqIm64rpAXFNzMEMlxFNhzZ4v3KGfSX2fIXQVrroQv67V\n7mZEsxqiAlzf4xcq6BbpzzPeT4iOKGl+vvERGX3YAf2Lu3M/vDGMxWOUpBZV\nPO4UZLPo68Axa3CswxQoQ6Nu4FCRCGlxfTy2VJAaS+4SSFngcUfgmiMdAUlq\nyu2m7DJrVNELsJyZVTr3qrN/hg7aMyzGFC2Gj4cCBAASjd4RQqSnE8uk24wF\n0Px1Zyl/UwMbFpmgmeH+7OJgw5hcc4P4qNPBqkaXbdFCvNYnBcA2mvfTThaI\neL/As+84t6P0eEyh1YbIVIswr8HV3PvarEHk0Ll2EJPsRoCfMhw4qknAEZWk\nFCB98xt/zdS1JbnnwC3vAPw8qHULlqBiqRIlhsTcvyks/xZzJ9YJjAoXgyF7\n5iua\r\n=1TxF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.3","@types/clone":"0.1.30","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"^1.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.2-alpha.1","@atlas-engine/timing.contracts":"^1.0.0-alpha.1","@atlas-engine/process_model_parser":"^1.0.1-alpha.1","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.7.2","@types/node":"12.11.7","@types/mocha":"7.0.2","@types/express":"4.16.0","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.1-alpha.1","@atlas-engine/event_aggregator_contracts":"^1.0.0-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-1a59cd-k9e78vds_1587733042019_0.9019119436904179","host":"s3://npm-registry-packages"}},"1.0.0-alpha.21":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.21","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.21","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5c8531a6d676b6dfe8fbec03cf555729d2a49ce5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.21.tgz","fileCount":304,"integrity":"sha512-9rldVCq9+S7wzrr4A3Xclh0Cyy9obhrIeCUEPXWFi1xSW9bzu1lJvt1kBIhQ3Uh5KSy8wMiefGpeD/7ac7Hy2Q==","signatures":[{"sig":"MEYCIQC1GGxL/j0GuC72zZ/MBwO7I8rTqs+V+HsJ5F2moE43uwIhAIOl1BhKzXy+bHwNe4U4DPnLPO4lfk22sa8u1o7XrA++","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1423836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeouNGCRA9TVsSAnZWagAAxFsP/RtpA65z9iFrbBHg9POG\nO/CCUvPuKLL8vr44ACxzUgy4hMrmxrd47yeWo7X9bUVyVmHzzW8uK3Wz328s\nF3pIX9TDnGCK1Y7BvcP8jFlHIEuXpoDwl1ykaafsMSOf4I31eDif1YlZG0id\nhGLyhcru9b0QhCgtIgXzyv16SRrehZIb/KYtPAsI5o+7S++KjGCB/6PEDiDc\nrSc3mJdSgzNzdPJ+0R+NlrxIWpxvxxQu2pk6r3Xgj+fD0MATwKHoZ/VEwOce\ngI1tLy1f5k3VUnHuPoUWPom8jAdctutD7jWvcL+bAmbKFyUJqaT1zfJlWNJz\naJk6j+7ze/Rwrin8f5IRe8ao5rXpfTY7mcvTiW2Om7/34cvR9E3eiRyMAAVv\n7wo6nFqGtzK+9bmGV0DWJ+9OHMR9v5aMsX6iOXCxAlS6RuzThInje54oPaiZ\n5/U5NdIXn5U93Y6y7SRxc0wjHSzGbMEnVVwOPbSk+m6IFWyBu00qtpHPZ/2g\n+WSY7hnqm+LyQJPop3JYN0bdh8FnwaavI9JpGfNLsP+XgrhiziM+qswBQw+e\nNsKsElT1ZdT0ah2FwzTfWAGvy0n2lLHBj2XhcMS+SNdzqH9Jx9pboEpjES6c\nDFpXLdEKSsd+SSprd+ly19Eyxoa9CaTbOvjav+6nyJ84c0YR2nfpSDXk68mP\ntNca\r\n=hSo5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.3","@types/clone":"0.1.30","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"^1.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.2-alpha.1","@atlas-engine/timing.contracts":"^1.0.0-alpha.1","@atlas-engine/process_model_parser":"^1.0.1-alpha.1","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.7.2","@types/node":"12.11.7","@types/mocha":"7.0.2","@types/express":"4.16.0","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.1-alpha.1","@atlas-engine/event_aggregator_contracts":"^1.0.0-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.21_1587733317847_0.7896079574919079","host":"s3://npm-registry-packages"}},"1.0.0-feature-d36f9c-k9ieevv8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d36f9c-k9ieevv8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d36f9c-k9ieevv8","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ea71dc202d499d0e5d39fed0df7c2735c9ccc43c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d36f9c-k9ieevv8.tgz","fileCount":304,"integrity":"sha512-NEXKNVB3C6AARScLj4vMfe5IanGZTUzehpegr5rFD1DAH3+Y8jOQjYJcqjJaMihjFjy6j2so/dmbe3j/daGauQ==","signatures":[{"sig":"MEUCIQCpKADJB/Q2eS8KtJfrH1oGXEKJL1J1mWLnvonNK37TuAIgc6gHLUkf9kKLIKuRmDeaxhmmOtZtjJ2rM5CL6PCYMUI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1423851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepsIECRA9TVsSAnZWagAANYkP/i8nNJ8ZRAJXjzonmzQF\nYExkxOXJOP0Pav3PvepaZfcIOdwSmZwh9lGAxJuEE1vhddfe9Msb/cXUBtR2\nNpPulQSw+nwBObZ11vcTzyq9OqckSCSn4FyBN4X2HnkeoSaXYffATiz28YcM\nT1YEghS7uhKcx12lZTtK3YOerbL0mF1lGaweQJKOObOfShY1wgrw71r9dhCC\nEQa4WfJ6k8zcv5o5+CzpuzfywMW8SgIRU/Zzgj3eLiApfUekraAFf0uX5tJs\nDu6bdRMycHuIIzbCSrUpd7xn9t/enwL6HwU/Nm/S5WLGPjrEbCDTqicU3wlY\nSEareNhaDWnvzTz1zMzuVQv5s4fXP/g0Wv/oZtyGyBIe7Fe1P214ax3RxnQV\nBKWDjCyVpJO0x02yX1isHgb+5OcgmNbvyhw/s8c/v925ApseYg4xyJ/xWFJ3\nWPDKA0vEphIiJtULvuXy2PK3DVASL2LVVg5rWUJ9QaaUbWTIuOG0VKehjAhT\noPdtjse8Q0CTOaaieiy5Cd8aK3cUqAyrqdmmQ7RX9pXU5+IA58Rfqd1qcflZ\nDT7dVGOzZDVpn5XX3Bby8/CKkcrSIdQjQehMAaRQN0tPXDlOTI/L7NCNHwBC\nrCoXtPzdTUIcwEo58bVB/9dpb7D9DCmIikEtRquoz8wxBTjywJfVGHvsKuzx\n1XVn\r\n=EvZr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.3","@types/clone":"0.1.30","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"^1.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.2-alpha.1","@atlas-engine/timing.contracts":"^1.0.0-alpha.1","@atlas-engine/process_model_parser":"^1.0.1-alpha.1","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.7.2","@types/node":"12.11.7","@types/mocha":"7.0.2","@types/express":"4.16.0","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.1-alpha.1","@atlas-engine/event_aggregator_contracts":"^1.0.0-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d36f9c-k9ieevv8_1587986947755_0.0943880436678941","host":"s3://npm-registry-packages"}},"1.0.0-feature-a7c5c3-k9iekidb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a7c5c3-k9iekidb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a7c5c3-k9iekidb","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"fa5b57aaae7bba311d72b08667aa2c499037c04c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a7c5c3-k9iekidb.tgz","fileCount":304,"integrity":"sha512-713O7AvhhwmO4Inz5dCX8BbC3bPl1SUSwn0wnAEDNUYRoo5jY+M92lz1co8wjm99jb5UwnBuIpvyj1xYPvDODA==","signatures":[{"sig":"MEUCICu1V4+BHw1bVZckMIz0ZxUrO54sStbjX/46jVK8xV+iAiEA8CsYX1LBkS8Nyfhp0mQPw44+l2lF+++iJneriiABld4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1423869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepsMLCRA9TVsSAnZWagAABpEP/0JB9k177QnEVDfg/KF6\nlHo0SdPMV3KggBw2ejKmzlM6cl0V8tP7QhQF3ICrAJlpk6P39M7pBv2iwM0e\nr+rXHR7PIAUzEIW+trKke1qknd+1O0bkFwfi2yGAel6AAOSzvgW+ArHS00+B\n3PIqG1dp0agmI9zkcQu2/9ISJ1Oc6R/viUa+XdduxEp+t3jrHI8g5+bajy1G\nvOM1yeNamHL/r6/gFlQWlSd1nND8Wco23tpmnUGwOTn7Sp0sdFkH/iF3pDm+\nOLJoJketyQz9YXdp55WpeDY4tioNa4vqee9MpqUeM9LLd9uI7OG3hez4mkJi\np7PhpzPuKgcNYM71JgEdbf1y10gAV3AWmwueKZ7f2KhhPkzDZYUJK57bYXKJ\nGAJpdnfKxUtjhL4LYhPjO+NFCdAupjHtIx+Anu2Qfpae5ll3ZUzFcsAoPTsM\nN2305K8CRlWIPwNEALMAemU95eIwJEeAKTi/IGtdcvjl2tiyhnfUGDh99TaM\nBg9fZGlQuQm0N4IPNVyfxrtb59lhfDTkkE6TezJITU3r9/p/AxCJFD3fOYqA\nytSXzuGucTiQq3iIWIo2jLAe53a1KWrcwZNgi40hsOXIPzX/3NQhznNULjLX\n56YOICoVMDb1I+mPq4ESlFAyIVEr8BQdXXO17svhcdnbU6MMZaulcq1ceeX8\nVbHB\r\n=EjM2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.3","@types/clone":"0.1.30","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"^1.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.2-alpha.1","@atlas-engine/timing.contracts":"^1.0.0-alpha.1","@atlas-engine/process_model_parser":"^1.0.1-alpha.1","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.7.2","@types/node":"12.11.7","@types/mocha":"7.0.2","@types/express":"4.16.0","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.1-alpha.1","@atlas-engine/event_aggregator_contracts":"^1.0.0-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a7c5c3-k9iekidb_1587987210620_0.11776854343348342","host":"s3://npm-registry-packages"}},"1.0.0-alpha.22":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.22","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.22","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f04a80f33431f66e519ee7bcf34da69c392eb56a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.22.tgz","fileCount":304,"integrity":"sha512-DNAykM5mFWMw54AS07rIQ3xiOsmSz1eYVN/NHFXlH0dAP3zme0/u7tXnqJpQT9ADhrjzf5323mvhCsl2NxtG8A==","signatures":[{"sig":"MEYCIQDMJ5TiOyVelzu6ppvA4UZwmTZ3HIuaD0llgRV7YH41zQIhAIdnESIrZoysyrlwQw46g2w/8OWATQCEUnajf6wDkePn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1425716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeps7yCRA9TVsSAnZWagAA2BYP/jDdW7vY/mXaJ8Q1lWIh\nJRBeTUENkuas7Qi/10sST44+3sgtB+vh9qJ52Ne/nN/Iebz8apTUIQmLAIMJ\nE1OGKHP9eVX5iOv8RijqHdK7Y7xy2LvJuhCtv7/1sjHVLl4rptU9xleVV/mo\n4OcImrP0pUXumtZKNi+V0Vw+d3eWlZB5k/Rs83Cw0p+W83C9iYHbdAGQJL9R\nKm5TfQarXF12OPVriOGD3GvXvCmMybxBspPOr3UTlP0yZqh6WCn0mX4RbaFx\ntqT4SQY1RbaXl0dt/6+2oEspP+CzPNfcPWqGpFgNaY1MREi4oHSkFnJiAPJP\nKhTIin8svyrDeloL4AkWVnwCXPYuG83dq+mTMc5c0hHiKorCQekzWZuCSUx4\n98zwTEGDPmr0YGEY4hpgOl6OE3v73MdXkGoW4Nt0SGWdXqS7FGH7fGs7JhTp\nNOo1xpgwC0Q/Appsuo6it8xxSSnRdaOqVuZkWRw/ED0Ou2KBWA82+n/O1SZ0\n0OYsE+vDNfH0wPdK7KfJaUEOB9wknvDC3RemVt+Xt1mDKI5wrPQFJTs2znhu\n51LlAJa+m1xHsQa+fW8+VEOXstp6mclZjQ2tsPe9iabekse8kzo4El+1H+ck\n7fhwpE4/bEIwRzgTl4MFRWM7NvULSCtutfKcKwf8Zmuydpd9EqSLJ6kVVOaP\nWObr\r\n=tiLt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"^1.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.2-alpha.1","@atlas-engine/timing.contracts":"^1.0.0-alpha.1","@atlas-engine/process_model_parser":"^1.0.1-alpha.1","@atlas-engine/core_domain.contracts":"^1.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.11.7","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.1-alpha.1","@atlas-engine/event_aggregator_contracts":"^1.0.0-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.22_1587990257609_0.2765471094536085","host":"s3://npm-registry-packages"}},"1.0.0-feature-8aa921-k9igojqa":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-8aa921-k9igojqa","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-8aa921-k9igojqa","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8c7bac37347d4b34c67a88b165b076d8f74404b3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-8aa921-k9igojqa.tgz","fileCount":304,"integrity":"sha512-dzdJcbkHjaFUazQ4IbBaHyNUg0WoeHLyx++k9B46afVLkmz25W5Jvu4x7byjIk1O+kO2GxDC/eLMeudUIg+F4w==","signatures":[{"sig":"MEQCIFcFC7CfQ00nvQlHkoRsJeA92sVfuUkGULf2UP8ELFGtAiApXHRrR0GAE8gpHywYu8H8hYZed4c+V0lbksRD7wRqnQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1425753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeptDnCRA9TVsSAnZWagAAlVkQAJ4GOTgtEp533NuSF2XP\nnx/qVQe3T7fvIvEudo8oi3iM0A91x8wYPh5xAQR0xJehFwOgvtzAzudeflu3\n2VLSZuxL3N7x2/RYs0GJ22C+E19qoL42ryGUZKfnRwQ4+oBtYZxX2lMoa2bK\nwarL2Il+Yso/pxJboxMQ0TNtnYZB8flhsHM77WslC3ctdDur4szueNaTigjj\nUU/Iji1Az25wPVUFbG/UxD87IOdsjzbAux5LjumCKSd+EmWDYjqBn7HojPL7\n1wGWiy6R6AVmJiZvHX48RQX1GwL+5QYHvsYKWx/CL+yuQNcwfmLJnBB/yXi0\naTCNIYpReREu7/jLem89dFNNaV6yKTjbRgCEV6L8kxCTkDIEfE6oQtfCPUyE\nUfJIk6sx268oYBG+UxsMDTVe5XoHIlPHX09jOFZwSjwsRu71xeMdd94GxTty\nMa4wpYiVOsVrAWiHxedbbBCyW1azBfMCKldAfh7RIBO/lKQ5ogRiTac4h2iP\nhyDHxdYi+izOE47qKKmI8CFpAZ1iWJJno6WWVTfK2e/rTgAqPc78qJIE22zr\njIemVKBsWhyPQBSV5UbYluw7+2UR9f51s+e4uIw0JNexreFvYAeU0b5J+UT8\n6NbDGejge3MfUazCeiuse1I3dGuTgqE0B9P9wJA3NnQc1Rwd0CSNqyCPTnib\nXTel\r\n=4hW+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"^1.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.2-alpha.1","@atlas-engine/timing.contracts":"^1.0.0-alpha.1","@atlas-engine/process_model_parser":"^1.0.1-alpha.1","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.11.7","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.9","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.1-alpha.1","@atlas-engine/event_aggregator_contracts":"^1.0.0-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-8aa921-k9igojqa_1587990759122_0.037180866187542794","host":"s3://npm-registry-packages"}},"1.0.0-alpha.23":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.23","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.23","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a5b99d045a8ff1c44d90e2ad6ab9a9a39199f7ab","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.23.tgz","fileCount":304,"integrity":"sha512-PquSsOJBnwQ8osPlIVgGemjh7h3axOpIcODgQSvom77sbtDX29FiPkUUaU56fNLCnNxdrzRHP78qi5BPEylbCw==","signatures":[{"sig":"MEYCIQCuU902kUdcYemNlu1Bcm7TfuufmEmqUIf2mQskRKk/cgIhAMt8iON/04jNLGuN3BNZvWE+puP5Y6o+3c1HUzYt3UlP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1425711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJep+MiCRA9TVsSAnZWagAAO6AP/A5val/XM6HyZyV4k8Cx\n4qnq4ja8O7A1hfaWI62CzlBvLWNTw6230ioYYCAD4KQEiRMHraemFa8DgpNV\nK81HvdyoBhVYMK5Nv7/LU+QDSFi/WaGHfR31jah3ZZ1B4qyrmgLeq5MqxaKc\n+cYOdlu6zji68AkL+L2A9OBST/OJrjWP5gkRyohOSZ322DslYT7AKNmkiTG3\nPOycQrq+Cl0/Gro611xhVTsQBDgHKwclXPL725sP3JSOL6Skmj5FxZnQcN7r\nekta/8pjlxo/l9PsnwJ/pGSSP4jLZYfHm03+Dq137Obu/vOfcNKEVZFPUj/f\n+h1ZAvwcrtmynFhiTVONwjlhBqEqBKBZyuPQNECpGJPJ+9Znwa8QClkWHwli\n1Vl/+vcW8a48oQNVPtKbvm9TmVKrFrRh+/uUXC6LLnTuYi57kmETsiWED25o\nnFvLxI8Koiio9kBZdPk61S9hgyjiqvErBKGBboqByYot1JbPhuJgD9Q2hsdt\npoi0FbWY9hXPP3i3YPdBIa225KA6ZOq2+GGax5xJtzFGvJ/DYfeELKmRtTWM\nDl2oZSNLzxrO+A9+TLDOKwUesMAA0/NVEya2Pkkzj6KIO6xcY00qgeIsqeqQ\nGZ5Eg6+CM3Zq5SDRDI3NgZzNTpeHDciBR/pl1Y7FfKKUMAxXWJKo0id4iC1I\n96aW\r\n=yXv6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.2","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"1.0.0-alpha.1","@atlas-engine/error_provider":"1.0.2-alpha.2","@atlas-engine/timing.contracts":"1.0.0-alpha.1","@atlas-engine/process_model_parser":"1.0.1-alpha.2","@atlas-engine/core_domain.contracts":"1.0.0-alpha.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"1.0.1-alpha.1","@atlas-engine/event_aggregator_contracts":"1.0.0-alpha.2"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.23_1588060962129_0.5558080085140862","host":"s3://npm-registry-packages"}},"1.0.0-beta.6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"59ef830fb4f7ccb9f7a3a4b3b9d0588494ba39c5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.6.tgz","fileCount":304,"integrity":"sha512-tpdYee2fTKiT7g2ocPPsSIgRD+1nljuIdyYsdEkTyf++L6SbafhcbAPnlpudoBzonLKZIdr8K1TSbSGAaipyaA==","signatures":[{"sig":"MEUCIHFLGZOsBI9L3yyoVkLjM22FqKtZ42Uk6qj+1q469wxsAiEA8woQigb4bl2yPtsyy33AhGQBkjGHn/Vb64pK7lIuwk0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1425666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqV7dCRA9TVsSAnZWagAA4wEP+wRQvBp1PbYy4WFSlYB9\new+UOa9S0dEhfxvRM9rbTl9PlNXlLX7Ieun0SCM/HAgkfbQrBT5wZBCuGzGU\nHNHNVTvpL6+jp2KaYQ2tTWIIto92EW1GhMBMamtGP8IndYZW/hicJsn1ogng\n4FSOz2HoL4DrbUBeR4XveqznSjy4oo++zj8oNfM0DEpHzM0QBEHxG7ABRMDA\nYuibhZ0/VbWa+ORmAC7S8NkPk/NOVlvzUONM4mQCPUpLYHDuUtPREp8e/unk\nVIc8l4LuwGF9zLnh0uqDsKorRQ/+qKv+GCkp9G+3B4yXF1MGm9pfDqnElbM/\n4V+NiNXcqHSGqaFnMYZyQyCk/n9MUoF0KAUocneX+JhdcZ/+z6mt8y2FW8eE\naJR/JiSO8vWtO75Z6CcHps6BAjLGHEoGI6ShtArwaaKDXIPFstdKLM8Skmu+\nytoUACKeFmNaRdhSBhh++SO4NMf90az6QaUJsNZJqLsW0Xkdvp0i6mG7nVeA\nlUD3mx4gi+hD5TNcVW6beQOh7JAwpoIQZpBGYo4Lx3vk7bFv6pCUo4EnIB0A\nG4CIBuv5B2oOwQlsUVbHvrpwoMCxduZWfvhB+22X7G4le4m7Dow05qUA9oA/\ndLxcAv4nNDC3iyCrF36r7myjQlOnTrFul2C2Eu9xNX03VLKhP220rqg+vjKW\nqY6f\r\n=O2Ou\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.6_1588158172766_0.326600566920743","host":"s3://npm-registry-packages"}},"1.0.0-alpha.24":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.24","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.24","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4f66f14ba7c83a02e8cebf549c198189e173de0d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.24.tgz","fileCount":304,"integrity":"sha512-mtNv7WUWJMB+quTYQGLXurUKGV49RKis6Z15K4DrjcyU67ZjfN7EFdeGfTTkzwzF1WSM7j91QA/oSw0zbQPEqw==","signatures":[{"sig":"MEYCIQDl3ZUekJsL0mpljSd/Y1L5N991oBatHBe0Bcw8M2PDfQIhAK26+Y5dvve+ZX1iwvCb+nctRmzVuHNVGHSgeZPtPfyY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1425668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqV/LCRA9TVsSAnZWagAATsoP/jdFi2p23U0P4vYdBsoc\nsNqklUyZxNOJhBvejgdj+Qs975rYrpo5RbWYPA3GCehf1lMfwrGNueey5aAg\neFScFvbKaCsonY3BTAV0e+CYE6gHf2a3Gi9XazeDtrVeU9D+dsyLTzP0PCDt\nILiaVZ8uUSJNuavGdBMsIqOGtHcOfMShi9yzWO7uJX5hgheUgimTu23dZAiD\nB5wAfK/hufLoUge1912wiA25V/mFVs5WwnRNHA335UP8FtIMRj4oRn6yfzSv\ns4IeNT8SKkCJwC7BHc3RGwNLRmd05fAotgrQBFJn2Kn0MNYW4f4Nn1gsLHfU\noxb+3ljIi9ON1KkZbB3UjS7vIZKcWoy7r6JDpbOIkLWOmxZfCMGftQzwKA5g\nnTQWa2I0OFoqPhH5smdnkITQfSuwD41PktHa8rruRM7rphhoNnoPpRiDcNmO\nT6701UhVBFz34XGWFLa13ImB3efAs7SgPITz623UF85O1mn+vW7ZOmFHwrbK\n2stNsENEUJLkvrRAgztcR7JU+V4XCOgB3cYL8zv0A3EQHoz2DwqSR6pSx+pr\nNUFhb4qb8WbLYNd7H8MTFv18+ucbZPhUNwrne/MtHxHH76gQ8Cd3KAduKj0c\nKqVkr4Ghd8e0AIEex2rCG0Xtg9t+uJLaVI/IiDeP6+M6dDvlfaMinznXwYG8\nprHc\r\n=XVRB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.24_1588158411279_0.6898248992028855","host":"s3://npm-registry-packages"}},"1.0.0-alpha.25":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.25","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.25","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0c910ea6950ccc8fae49e1ce467b5ccd3b0e31b4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.25.tgz","fileCount":304,"integrity":"sha512-kgVBfYuanOIc9JOTKK4uRtA5AQjcQfLVPTCxDgwOFDK43890p2Bc0dBLIKLSzolPzPO3hzXtMRMpp+N0P0OQ2A==","signatures":[{"sig":"MEUCIAVeLwT1IQJ4BYH6paR5dWrem8e9Vl/+es9KmUTZ7PyzAiEA602rt++Kl5XXUAI/LoHyw88Oxp1wb+jGyqQ0OAlibLI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1425668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqsvKCRA9TVsSAnZWagAA1HwP/iGgv1+tf/s8ul4+4BT1\n04gHAjMW4IgvdYVfJT7nWz6cfKeL6vVVj5fuaq+r1jtnsmL7c+YcBTRFffue\n8ny61eUjCoKAfHn+ouhcZrfg8WOOFojAnZXjyp8NCjpScG2rsItwxr3nuenK\nDI49l3ZBGq2Cr80DKFTfudKyAzUNWA7+lJAu7WBCNx6X9E0zk01h+08OUMYA\n1ygkJo4Sh8QStR1bqEhVpBfKf/YfJTKguybkKnuiOYkC62a3JhLous88wU8W\nD05W/alMYxlmhKQfonjPtReUOY+6fRcExYnRL1dLK5o9LfG6Rr5UkQY6Cu8/\nQ0kkyC+6lD3USbWygn3XMWxkYsILjbGERq8Hkb82VvpSC+nc8Fx9m0jtQBMg\nyxxPyz/p1pFxS11qUQ8dI1PghA9SgwiZZkU5gfcUwI2mmEYBndjgqiLQOlxS\nHaT8UB+eWxEhA26Qn1518h307vO8Hnn+Yjs7ELXbTOWaR0iK/ymCDFr+0zzz\neGY6DpXUPNZjg0YQ1NE1FlTaWUpOF8uAeEhROndQxoBqe4iPdKCqkbWlR+3E\nQECAEgpeMiKOBcIOp/Xb/hxQLVIC6ljhElZW9Txxr9Sk/ssKbLi4cb+p0fiv\nTYfPDtJRyfftu7Fm4/jv4ZXvtbxU8rgwaBiKmP9OJ2W4j/tLjszuhkLvUREA\nTxqE\r\n=emLa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.25_1588251594088_0.7823565225373681","host":"s3://npm-registry-packages"}},"1.0.0-feature-d488f1-k9s7br9p":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d488f1-k9s7br9p","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d488f1-k9s7br9p","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"84aa30052517c79eb7ed9df19b14a96419e39c39","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d488f1-k9s7br9p.tgz","fileCount":304,"integrity":"sha512-dJrjy+bxmVhloQG/+mKpHa3NLVZfQ4h+RTCB4qLjZAUwuoC5nzXIADZ0Xa5RyyP1oGmZUwZVdovGPPp6Gs8q7g==","signatures":[{"sig":"MEYCIQDs6Ew802B64IHPvnybQwzxBye9i4Kxf7bk02y+BelyUgIhAMgGTVkRgY2oTlq7tplTifBX9gHI3WpwECcq46QEteeK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1425905,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJer81/CRA9TVsSAnZWagAA8R4QAJvDjMEHnISuWUCJ45QZ\nQUd4a6+oni9wPIM2hKe9Ui2341u6FTAv0T2oz1GkPd4xRdGzL8EclvtQKdIP\nCWO7ClAbgS2idjUavr7O8hA6EJ5J297VG/+OWlTm5A2NwLJ6GqL+Y+PSi1LB\n01v4fIO52decLq8gdKwduPBZyWWSEEAThQIFo+/B0l2/IVRg+rWtAn+OCyP5\njsX0SDRjEbPqblYJC8NNsmmpDYZ1dTvSoBienAVm7yEBK5o6C1UNTqx8wspD\ntipRDednHKeRrBgdTqiioB78JRFhuHLdZfqZa0XzcHFJSi5k1K+SKH3qrKQb\n8vMPSIZ96NjuJraQ1DqUY3FXOwef5cqd+uFkdzfSo01INYfbLaQWwp2tmBHo\nB2Bw+P0P9y5bIyDJHlBqoelqeRb5HcamnuXzpKUPMjvyyEVpSOEAzVwk+naI\nBw1yBix2kG3/FqcN3UOalDajfNNCXFjkyPqBfwS7ex6Uu+0HYO0IsOhsl0qo\nSSJhCPiZBpOK23jCco2/NNr+Htc5l3rWqqfFHleFo7/0MPyJKP/4xL9FK+6m\nlf9AXGtgk4jlbVh3ZQThV7WQFTWD/5wtpy7kaq8YieVR0utJqz0yN1Ej63qj\nSPZPs+03JAfJcZFiglMOtk3+A5uZpeQi4QWKcEMw8DzePmz36oq11p447zb6\nRcUE\r\n=SzRx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/http_client":"feature~remove_inversify","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d488f1-k9s7br9p_1588579710916_0.9177180205454845","host":"s3://npm-registry-packages"}},"1.0.0-feature-5f9c13-k9s7rikh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-5f9c13-k9s7rikh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-5f9c13-k9s7rikh","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"002adb76472f385161bd19d28e312ae3bac5e9a0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-5f9c13-k9s7rikh.tgz","fileCount":304,"integrity":"sha512-D3NBrHNSjJZbbqXO66uYCJKKNRgeH/xbD/FQqx7pbgXPI0aN/9SGmY8KGTNwXOTycQ7DKrTI2VI5/v9OqLirZQ==","signatures":[{"sig":"MEQCID0xQjkU2izv0LS94n4gqqI8V1l9Kstxq3TZh/zZHUAfAiA4hCBbCnvUZ3vPDC7N0aVsXuDvkSJDYpLSQ37MwVMCxw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1426510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJer9BZCRA9TVsSAnZWagAADmUQAIgbe83Xd1Z+Wcl8Xew8\nNwvBxX3uQJarTJkB2D5fcIk6N2Z9lvS8+N+uSrpW8Fm3b4FlCpqpKW2N9hGd\nfo8zfeU+31H6MthI4DWl2SMhVOEcdJx0xWjEeDDgb8O9pYXaZwFa/yU8XRsV\n2dUTGQmcESc983eZoYEbym4fOsw986anKAi0mF0gobeXNbl+2bnAQ0qvkoSd\ny+/Ne5jDLhOKdjY1RFn1x06Po+Xk9g0tQd67cmyXirMy63u4LlnS0CDnkQqZ\nB2iFy5gMXte1o7jv3r0aovJOI/cHRmc8u3lgsxfQhqxYXduLtYTCYTMA8rqB\neqNIWp3v/b3GI4nlvJhvZkcSVAlIot83MSv24VvOYc3Re+AUz2WqrT5hAHF3\ngpmUAQ4vZHdCJUN95CMyXLu9I3q7nWiu2j+Yr8XBEWUtYqi1jQfVVZm+i2xE\n0CNlODt7ECoZRuAgqC2V/pTM3uqMeBmYnsJdI0okVp7AruOc5TNuujK8zNuY\nf0KSontsfjK5WBkrGfQVTGFGh67yrWwNPmK0pZutbEffWgMtLgqelacZte3x\nJA8pswoIY/yNihA18+RdklSY4ty2NRCRxvatgIrhWlTPLUKZTxOqfAViOMzI\nfm+7nJbuwdu9Vhc9UWITTwpftr2O6RTj6sI9MLHOfWoxd2MeEQAj8pQ4i4wr\nOaBS\r\n=BwxD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/http_client":"feature~remove_inversify","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-5f9c13-k9s7rikh_1588580440687_0.5402730009547134","host":"s3://npm-registry-packages"}},"1.0.0-feature-a6ae20-k9s8g4hy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a6ae20-k9s8g4hy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a6ae20-k9s8g4hy","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f832ba297c75189b0f8671b2c3b289708792826d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a6ae20-k9s8g4hy.tgz","fileCount":304,"integrity":"sha512-bx3N+P/FQODpQgAA3zCuy/UD2igVhtKlcmmLwQHG5qNU6aZONi+AXXZoA1usdnk9PuK8C7OZyC+T6UD3t8Iupg==","signatures":[{"sig":"MEQCIAgw72bmjvuKDCejOoNZMLT2KfwL9HzNHaEntos/VPeDAiANESn3ZKMERSnSxpU6vhTEPGhlwJequ6ZgjJAsJBLKdg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1426510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJer9TTCRA9TVsSAnZWagAA5AEP/ir45oJgfHnnRjXJh3Um\nCDVc01aGmHYCVTAR4A1r/3oYcgjv7VODDPljF1HjhFBc265/6y8Ghb9+wl7j\n2VkieF46i4Yx9EVDp7JG4+TEEr5JuqCjmQugCn3IbXr/ZoTVsxgKyiHmUao5\n0a1khua9RX4p1Cj37tbQVRgS+mucLpYqGXHg5CuotMSUCCN7y3L5suGM6a1S\nloYjKKagMiKXXKN10bfdioBlJx300SYyGL/Gex+5AhZoSNDNLpmhHmkDH5I4\noatF8wLiBZf2WX8bXzI2pW4Wm2SW8BF8bUVALse38Kf4OM+UcpA1nRpAtwcD\narnVCGDBh499GuQFaFOoABKTqZL2rsuue3/TKkRG5hnzaQ140ev9G3Y9J2f4\n1QihRbvCI/xsKf8QvxlwHh5yd7vLkPVxZelg+N9Z8/tHSBMRGKbhNHy3OXVT\nMsJD8CTp8D1/as9+sYm+x+SrbTx1ZN8VYCrkZx/HZ9wLe0mz02V/USZffYDQ\n4z2kjCJofsJr6XHjZOmQXcwTaCzknW11/Ly3tXMH0q5dER5RPlan+LSgmLwr\nHQ7ldp5CIfAsr7BQO65IMw0u595KruOgAlSOjtFJXuJJldnkhMOfoROgQvpu\nEAX92cHgfMy+ORn1Pjrgn2UbVyCQCi4JHzjWVjKbkbiywyUfv6pdoa6QXMQ6\n4n7c\r\n=L+HS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/http_client":"feature~remove_inversify","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a6ae20-k9s8g4hy_1588581587481_0.49191310603652183","host":"s3://npm-registry-packages"}},"1.0.0-feature-59719d-k9sgwbzf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-59719d-k9sgwbzf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-59719d-k9sgwbzf","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"53bec7ac68cf3b235a75d7a971aded331074c99d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-59719d-k9sgwbzf.tgz","fileCount":304,"integrity":"sha512-mf0QbxJoQKmLU+ozEz3IIqdp05rtEebyNixJoUl/O6Hgp9YvLfPrviHcFqfGsqkZQSzLI0eyOzWc8d5kGC0hqg==","signatures":[{"sig":"MEYCIQCKV8DxPZ2P24doz7X+d/DW6PGrc/qr2IAq9qBjWxm4BgIhAILXA/o2oHaznM3gAjEceuy0TLH8FbgM8XaNjPozsNu4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1426223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesAxICRA9TVsSAnZWagAAfAwP/iZAbW5HBxMfYku5Bv7x\nNaBTcu8yG0Z/9J+IoqDo8qZmIhexja+oH6DaLu/tbsnycSg0ap0L2UFMFb0q\nOpGdxwZngscjyVJ752OIQQ27GjknrlmfZyypvEzxkgjvCBT9iFi1dBR//Soa\nuDWBCvDKbazXcZ0V/4u9I9fVoCAvMOpoYBwwJr7fypIeVmscp9CBCqiLdzO8\nKUisZQEkeY3fwbloqfUrhA7JUSNle7tE7easvFj6suG2jc7pkdPO77Lxd3iP\nCZkO9GBwwBJu9fJckbc81myoeHmzaVfJEkGjzSwdKaIOTclWelEZLcTYhhEs\nJunvE/tNBMJY7dP0QYOOjEcA8nCsKRyXKE53jMkRyLVKjDAS5Z2U2mDE3/Pk\nPQEGCEOG9eUAdPGzokYbEJYXrtIOe0Um4AckRpHDmw25B1uvkoUzkSQZZ2LX\n9JtIkliTBgtLG78GJhnZ/glzSyTY+IqQv/YA2smUexmjB78nHIz+KUWkU8AE\n+a0On08uF+jOiPHNmbPaQJ0gBAy06bKosH/tgXkvnShXzs8Oe5RzqTvMcgA1\nZEgfXv+ZXVFEOhVD3Chx1WSMNE5IKxfU7PCxZvQwtgvDfbujqCjE3J+q6FPp\nvw4hQMynnb1ZYYns9FkNjtogU9q3ZYAQVIrOiRlck0XYvsxbeOZswbBIoSZf\nlKh8\r\n=rD9y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/http_client":"feature~remove_inversify","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-59719d-k9sgwbzf_1588595783529_0.5406202527167687","host":"s3://npm-registry-packages"}},"1.0.0-feature-ac1add-k9sigujq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-ac1add-k9sigujq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-ac1add-k9sigujq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"be639bc253d38901ce7cd886f5d311e70cf1c41b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-ac1add-k9sigujq.tgz","fileCount":304,"integrity":"sha512-mLqyNNlmqF9jXWznnAU11wgGIEFvYP3M/LBMi5nZ3iBQFtk4ksp6TqlNqNoTVXkcmu62Gt7CnNXVjng6Eubz4w==","signatures":[{"sig":"MEUCIQDA0uVZjEKftiiKuFktplngATfndrwIbIdymDwFzIb34wIgSua58wwOkIqGsxdQ94aTw5kIcjMfzlHRwHtARITFYwA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1426213,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesBaRCRA9TVsSAnZWagAAbYMP/2GBKHFs2yI3knWnHXJL\n21OeKvlXV/h2hb3kgV7uPP3F6ekW6iZk+cfDCmN8bmk3XUQZBM+mQoQEzYD5\n5KFiWqEy7ZjTmOhWip3534oOkM1s5Jkx26MCzstIxzoEQ2BNR3wyo4l/UULQ\nyZxFE/IddtF8hjK5eMCkGRMgAyNtdWFv2GmT8MUxeY/trXB+41q2u6qkWpnu\nlwFBl0BDmcVWOM+FqI39f8esUCVJxSAmltjP7xmYQVjYdY+gLT4u0WuYemPg\nJ3MJjKiJveT7Sto3OfezqYM9+UV627V1xxc4aV2vWs5OxrMgNEwPNrqNBVC8\nVnJcGsww6opnCwECGy5TTIDb8hYqslqaH0MzxAyRfjTHEEhw7NyMVZRxLrqC\nlCLIpoa2gmP1bKOjeqLJuBsyGp05+eEYn1sDEepCGpNHFxUJAI017B7Wp74H\nNp7I4elIPdZitoCXXo4TguZmtOJNVtVdUUnIxzr83fY02aca8UVfDOlRU7F7\ny/8uZ5PC5es4Wz3hH9g1kppYayQkEqSbs/IWCG7lilIIdCiR1fZhxMIESUo6\nyXBdJ3PfCsD2cEVgg/aQXEcd+FstBGSe2B5wuSbR96exIlphfnDPithe9O95\nbqh0/nh1WuyB8Md9Iz2zi/wxkz8HVl0KEL2zqnFrcjudJ15ZqXf92nKO6ENY\n7KYH\r\n=ZQHJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.0.10-alpha.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-ac1add-k9sigujq_1588598416411_0.23599863130243537","host":"s3://npm-registry-packages"}},"1.0.0-alpha.26":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.26","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.26","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1e7a5e4f8fa455a2e565a4601ff3ab3285e16cdf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.26.tgz","fileCount":304,"integrity":"sha512-DeeOhaodFUPtm65xWiqKO8c4lbnwQS8b6ATAMwTlxDV2utMuL0JacI4SenN1Qs4d1H1/lw+ngKrrqhDdzqiVmA==","signatures":[{"sig":"MEUCIGzE9EKKUr4A0+rrSNlgXwefNPMyEH4MIxaOzsWuSW5UAiEA2hJuZoFRS+sXrdE5AN7loKRtPJYrmG1BY1FRWkuXGxw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1426198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesBekCRA9TVsSAnZWagAAhrcQAKKxHcARxbGhtQhyI2nQ\nW4Km/l4eauA/XfYDyvrLaf5HWSs037ViEYB5Jtsiovp0dBkw4iqgIKt6s5dl\nY7gct95YSlPTJzx2u9j4d90ptom/Wcy2aKy0oswSMxoyIh/y2FjpPoc1eftI\nBK+RUByKV2eRShkqViWSX5w3MINia8Ujk3ZxDrJqrylvlm3uu4TfSvu6MkQg\nj7IZMwm/It6OI2bED+71RK6Hup4l2zubJdjlKk8X+zZKP0nlCSpSdhrVqsUs\n2/PJSme2PgcJpV2+UP0Ap6W9Tk9hyoQJMVhTZKwPI92vvsRmTHx55545EJ9h\ncmsm4mLrypRktTVyLPIY1fekuEPO0J9VUmOcKqaOQQ7686stOJEQTlbfeqjj\ncLgqgAkCWRr6IvwBjJ8kbnpUt7Nqgc0UmyZMyAh7cvWIHXEkITTWHkgYu1i4\nZ9jLTWg58gWRmvRaiMa1fQDcNPWI50suXUp7U5uSKr0KUILw80WrLMhMUjcZ\nBujDghSg60rE0RnLaphMU3fsjmAp7PYEGuxfmlhcdVGWFThzXYH5Gi95DklU\nCQriPIJrRv9TkrNNO1roC/+Haxwxh2w9In+Oc1jKKHu0OeSezlK4tW+y0ICG\nRDYtG1EI6V5ERBz9usb+9kUdMskAXc+doN1blab3uuGXvpR/Xs3B6x1p9tss\nbxzA\r\n=Jniu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.0.10-alpha.1","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.26_1588598691471_0.520265882593369","host":"s3://npm-registry-packages"}},"1.0.0-beta.7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.7","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"26aa139ce10e14ce95ee0f90a9875a09dc2091bd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.7.tgz","fileCount":304,"integrity":"sha512-xXUpfvnDIphprWyJwXRE6kcehJq7MrbfW3AZybmKuJ25tZx5j/ZnDzM7sLIy9veeJ4bFXqyvfovDWNzpn5lzpw==","signatures":[{"sig":"MEUCIQD8D7vXlWmezlm31xIlsK3bbz19dyC5WBu+z78ijhcTvQIgSu2u412nRsvcpwfFb9MoR7Zob/o51tccWjyvGAFjgZc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1426188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesl7ICRA9TVsSAnZWagAA5ccP/2QIIWD++4S8bZFe0SOq\nz+kihext7spSxlMqxJ/7WmtgBi7EKDOZW/9PVg22NoLmc8P+xl0CkOYgX7fL\nVuseaup385XRv3BZpjG2nuTCqdu8qoGF+uKaJjWv3ZjOOmkkWsg7R6CUUn6F\n1HZASB62mTIXBy3IGPM6jUChD6LWwa341r5Rafs3/qRRUfcTD/zsahE1Yykq\n3k+2MJI+E2Y1gnMXSbN2eRckd3+tiFe/6r3VJRArX4JIKePnD/LO4ZnniZNw\n4RzZLK+Ga4xzg6tT8zG163MG1qBtCzWa6qGP8Q48hZa7Rkjfww98ZjYG8TvV\nRIyfCSAsANzXiUu7YrszINCI4XdCsvFaLNya5NcsZmao3ind4FvFCaB1H5yv\nxypoEqQi9I7cPfsQj2hC2HSg+J5ihW4UA4ZUQO6DvG7WqpAVYLvMj4bE1G4C\nfkVYPJOcB4liILV35K/c0gtDA3DrLy9TAA54xUp5CMQAth+RW2ecRFlExhBp\nVPH05tHbw42q+J7S9JeVg/p2eewOAsOawrmNBDVZVGDWontTXv9WNLo+w0DK\nw/YJdqGX4Kja4F4HzVcacbTDhK6we+9I1cfFAoioVWIOhds5tWys/nLkMS+o\n7L5wHC8hBaWNJ/YTQQDkwgAzoLIQ+WYLu5+NEnEyM46PRjzZoJwV3iTNTubS\n3wQb\r\n=G6kB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.7_1588747975673_0.5975009311465096","host":"s3://npm-registry-packages"}},"1.0.0-alpha.27":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.27","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.27","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5f90da5cc0e1ea502cb16a4ebeb7bf1ad362afce","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.27.tgz","fileCount":304,"integrity":"sha512-QBa5evvhN9OQAcluwU4HXOdOq9k4Z5ymboKADFyJqeBHe8uCC7abuTXFM/5QlnguxNJouvACHXGwvPayXmxvcQ==","signatures":[{"sig":"MEUCIQC6Q+0sCrQVhWLTj4GIKpGMoXAuYB7tqsWRX3yG9ZNquwIgPy0bE/XsJZmoV40V7Q8oxkvrHrvtyUk9AVwcHmL5yNk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1426190,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesl/XCRA9TVsSAnZWagAAH9gQAIAvsi9qI7iUQU11InAG\nUkAnza1qwocwjosZjxkll1QxBely4Qkyba/GhiSzxXF/uYphfWOtGtWkdo2o\n4qMiLTghlcCZ9v0G1kk+qAdFf4Bfw2vW7ro1fP3RHQn3keCeZkSmdsJ468Fn\n1SQiWV9EBZ+4L9Z4hK4b0NVVdo77uEGsexRYcvgJwI+fSCBK/hBripV3iRUA\nFhO2iJ1OOfEaDnFC8xXf16a/lIVb0aeFBqmjG2l8n0+vN9YbYWN2kq0wpCWs\n14COgkgLQysyyD6vEBDtef0raHicAjVv2zYQmoezZt8HGf9n9HvDgjkvZTDP\nNDBIov7U4A5BZ9+rLioHb1hX3ljQqQxjZcPUePa/jb2NMfXCMaIDtBfpsi2e\nD2JUj9mdMoccN/ezLGgXe2ecuebj9lGj/GV4HhPWLIVExHyL/EpR4dKJUrY7\nisbH07KnthHuXUGQvZNoBlYTnt0fAniAdKf4a9D0Fyucf2tU7B5mnmw799s7\nbAYSLGIAyAXOdiTt6SMBzmRCGyTmg0A4rlJJR5J4V1wI6l1XRIEToTSoblPn\nckPRx8kHqNaVza8rh5ax0eCU+bmj5NWaibgpsBAxpsuNqDCIpVQEm/sOvM9C\ng1XuBfwFJoNMJtqnLfl0k4+3MsuFqNyVQXMcsXRKLOfwJcHuC7KxFGaQw3JZ\nDx5H\r\n=w3ku\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.27_1588748246589_0.7848322840194901","host":"s3://npm-registry-packages"}},"1.0.0-beta.8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.8","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6af1a53a62f08e322ee9d15003e77d826e565237","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.8.tgz","fileCount":304,"integrity":"sha512-DhqoELWhhKmYtloj4a7op8K5nps6r8ZWSXKQahO5NmGpW6b8n+rjrlfJi5B3L/hvUfXuW1l3aRkGvy4y8Q681g==","signatures":[{"sig":"MEQCID45CXgwtNh1grJ1SCWowM+4LmDX3QqtRKa115ZTTpkHAiAmUNSaAMzJGmzbwTrW7/8/CTnOglvWu1JCZeGkKx/9wQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1426188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesmxwCRA9TVsSAnZWagAA5/0P/1M3pJKSeSmfQDFGRfdL\nn7m5Vw6d4f2nqTNDcoaGb/vWqg98Q3ZGVdNAWCsjyz5GvVIgUgZPV7fH6Flr\npA2nODkZwAl657mpNizveQi9f3kTyMrutSYZLoZmMo0xKHEHmCpuCB6NhABa\ndNfuLhuwE0qKfm91OGSpqtSYhzCIXp7/o1wMVpZrYlrrhGig34gCEz3mCJnE\nZfaATDPM7Bmt9ZGag0jyjO3TyF1sfR/SMtX6zdtG+2Ok8s3p8P8toUMrOGRO\nYxV1iHxB7tK8sdcZ7b9dyN5dM/oD4Zhk+ZOJWVhvGYwqlTrEMc2BIyBBFapQ\nMUVXtxCjpHM5iVkgilD+IlXiUZFH2E+dRRCXwAwUTXr37i+5TZQDN/U18TU1\n7tARBRCezCrlxy+Dha/dnLd1Mhn/hiqS8BF3j6udxhTX9FcgXWQzoYP9s/Oq\nnG2XY/ojS6gPYG7gAW1Gqm8OFWgtpGk+hXnoKDSQPvSE5kb3L4jFHgtXbjNy\nNM6DqvbZrSJeZRR+94xqCqi4w+cHMMp21vg+Y0mEHP8JQBkFTDX4WTxY5ez2\nvWNetGyPFroyd2zfR3bORy1MPbx1DJssZo8Fo41kk0SncwOfE4JQZ5H6TuvE\nSp//OnXyedpSfkJwyzR8KLY3rEsN5sWi+jaAvgTr6kDXYbKMLnCOnGXvQC3/\nGORD\r\n=uJuY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.8_1588751471827_0.5751126501171457","host":"s3://npm-registry-packages"}},"1.0.0-feature-81268a-k9ve35eo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-81268a-k9ve35eo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-81268a-k9ve35eo","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"86cd540a77a04610240b4cee2aa5cef3ff4cbe14","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-81268a-k9ve35eo.tgz","fileCount":304,"integrity":"sha512-5pDZOUe8KXPvDMaWI04k6jYa7hu8LQA79vzsnB/3mdYmftTN72YjmdYpv0vdnvSycRJALbsz9ViN26ZFUsBPVQ==","signatures":[{"sig":"MEYCIQDG++KMcqjY/l7Ij0dA3BZtz1NY8p1qlsHlSJ6LIcz/XAIhALm9ap66qH1henq+S4PMTWbsjDjDJdnmUe6MXiH5xqB3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1427426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesr5rCRA9TVsSAnZWagAAiKsQAJYYTkmTnioOTAshArnY\nhMNaTZ3EHdg71MRl+y5qdA7ReM4dhIcbID0vRJP/pXdVvfWCS48XzSsT8Ldf\nrvKkFzm7I5r2kRqdGD10s19vElGASWXYLbGfFFLB0gawFgoLlZfVxgIbRhW/\n72GCMuNglwX7hIGfcT6owS5KNR4YsbP2q7Y64oqP60u10jduMIzRVnB+b4h7\nXahNXH4yxGiR89z40chmoSrkl3oF32sNVqpkqMIwjgdnVb7cXYKEcSFRDmHn\nSCWMhuBO0EdIo+Mm9ezJaiC90CpdIqZ7M5u10SI7KebjAekTIoGk63GGTX6+\n6KuSQqZ32Qd+hRLHSYULpn0sC+fEQc8v+kntV25Wz0x8BgguLc0dHvEkupNP\nR8WSToVScCArDG/4y8r+gXQjU6qeWDR/I3NgEiwv/9VVMV7X7sV5Tc8GETIe\ngbWN9ChJRN/G41NbscYzeVYimdMKy5EGbu8PirzWuScKVADc2ynbCkLKKvq/\n5m7Yn33y8W6nbYRy3eIbozMOfMq2yDnLKuU1LCbjaNIvpl9rtSb3vqX7mwHN\nr0Bque+U1yVQ7uBduUrb08diKFFYwdmPSlJRvK48w7DmDS2NYDWghTMRZ4cG\n87ypcex2SYx5Z1sQVf85dNPEy9my3lJoemAhch24ZfrO83TBkhPN1Rh85Rgl\n0u0C\r\n=5iEB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-81268a-k9ve35eo_1588772459083_0.29531343876442606","host":"s3://npm-registry-packages"}},"1.0.0-feature-2837be-k9vf0v50":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-2837be-k9vf0v50","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-2837be-k9vf0v50","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"74cca8b211b44cfef1100804ba19d93fccf6758e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-2837be-k9vf0v50.tgz","fileCount":304,"integrity":"sha512-ZAuuqm3bu+DqrWi0jwRZiuPiwq9VVS0Jtj/sWRVI9FX6NlkSSCZeh1Cv37Wj+95jrAUfAgFcRnkKnIi4lnQQJA==","signatures":[{"sig":"MEYCIQCwCIdcLMiNcD6FZLnXKWNEUNSo08J/skjUPGU9LSZj3gIhAP1SPnB0V8Eae8Ps2PD0EInFIJ8+C4ahQuVr4gmdtT35","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1427172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJessSRCRA9TVsSAnZWagAAP9kQAI32zKIGt7zLPWMEmcIb\nBiRTt3KO4Oh9qnS3L9bA7kDIGQBX3ICY0/OkQup7pP5pzfK8FSj1cV0vUiOp\nJLFIMwcN2r1THnaSA80uO8E3PmBs9uVI1PsHEqf0u2WZ1YIztpjQguVCuZ8G\n/AN8UFZVHD30Oo0uB16eXUCvL82zO6Pih2lFsAm4svbioWGUZw+5jTu36moC\ni8Msw0BoijdY6JpuQ62dOtq//LOSiVu6jv5b5HCIU38R9fycW1bKqhxJrqBL\n8bNluEFJjg+6NYlwQ3FYRLWbcJgUWutdKwivbSsmWWAGh+uwv9383oVeeP29\nqGQqvcK0jb6+zvDmXzBJ6+5rNp9SIzOfbmJxz62KUNkfabnjcU8Ghasdhlfg\n6YGWVQHVlKnZKpQZPCk72xwl5K6cDHLexxjpMeqYJi+SzZ3a85OD29AX9Acg\naUwu5nYL8FN4Y/Sr4ECK6VFX6i40/klNqMnOG/ulpbgAVl826f/0RsiCSixH\nQcO92kJfx5FHv08T5uaGTGMl1FrJjWWA2lt5+QQm1UY327rNQXY57QjSmAtn\nCMVVhS150sczlKXNAFvL3jGfgDmZoDxEEeopyk2sw7Y8xLsrWEut68cgKD7/\newmZlOBDTD513guvAWxWmyfVBKiEjvCr4uXgJE+RqzQmL7MWgYxiJ/fopJz3\nFTLO\r\n=9P5W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/timing.contracts":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-2837be-k9vf0v50_1588774032663_0.9682871396334392","host":"s3://npm-registry-packages"}},"1.0.0-feature-b460ce-k9wjyova":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-b460ce-k9wjyova","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-b460ce-k9wjyova","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"271df834a72dc94e85b2e1f2987a07e5b7efbb5d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-b460ce-k9wjyova.tgz","fileCount":309,"integrity":"sha512-JEQk2jkiHRslCmhPJeC53dIrB64utOx8ZMoHyxg/CJfYKxMNfohoLduCvLcAPo/+LsAIAc+yvZSLp/BKkBZ4zA==","signatures":[{"sig":"MEQCIBi0s+md5WJGHZ1rPb7OjCkJIy97UoH/qDX9N3xKH6rLAiBpq98BXTnxnje6JPuRfrZ/LOx8svzZBsMmkw3xTBmD0Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1471166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJes9EuCRA9TVsSAnZWagAAYzEQAJihXXBQqwYhqulpbd+1\nFTObhbqRoBX/viLVV+TViSVBvzFI7DnVtV7hdv5pJUP5nynfnIqitmzQ+GPS\nQEx3Lk8T+TSx1z0zUz9I75kLm5dypX/Re5Tc5G9/Pn/UwoW8IQeokRSDcJTi\n/bqsNcyqGlW2uaJqR2CeAwpBRN/vLhFKEB2HhFXYjTR8HgVDKl8DTcAbzgnK\naDSS1jsgWb4+bH7hPfbLvTvPkq/bsdcOoR77X7BDJtqMEFsil5YivQoO0KPT\nCx2jbYJu+76LKYi7YJIi5PAXhmw5soDr+Z88cfCN3DXUoKKdBnTKos3yIrex\nSYuYxunPeOUSCU3XAAqu7LlaY0Tmnz0lfqVixGaW/RAyk7W+Sl5i1rn9epcu\nnKgYuCziEdRG1WFh2Gq00g9XsHjoNorBxQNNKFlHs/X7vIG22VG71RUf8JV1\nW2qmJ2awjnm+IVarlYyO7RTiM+hskpxGJdBNOjO2u+5WdUIAyanPhn7YJDKL\nN8x3eg56ZyoGlahS25Q4N29ZlSMsfn9oUOFQrfd4GqBBXiucXG00kgFAaGMH\nddKNRBSZ+5toe0PpZ4xqPodrKzSnOQcWZT+fOoCWCv9czOrvETXRTwz/e1cq\nHc46ojrdeR3w9fdJ4D3U5KixvtXZ2RET8l172eMaL4HAwHFkRIEGcHATdN6Z\nGZei\r\n=GTL8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-b460ce-k9wjyova_1588842798449_0.2232325924048002","host":"s3://npm-registry-packages"}},"1.0.0-feature-ecb352-k9wmcfw6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-ecb352-k9wmcfw6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-ecb352-k9wmcfw6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b6d47886b43c466a26f612f19ed4e5491151a055","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-ecb352-k9wmcfw6.tgz","fileCount":309,"integrity":"sha512-zMtDwIuRkat/bWxedDbFr3tGWckBnlufI8ocmqFuglx+pDreZec1OEBsynGtQPKuSNU/6nX0X7fkSHKEVAMaVQ==","signatures":[{"sig":"MEQCIGHBLohtgKP7SS2bFP8Jsx9He7aSlDr+m+7ZM7QvxKRhAiBkqUg2IcqPnEJ1T3VSH3qfL36gytXTsZHRi3+q5V037g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1464436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJes+DQCRA9TVsSAnZWagAAH54P/iycitPBiIIPY9SXBOWM\nXfPI/d1CktYYNUkcGWLZ928l7UU213aEUiP0kLlb//y+fLdSnSwAIO6NShcc\neCxsbtG1uyQwCej5oAGX/XMN0Kz2KrSix0AE1hkiMlOilt4K/bMDwpv/DvCx\nWBfexf8L19ssScQwO2gZ0xZ7dqLjRtlOGX02/gE1bYkBc2R3/XsA57kUOM+T\ngz7WpcvjTKBy1wPJq03iibl/Ph9ISVJirj9PuOalU1t3LIPIfZ7qzjiQnIel\nPsqEjWshVoPdi29pZcanpev619EyiBMG7ACTkl6D6bCOJ7bCgq7k4dWPWa7g\ns7DW54JSfvmff8sra5NzkbFJET+zjJXxL1hiT8xxzdrmluR7clUxYw6P23F9\nOv39ae9OjYkLqNyv2VQMqUaxSw025tUaZJlxPwWyRj9qUWvKLFzjd9VNntB9\nvbK0hxrccQo89RTtDk6qCtVayDd/X0w0XIHoyt9O+HhsEYUmKudbsa/5drmv\n8v1o7mecY1ttZGmy8XIaD4wQ8rgurDIbN6Dz1tuTmofeQqDkdEf1rKbC0gkr\nhI57JJVkedquufaouMB0ffKUaHsokLlqP81jjOgtJPNC8+WlmbE34hgN7LFB\nqWPgpJazLJxB8J+QAfcY81NEnqEMrbI1JB9KK3t7YDsW4d1DKINrLBvhLswU\n40jc\r\n=daPq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-ecb352-k9wmcfw6_1588846799523_0.8715057641580968","host":"s3://npm-registry-packages"}},"1.0.0-feature-69f04c-k9wnn0vd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-69f04c-k9wnn0vd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-69f04c-k9wnn0vd","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2f02cc6ff9fbca5e11a545c4a22478dd7845fba5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-69f04c-k9wnn0vd.tgz","fileCount":309,"integrity":"sha512-RSNevs/zmpQqevvEh5Aut4IOkUIkSZdchWyK5FBWGmekJn3L3H+OLBGF3Vw9J6Sr7wCtrb/PI8zfDd6wDDxOSg==","signatures":[{"sig":"MEMCHzjMpc5SsZ5tx8cMGiuchzvvJOLofUrLxjxCkVUfHxsCIExlUfGFxu1qI0OluXYvfhYsslMQKPmz2q2jEjnAcY8f","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1465130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJes+lLCRA9TVsSAnZWagAA+AMQAJhAqkVlehGXmHraxUf9\n/CBD9pOlvOwCR27PZPl7kEAHoioOqzCT3ISTpVdsu50BpuVWBn5+O4w/HQve\nWYhr8UH1kaxTKO6VsyR6iDnRP5f7iDBvMcZ7J6bnN/KogJ9Be0QKc49qEZle\nervFv7WHK3bt1haH9SXswjAZmRu21dNUkHsRQvnzhz88xn827yKXuIBomEXS\nCTVHcwaoNh/SdgRzk0LVsTbKjGyDHd6lAbHCYryfTpstuXYiiWzEP6Xt+0N+\nSV4/3XrMhlUfdk4FYuStW82M31FXvOg+fIe/K9eTfgnh9/UNmq4APVM6C5I1\naQv0PM3KhaRpviav14zAq5V3JreUDA6aP4pa/1p4sM9qpiSVQt6Kv3EASjqU\nGffZ2E6X9+k/v2wT3c7KFUKH7bXJckd/H3ssyHwVBa4dy9DgzxfDeQu2l6cL\n9ol4OUBXAdNh5L4Tz8gG1mvOB6Zzj4yoYxfP4xATdsQFb0LZHGR3aycfJO4R\nddP0h9b4t8T/O2sQVdb7ZReCRi76cSUtdxPEmHYhr6I17AE/nmjxBMDFfzwE\nizeR7BcxngW4ESJB+OkABNxM6v4Xd8/dOKmF9axWfzYROTuR79CKOC/TEz2m\nw5f/wrFBag1mLLBD37MHvJYZDEARnJnXM4gsJTthvUc0B7PYaE52nRYw/Ojl\nwUI+\r\n=3AuJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-69f04c-k9wnn0vd_1588848971332_0.5213345709702921","host":"s3://npm-registry-packages"}},"1.0.0-feature-444932-k9wnskbx":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-444932-k9wnskbx","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-444932-k9wnskbx","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a890518c76c5d6a245f23db961e48a69e925b2ea","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-444932-k9wnskbx.tgz","fileCount":304,"integrity":"sha512-fN9T6y4eYhtXza2fHGRFmziSM0IR50+/Lcr4aoc3SiiGTGpy7Bf0C4tiuYL1ggHH8mbPjOGFgJrWj1ihhwqUYA==","signatures":[{"sig":"MEUCIGSD7ZQHLGKzj5zYAm7PvktdP/CiIowgFQ2QdJkZcPJcAiEAxobgIOfgYXLdYVe3Cths3BfeDFhQOP/MOPZFVBPwBPo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1415426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJes+pPCRA9TVsSAnZWagAAr/4P+gIJ4AP/5j6TRw9dMwIB\nesX+P9vpIH4wJyAq0T+GChalMIWpxeG/icvPMMUZYimVC7hWlq0uc65/+l4M\n6oc5y2NWlLR+UpS/FUqVwMa8wrBUW7raZ78/bEPQQ6EFVsAnvz2+kQ1pFy54\nnUqY44eE+lWYKAChgfnqXMxLLyWB+Nm6QXvi18IYvloG5PB3Le6Z4d+nOUd8\ngv61yYPHOPVktgJoRqPpWfZA97nigiHqMBejfs2/0hj9ruysB1F78LltNT9+\nVvI+skDToMMAivHO+L0tKuSdErEwvZq8v2I5eqBB7AI1dkKlLImqw+aDj3jf\nstLLngKQyyBD1pN51bBBOe09s5km44vSF9J7mY1Fn3Ki6W2MxVhKkcbgq54g\ng946KtGllrv2beQ17yPMytNO8DOjFS0gR7UXWA7zr+sNK86oVDUmCdYc76w8\nI7+I01jXW6YLbXIYNsJQktuaTZqvL66eBDIvP4qitsAQk3j+AHA1Q7UR0dWG\nwpEn40GX+LaBt1WFas4JnEWh7NgWmZL3Q3TuLkmThGid2KyvBn3Y88OsPE59\nC6IWjlcfBXXy6YrnwXnhmMc3jylOG/FrARh3u/EU9IbSwedRafGJnfxKzL8u\nY34kNaAi8o7OtDKx4pUflkbK0/RcK6K3BGTrsHTyegQXGWrR3UEVazIzLJb2\nxaOg\r\n=QjDw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-444932-k9wnskbx_1588849228333_0.6885287096388524","host":"s3://npm-registry-packages"}},"1.0.0-feature-567fe8-k9wqy6u0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-567fe8-k9wqy6u0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-567fe8-k9wqy6u0","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8366b8b2335cc280f04db0c006c475970c71f286","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-567fe8-k9wqy6u0.tgz","fileCount":304,"integrity":"sha512-TT4MhP5Baci3s6HTPh9nMKJh7dVCr7/jgcXKgBaOx/BupgUIrF6r3CF47/AsEpafny/kIgIu9mlWAzA1WzGYdA==","signatures":[{"sig":"MEQCICdX8bdU+56RnBq19/8A0JWIPhmJE0aLKzmG/gFMYAp6AiBvSxAIlbqC5YShA00DFm10FXO8644VrPcF9T9NulF0Zg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1427426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJes/8ACRA9TVsSAnZWagAA2bIP+gJojguqOkZrWRRZKJuu\nysXfV6IMqXi7WIj7zVj3bfSy3/NKJ0M+mM3FGyHleTxlpM4ThRpE03oZGnxl\niKZd9E1owRPLWOoJHVCFZZ+URWnnhxr41lbzk6tk8Y1jL3fHWPWuQaDohGSO\nwEJDUDg8LggELEDkOrkRdFOtKv90SYJUZUhMCBYG1UTMwiwidajlCCU5iO0t\nsyZEwhwMck6nq7mD5uckIt5jFjS1rkSF9rj5ZlDSfhxPy0OeL/I8Uxu8ktuI\nPZUx/IlJqoAU855O8mILQvQn3xUKcf92il5zh1hk3jEme3960sYWX7VxKcEC\nYnGsLYZGjhbZ98U0KzpVm57Z03GW5XGNa5e3WntngHYUBtQU9HzfpI2cQNuq\noCH/5KhRB9aptUEOiOu0ibZteHmhNEePbdPl2gQ3kTUerCAjcmnsxiZgwbKJ\ngx0blv5DT9uI4XmIsvvSsU+v6Gu+3gwnk3P0frfMM9nCoaHVZzY12oZIjp2K\n0dWod5aHpEQlo/HIwao/A5BwKTXIp8OQFfRe+zFjRiAj/KlA0w8KXoIU5PKB\nIJPy/o6aX7/SkUxgwNg2hsIGsLVKRNV/ObJK3cwd5dHBZ5cbn+qr3vJ3N0J+\neaohs2cZHlPoU2b2AMTSCuOFMzIXq5MhpOZN20lUUmyvIbnr8OJb0m/z+p0u\nyCqk\r\n=s629\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-567fe8-k9wqy6u0_1588854527884_0.5543363800033878","host":"s3://npm-registry-packages"}},"1.0.0-alpha.28":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.28","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.28","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"75ac000e432b23827f14d8f5fb5a1cb4cfe30144","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.28.tgz","fileCount":304,"integrity":"sha512-fbivM1HejA1nj2Rp8ASrUjGwzCnNfm1oSGrB6SVqDWFdcpvPiGUJjtcDl9WDjTNzA0jVLlFKtftE/h6IiavovQ==","signatures":[{"sig":"MEQCIElOZ+bctZ0LYvpwTDRq2Jq4lVIUfpRhcAJI4tFeo/wPAiBC/uwbgjy34vRIqaVy6WNG8MvbEtmEUXpEnpqXbnXM/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1427411,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetAAECRA9TVsSAnZWagAAaUMQAIusoGe6i9OE6pzW6HM+\nsu9HsF/DY2BXhMmyuqqnBvyt5GswyPObOe97TFZkH6ISZb+tJWeb5AlGoddk\nAJJnnKYh3pM1nZWPMB4XZe9TMSqCHvscdQ7kAkXop37CPIhhnlY2dqUnzXQD\ne9hjSRU+ZUzEp4h/2+KIOOkqNYYSxyfR7A9dA916Y8Oj180v00HO7KLEHpxE\npxKgFv61VZenhqEMGs06iq6n2XkUs6M72/FFDq8yLvP56DS6vVpirdlOHJ7Y\n1uAUjmgDt1mwb9DRAff71XqomlHbcQwEbO1Oh6AIjzmWZ03aLvxvgCV4bEPF\nWKEWUCAWX29X4+Bxxw5bXzaCq68KipdStMcabOiwhP4/eY/hqLCdsMTLWdiQ\ni7+3teukv9rsQR5Y2DUMiVKOstrUm0AmjS20VBk57STnRdyUjdHMVuLJ2Al8\nvfuqPdnEoBkfo+osUFB+Yz64/gvuf+0E7Fdmyfmp212n54a9wjZRFR9v/OJt\nmNqYkfRmzgBaAQ4O83DpOPg6jUcDMktdCKe6mAzOzfl2tYmo0o0YJDAXa6k1\nvhR5z2YTKycKttR0EEOiz3rnSm9AcegIovtN2knzRAioQUvSnKtwcG/z+rMA\nEopj10Rv0LLjVRTPaBqisvfHlWJ9+hnga5+nWAdmEgKE4DZgEgwNwsJjVqZk\n7eOX\r\n=7suq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.28_1588854787832_0.5047710430739654","host":"s3://npm-registry-packages"}},"1.0.0-feature-180813-k9wr8dp2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-180813-k9wr8dp2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-180813-k9wr8dp2","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"91077b40ae4c5ca4377d783d5aaba33ee8dee864","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-180813-k9wr8dp2.tgz","fileCount":304,"integrity":"sha512-rF0z+neT1v5VeCT480EEn8Y9tihxzbqtG4PpokgYzo8NbCIEofw5o/evgazrAYreUY5PHbyNn25EXCiCzkTA0w==","signatures":[{"sig":"MEYCIQDa9Jl+OYsmDiUP2jCFEWEPyqDsHtyg52QMELVRBHy40AIhAJU6VoF3bH9sqGV+7QmYeUaJ7Aii1KpyNWA2pG/eEA8V","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1415404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetADdCRA9TVsSAnZWagAAqVEQAKGN1NxFzgULhGnP7BCQ\nxn/fUD3l0EJjgRtInsBzS7ymYe+dbI1cdQZ2jCaFmrS09TGvCmjFgKze9nmV\ncT+PxPgUOz0/dBa1RBfWmtcByWDbUrUnVY1xazfAnCPWCIImLVEWlvHCTMMw\nPltUImTJxYj7mGt1NRQd0qqAahT04a0P3NT4yI/AOG0VM5iUHLDmHv/MT5jr\n/FblfBGR/y3Ter+FKbMfHoSvQzSIB9YyUvLyk7t8oGwb2k2nyY8wKGzzPteH\nm+yA1/iJ8GXqgk/9eX8If/b5zGWi40sZr1sM0RyBc7cYzrcZ8wezHewtgT5R\ndv8/Kc9CK5lkIOqL/zF1wisTUA6Hh3RNePqEoiDbdZ5v/TTpktIt0yHoCOnH\n8CfT/tnyVzqx7QOPQGrfR5uhyq0h3xFSrNoasn2jBmoqxX8FCAVEg7jXCuJq\n2uiOb1cWkSOIjcLu2ZcZ7zF5pRJrH67NZqLTGhta/0QL+Mz01QLthwjLbyN1\niTicYOV4BXO8JB5BCPfdkLbliT4DhuvW5QuZy5yYPgy4uv7zHZrHqz1hEJTR\n2oIMCoD5/+RHoDBNQSdU7ie0VwudFOGgRf5+JnfOhWTEiyxpL6b0uTXh/4T4\njdIaIdRDyyb4YCLJwFzh9Idaynwgt45oeOwKYIlI01SKN4Luu/ZWthkE8h9r\nrpiC\r\n=9tft\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-180813-k9wr8dp2_1588855005157_0.25383491244586476","host":"s3://npm-registry-packages"}},"1.0.0-alpha.29":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.29","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.29","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8793e7e84b1ca877aa1db1ef57c3c8e804a658d8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.29.tgz","fileCount":304,"integrity":"sha512-YCMxXauE1byOBbJgYBvCjWuYTVyNiUemcHaI2n3Pk0j5LBqDJ2q8yhpPoFdepNUuhYxn+yA2EngdOTJ/KsSUFQ==","signatures":[{"sig":"MEQCIHFrD6fImyR480muOIqWshnCuvm+4johwzUPKcxVY/XrAiASiHbNX25Ad4BfmnAX0NhYYf1OjQAo8OISkgVDc4zKuA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1428378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetAjcCRA9TVsSAnZWagAAig0QAJObosqiSd+cfwNCLOqZ\n4gQqRH7Jr/J9vpV4DqZfUbYZJDBoSGx3Z7t5oBxhnYByVZc+4bZNfuY3fJiX\nN8PFPvCnavDUD8e2ywT0qYB3jTFDBpZWq27L1/Htvrcg1wlVLL9AfEhGESNy\ndIpKGbIQNFYzLZxakmKQUrEL5TdK4TjADxAa8ipTCzTgYmlw4GjhStAzG0x3\nLBibSOEMvmRKOkUroS4muQtX2RCN7uO2xKOAymp0Kma9tYo6eCalBuxM8ssn\n7cW0uLDM6k9rro7Csm+rt2hhxemrucWbd+0kzL0bAYQz4UCSpvQGDrlaTvEu\nFZ0ReWKaLaqGdD55NltpnLW6v0EjWuyMyWlc33VERnQykE58otTIKovMlC5g\nKwVEEFnSc67d1BqAN30/zyBB30TB0gFHHRp1SZQ8d4b6+anY0bJ/hgvHnONg\np8caqaxaqLDAdmxYPW+6OGbAjBWv29iF7xiL2WXLVdPmEwl6Sa7aut2bUkFI\nA/10LLkPsJInLEJNlBm4jky82jMPuI0/UKqMsEIW2/R9BilIAISfabOyA4ba\npSb18FGXpM1CiQPUb03oWQuygL2K2OJgtwMAnj4h0fqZ+U011aeggFZYj7wd\n58gszWlW56YiERY7QalaZPUXuljko0hD9Vet7WuMGtddMxnRVRPuiks3Mhn1\nC8KU\r\n=i3gs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.29_1588857051507_0.0371936960963295","host":"s3://npm-registry-packages"}},"1.0.0-feature-0c6236-k9wsrbu9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-0c6236-k9wsrbu9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-0c6236-k9wsrbu9","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4b93adb162e0043ea1e3cea4ba9665475142d817","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-0c6236-k9wsrbu9.tgz","fileCount":304,"integrity":"sha512-AB9+IisIv4/sgwnbhln6mMrY/lpPs7D9K9cgPAidSeLD00V5ENm8FkQnT59J6b2WLwnO8C3h94ETdGRZ8LUgeQ==","signatures":[{"sig":"MEUCIQDb2+1OgrH4/si1dTMHwU+3DzbMvFe9+G734ZURzfZLfgIgcB+3OzhQB0QyRiepIrvhIm3aDCHx9NuaTyIJ/FvlYic=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1415875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetArfCRA9TVsSAnZWagAAK5cP/jZgdDzSxvzA/benppxF\n6mejwj5Rp34ApGH/auVohFeibzg27a/ysaWHA0Zapd7iI/Dy7lU35EPd9e7P\nJRQ2jeesdPvUwpYVo5pW8vYt6F6S/4cNJUvk7IDgDXi8aUtOndIX1/YqV/NW\n9uoCSaDtbFWFRpbMBFhFjYmAzgX1qsOAbMiQNNH1GnHmQL7ncQrkMph9Hnnk\nltYfYbTHL6YTWCeN5fXaDBYtyZW37bVWqcqlxGcHJGyy/7vRWBerSOTNpbqg\nazjhirjc76NedMbSD0IAfCqNKgb2D9TA8XV+h174cu0Iilw8EsM7nQq/HTYf\nmHNcLGBVz07M9FjYoKHYjfNKzvmo4AkFCikByMyz79MoxTuc0xhX9t1EkNSN\nVlVLlA2CnyCcIwG9LCnmDfBcSh/tiNuSS+cRbgS5PKR4Uwp6cMGe/Aov13YH\nydbF5ooGxaCkeghoK+qnM/GaeUcPCUSskYUSd/8YFLzt6Uev5MQ/0+dhMWCD\nOC2fahBe7TQETrmi50YdN9DLLIJgIUYdhv0sdTVRVUOyVniJGSPE3PDGGrGu\nq5s/0urTn0rK+9xmfAJ68CwrXURD8y685NhWwTmQHgOw6OINASo9ZOUECdwO\nsN1Xn3yEq3TXlg+v/gDnKxjAFrw1jK4Ge/t8Wp4DBNYUvqgVGMgCPyuerael\niZeW\r\n=8PJQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-0c6236-k9wsrbu9_1588857566368_0.0998017850073627","host":"s3://npm-registry-packages"}},"1.0.0-feature-284025-ka2do2fe":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-284025-ka2do2fe","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-284025-ka2do2fe","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b29cf3e2a16456eca9cd581351e4f67f0e2b9a88","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-284025-ka2do2fe.tgz","fileCount":304,"integrity":"sha512-JYIhunZHlfpjF511jabZqwJci+XCoRqtv+pavur+ZXmLRXf1UNmf0g85hPr6eraWszEJ2mmWU+uRI2E9cE1uvQ==","signatures":[{"sig":"MEQCICHY6IgV2U/1exRi1DqQoSP7IqVYbc7Tw/EPVGT8eOd4AiBePH3H2JPd8bYIzd3LWzjgz/hB3HDwZ0jhG60fBK19hg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1428393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuTELCRA9TVsSAnZWagAAdAwQAIjz+ii4XhQCvpJCiYTJ\nN3G+JZHFjmBW+MtF/Jv/comKIJLqEo7U9HaRELFwaGxT24h/xKWjEZu9xP+X\n1lJ2ogcKGOL44hjMkHu/oTRA3Emq6W3DqxAkFX4L8awPM7a+nfQuWawOZRlc\nUuL6Pn/Sp3SThlZ+Ith6mi0Ov7/H0f/NJpFb8Z4CVr3TZexf09nh84pZwDKT\nYNFucRFFMsamvVJLp72q87a01ZLdASukzrKVkXV0wAqDgk/WeEVzwsqyMyt+\nLzqetTNP4I5jcHafUx20uDQ6UdVWD9ijdnOiAT7UBrHY27KZGZmQoyMfQRrs\ngBkFqhMvgKehqRcZbRVTDhvuef8PqF1CkvUOMeN9DUeSUF1Kk9aefRDHOJJc\nYjv1/HS3Q6A6h2+SQREot2X4XiCKn9hhcLdya/gxkNRpkk/5ywMetZUiB8GY\n8+rU6us9auXK18gnU99aNu1CbeRC8spNuVr+Qa82sSbrU/elhSxEWFPuqJ6g\np+mSPVzYX9c7G46VeGIvlphKLX+lEIaIH05MfraIRVtG5fJ9LD9kzTVdSmyF\nXTt5CZNF/mjE0gW36TSKLL+AvIiyNwJ7HMJo2bzeU3QZ4UGGXC5uK0XXeEYg\n0YmUkgXSVKjZKLUTAJirmuBZhUAoZDqDH3nDGEg6nCef4lD4bb9VCWfKQu1N\nRkm/\r\n=1qt6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-284025-ka2do2fe_1589195018853_0.6261058622324374","host":"s3://npm-registry-packages"}},"1.0.0-feature-9ea99f-ka3k5ze0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-9ea99f-ka3k5ze0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-9ea99f-ka3k5ze0","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1c6bc5dd476086e9859bbdfcf1310b1e10e7321f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-9ea99f-ka3k5ze0.tgz","fileCount":304,"integrity":"sha512-OzIb7Evo3lJpdRhL2PwS6YVUwGLUAitIG0IcBknd4BP8Y+7c7+ni9XlHc4RX0zxEMu7xo4SgmUPFMGTtVbLAsg==","signatures":[{"sig":"MEYCIQDRrbkyf0yEfaM/g9QDiXPM8tAyqNEY9T7/ikeTkKNiswIhAIzAgnDO7AMrthVxdFqSliiZMAxrnRNLHQHtbYoyl3pJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1428393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeukfdCRA9TVsSAnZWagAA7NUQAIWanpUYVUcC4Lqi6mde\n2EJVoNGzmrnb+6DxdphpBFml/oT9uriNFkB8kMEbap+bhgvtUGbiGJWKpe3I\nALtPjFCR6HursJ8Gu/i1O43Hcul0ZwjWCVPU+52zTFtYrPv8GKv2LT0r4VEs\nKnBJWhRTbu0x5PXIuJpSAg6bpiEjah0uqiAzXpwIAjQCCQq95M3+uZgAwEsr\nCEhUjXMTFob//AZ5wT81N9q8RDWrC91h12v5N05xdYZF7hzMWMw96uei1TE8\n7o7dianWZG3bZlJbWeJBEhFgoiKYzGWsutweKaOjiSiTT2uMIdhfdQPyAoUH\nckhFSFl55IcGp7Pz39uwo89ZBOUUFN6okW0mueowpZM7OHXVA/DbEIV1FOyU\njzzIqHvQS7rpnANxWlzIYsx9d3pytlXqWPmV5zL+vK2o19dWwjKNwNBzeuCb\nPIWcEnaspSrJlJSogxlXRt3yqN64vzkOaPLTuA3ZUTvk13OdUQUjZJTwPOp/\n4CVIRxDLofy0fs7o5ladf5lfSyXmTVXd9WLEKhPZ93vLaiKBu4Ta7hodUUvC\n+vcoJw/Tx/ldf62JarjPmT0dJgD9xMRbLxQsTwKF4BGEgV0xC6/zCpA/7Xwj\nqELRTRTgsIa/6E4ioD9kMKwESouWDs4C6lYNmlInBkoxKRVrVXe//ZLtlIGT\nLC7+\r\n=0N2U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-9ea99f-ka3k5ze0_1589266396906_0.8626883114620862","host":"s3://npm-registry-packages"}},"1.0.0-alpha.30":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.30","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.30","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"45f701953f5325061f5cba07b9aa675be36a2e6d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.30.tgz","fileCount":304,"integrity":"sha512-L1b99npe++TKfYt6bUZV9xyZVlMU4sg1u1Nf7eY+qhOqE7x5PF+LpA5iRNfLUTDyJO4aDHNXtgOJigwrci/v3w==","signatures":[{"sig":"MEUCIDW8HeLt9qsbq6sLgGGrN6sDJPmmFh+D/2Mgq7CPzxuZAiEAhWlwJDCXPO9zMsZp+OJ4QEcppDfCEUiz0IokiSf6Umg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1428378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuknoCRA9TVsSAnZWagAASQYP/3zcnZ3FWMC+xmapy/hr\nqNatnKeBy7Bxm8gS394SvqvnK5ncZPsIgT+wo6MVw8s//IvkJz3G+r8iXkDv\nn11zi3YxXNhJS6CK+xmug+sR0CA59Lk8G45RqJwCCR/tET8/LO4wauazBcjm\nINrzX6B7VBwW4K+DRYk9uNQ/HES8IdJX20umlYZqERu9bNL8OICxjSx4W0pR\nI9KU+e6jZUUHCkwcwxBlrlUlO4Sr/LAd46qESUF2gQEeJrl8BIn8GrsB+1Jw\n6CUfhmqdue8gF54z5t4g7G+Vp+yC4khZXI1uTE9yzwaXJ9pB/uBBsU6jaygJ\nfPJn/kaDO/hrcINYEcdktb/7Pqw5txWM2kkGg6ODhSjvwibryUp1N4k2iQnV\nGdRFXymfuFLuPUwrmT1YAZqbIi6QQYmOIZWHLKEaqEAA5n3aEnTM68sR1wxN\nQUouhVlJAZEUd0nSUE+AH5nOCQYApXHAVmVl5tBofTWEMd7ANpfrzYJiDNrq\nNyC/BhyxBdiuLgJ2PoFshCqejNF5FEaOl9fbcfqPD2FYCgBQ5tNoVMG1L2zW\n8b51KByKgh1KvJhuhnpK1Ok6o5xxG4G/akUAF/SD3d3YtJiXJ6VsmYh6J/in\nGDwhavS9KI0EtcgVNeHxaIqRVvJ+Xakf5sClPYGMoetjUgFZrojYq7Zj5Svm\naldf\r\n=cL6W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.30_1589266920475_0.5352443817978902","host":"s3://npm-registry-packages"}},"1.0.0-beta.9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.9","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a3955c283f06d64f89a364c1f2c2352af7016557","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.9.tgz","fileCount":304,"integrity":"sha512-S2Mp3xwNpeJ9VTV/q+5xyUHo38/XtHwvBZ65S8pKz4/MuLeOdj1fKTS06eKrI9+DJbpQG3tuvMq30+encMuYhw==","signatures":[{"sig":"MEQCIGczoAEdI3NFVAd3CEye6LdQP06PhOKxxFJeJen0vgbgAiBIJ58NcJJ8CBbieRhRJhZtilewTYHK3g9LSg5lO5o+Vg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1428376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeu59VCRA9TVsSAnZWagAA9+YP/3t3zM26pE5biUb/kbTB\n1+erHhe6HiGxjwqsJLFl8oF8SlEa98K3MFL1LJSgqiNkG4EmLQG9x0S+TUSw\nXhQcsMPqnxHySEwanDAZtEkiSXAa8NS2awRHXfXNEGBnrs+QiRgwUUETqvPt\nMrrhTi63u1hR4KkHqkzBe9T50We/DfJAVZ/OW+Vny22XXs3oozOdnuWbo1iW\nfa8R3cXdJQkf+OWGqi+II4wsbFxW+/ORWDDqWs0yJpB55ErFkkHrA8m8Asdq\n4cnaBigx057wsgaDuY8Hb79kiqgVfOqpX0iKoEFUGNf1qVPnFJ68kkQw3fKS\nVC4BIQWT8KhqvttPpmPTjYYHsteSR69eN9N8W8qecuGggCNRWupmMTLVziCQ\nO91iZH2j27+70rK1fc0637ibKoHjts0+sAHVg/JZdRcc3J2Lm3/Um5CZRxuC\nOHxtSAF/p3sm/xDxemDWzeV718yI9I7ap4Yc3IrmNtZBHNDfqjlwwDvA3CjH\n9gn6cP1QLfHC8dNbJLQ2n7UoaCk2pFcBZu2gWW42eMmSdb5Q5ooRjGz286Jr\n78LWvWKg6E2x/Yaoc44rOgeRU1ng3L49pFd+FnCHERsizOkI2hAJN4eSPgkT\n5I5RFTupBlPj0y9IC8pPP/84+UEttjOnIfkP+GurRFealwOEGwaxxdSrSvHs\nSLyh\r\n=1wek\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.9_1589354325441_0.9477100826198435","host":"s3://npm-registry-packages"}},"1.0.0-alpha.31":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.31","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.31","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8b6bae226ee9e85409911602071560bf22c0b8dd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.31.tgz","fileCount":304,"integrity":"sha512-RDGIu9sDfjhsH9a1S04BLyunQQnJij6PLyGnBNJ4xnf0K9rwWF7R8g7Bc1QB7SwVEPrWy6kfI9wPe4MjxLtMsA==","signatures":[{"sig":"MEUCIDYBLqE/nmWQw9lT8uf0BZxpx9oZtOKi8mDuCrZqYrUZAiEApkXMMqt4pfdrqrPboLiBbtAQ/3tlNgW51m2jqWX9jks=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1428378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeu59rCRA9TVsSAnZWagAAND8P/1k7F8VRck3h+JKWnW+b\nGdHsK8SrgW7pvyRTlXeSp2OYFn5Y1MpDE4qiSDk714jZ1xNhD1zr2jkrdrm8\nggo/P4TR7J8MutC04/+IHPs4ljSLe4+HOrUflpAG997raghf40vTx4k8P5M3\nacDDIyglu9CUqeRA2+XbD/IFcQ5qMb7fOz6ZnzCaC7riu0YkX2AUb+qaQfV3\nGu1LiCPPXh9d4a8NTIlFpsGMAbQ95yQqS9DqHxuYtk4MFT8f5EZ0XZqkbW6x\nEny6yVv5mOJ28L0YUkX1qk1cOEcxE32V9DaTr5521wcOHBRumZCGM2W2xImV\n6Ws0k+SLAPJruefPF4YnavhxoIHiP9jvRE34QAWz9XTV+ayCQkxhnTkm6wHU\nhlqTKyOQRe6ddk69WAUp56NqUSmr0qOhCmdQozlMvO53L0GPZA+4Tfbqr+3q\n3t+zwUZ81METkV3Pj0isvT2Ay0KMeJmJAMptFPfq/zCQ+TfDmEypvIluYOxv\n7JkLd1I42GhZmPGVOP9zKq8ZcLz9XzrYnr+GVpPzcPWm2vieTdQylUNpfDPi\nd5pBIGql706k0nTUKOG1U3isOQKl25hYmkUzKpIoU5l384HFBiWG3VBBbUaI\naedxqP9qSkYv8ErYZLZWLcVZF8H6Ri/xT4UYuLZoMBuXGUr4EAL0pGPBgtOa\nC7bD\r\n=dDEH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.31_1589354347059_0.8737606798631292","host":"s3://npm-registry-packages"}},"1.0.0-feature-8e7284-ka82spyc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-8e7284-ka82spyc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-8e7284-ka82spyc","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ad86534764e2bc684c3ccf05e7700bfa523836ae","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-8e7284-ka82spyc.tgz","fileCount":309,"integrity":"sha512-zfbgEd6NI6Jj9RBskA1afh49PQZen86dGkYmXnGmGaqCbD7C/1z+F6Zzur0PcOmhQjS0MQ6Nbceq3RN/Ua5lbA==","signatures":[{"sig":"MEQCIAR4Rse9CS6lpVcl9HLu7c/jhwP3VlvnJtck6eKe5VB8AiAh7lBIIRpArX+0hJxnBLtldxnA0sxt4aTIzBJeqdJYGw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454614,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevnLmCRA9TVsSAnZWagAAFOwP/11JCCMg1qRqnbXlrSve\ncZLQhTmlDEQ9B8vgnoTDeX6GCGliaEyYdnPCSBQCoUS6GWXyGe1Miun95ZMb\npRwMK+FF9SKVpx6K1PZwbnIK6C1Z7NHOcZCffiTAotuABDG3fv+GpXBUcfB8\nvnaVhznAR7wsiTHZrWhRlbS+dCprSF5V98oxaevF2cQ+ewcBQHkFW4w/ijv5\ncHoVqnHWV5BhhWOMz/IK9hMPBL86aKuQQweRo3/HXhUVpt5nEG0EXAK2DwZP\nFFifhFvkLpZkohnX2VSEsCH0r4v8JlNHXfsVprZytQq3eI2+vavhBShjI3bt\nBJh1yq+FVLvBTW14COw3R+yZXQ42z3+pHUteWsdEhjJrfKwlzGH6hzpV3xTl\n9eCF8Sw21IFnTj/irw36qJuCEvTNyeiaa5Vw4MKcSJcRdjp+W6r3uL3v/Z4P\nKaYQqLqwYoPAZZ8c1FrdNrxMJR1dO+jygadOUx6dvxk1ue9E1xCaOulmU5ok\nO+tN8b669pjv530QMJGrdO0DVw1U/dTbHgphEOQZSUDOxtqA6bbn1Vigt+jD\neo6xW8Lhl3MSLEnTBIOygs7vtEioczJIbFZ8ZtXyPsSVw6dzzCFJEPamPttm\n47CNH3FjOhUPFjdQxLcpdvUUUk6BeB3MyrNoycgP5aQDiYP++RMz4OLBWVgz\n2VU0\r\n=Rl9R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-8e7284-ka82spyc_1589539558151_0.23403441234232436","host":"s3://npm-registry-packages"}},"1.0.0-feature-614702-ka86pbgc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-614702-ka86pbgc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-614702-ka86pbgc","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5e05a0fde0ef6558e98ecb3cf1a1b082c25b4d43","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-614702-ka86pbgc.tgz","fileCount":309,"integrity":"sha512-gBrMS15zGM9NCas8EdfeckLuBKwiid7NCxkfnsIQJP4FNSv/Ath23RH9Swwi8qUZBoJOjC+UdU4PfVPsn80UVg==","signatures":[{"sig":"MEYCIQCT1/IRjvRVR7mFNUwaTdE31shBhPn2mW/QGyPPkonluAIhAKstUw6am3Fo1vNZwHWAW8FD1ElD8+NCVfpeuUl9IYsB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1455288,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevoyGCRA9TVsSAnZWagAAzvAP/1v5g3P1wRJ+qajK+usS\nxVwTDlPStrYgf5dyIScZ/OwpDEeTBh0C0sj1GgSJUtaIh3Ykc3XakGseDE8J\nz4y0eBPY+pt0O7kFSJ0OzIFgJG1xW5sbkFmUgSbzMEZDcTwOJXfjOGUbR5XY\nxyswj/hTyBHjhJnLJOItVjfmWwsAlDZhGs9Gn7IUdoGAvHe+Fp94xLjl4jb2\nxYAB15YYMD8G1B5xA5FNYdo7rjk67H+kQRhFkfYAEQiuh6qxJeoK5DSy/IIG\nSvqyJt8WGG8iiZA5Om7m3X8jVRJri8HdUWNKyESRO3wQUGB3XEC1lePhYHxM\nCzDypNeENQu2rC3cJsKVJsu190T70Pj7V+LPjbVQLTyVHL4Y1vP64qt131p6\nocWtcSczm6JIB/ahZNRrOvotjd8goEhse9KiWunMBbknxdFBtB6q7pJu/cLj\nmrbsvZ0KRsr36l+3PdMFKtIJeqpzCCbx+eEYwG32hnDJ2bimjJkp044wWKyo\nNPpC9l4r4xm+PaXhQuztsYeA3I9pVMsMLnIcKN7Gg2SaixyhjJV7Ebgx82GW\nJM++Guy90Nq8RUnR8PykA1HUYIMQsD8rdNVKIFhf2JGjU1jx0VvzzWygGnVx\nBqjsjzTiXeN1SVKVWr0rxCorut6WsXyKKTtFcCiCc8lr3AG2DPvRRc9OqvwD\nlWTm\r\n=LceQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-614702-ka86pbgc_1589546117819_0.7610340371636877","host":"s3://npm-registry-packages"}},"1.0.0-feature-f34000-ka87p8fh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-f34000-ka87p8fh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-f34000-ka87p8fh","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b326b994812e424497547cfe827edeee84960f32","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-f34000-ka87p8fh.tgz","fileCount":309,"integrity":"sha512-LdiwOak2M08ep/T1cs1MlOnwav5s3MfDnRgE1VPVZ1A+/CQKvIyxcOYiecZvnf5KBm7TU92W8n6gpM3MYeJyXQ==","signatures":[{"sig":"MEQCIB0XYUNPWRaGFL1HYtB4YFgvyBGwkSMX01OB0k049PjOAiBg1kix2iNUVCAywf4HcZBOKTuI4SINuW/AS2kDcCGW6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1455370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevpMQCRA9TVsSAnZWagAAM80P/jYasGa26T3hsNGg9a4a\nbXvcqQb4SFJAL0OIXE6jDEWPw+vDRgoyu/mq65XO/U2lEe/K0x/u/4786OTN\nXnOQA0fuQuzm0EKJ/KG5zUHrXqnMKBX5W7D6J9OF5+D64ch8Eze0Szk6ILpO\nsghpaOdQKqK9y3keu36Uro0/6YCcoAwZarTG1ILE5amCs5svw5htAn7WN0Yz\nJzGPVYx+A5eFIheze00McS5jhe12VZw9jsVV/MGpwBIJ9RBDzO5/atD3IlA9\no5n1i6AGYLNNqINeYpMswuEwvsqYkd9a26bf+K4CwQx0v67cdAfa5h/LP44W\nANMFKgY+7yXUYTPrQjq455LbigJU1Wmvd88ttcPmttKdxPLb5Vzv6zXTQutB\nG5LQYrhODaVU6OO1v+cV553rgFgFXiOaKjFpskIsZraVySxEnpWOsxNL5GUX\niPqimILEbsy7kCxF0GtCjvkeQs73xd7bzYKfsJbOmp7NNu+xr7x7KiVpPWGN\naBISphedALfNAfmyHGFYmpyksfdZI7+GU1N9lS1dgoy9vWIWsyzTLoVdg9Lq\n1ULRA+5HlX9UdO+S8zHhrYPkaA398CEdaWun/yy5f51bB/Bb1hiJjahGulnw\nv07Q1/9PQl17b3Nvim/OMTMToSnVLg9oWg7KfVl/FJmiOOOWc+WzWgTeifEC\nnueo\r\n=/cq/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-f34000-ka87p8fh_1589547792375_0.2634763985575952","host":"s3://npm-registry-packages"}},"1.0.0-feature-ddfa17-kac4xg1j":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-ddfa17-kac4xg1j","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-ddfa17-kac4xg1j","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d3b8be2828454bd98e49e0a39adc73d77e114eec","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-ddfa17-kac4xg1j.tgz","fileCount":309,"integrity":"sha512-2PuNSXasbFBucoPhGVQlJEPHZ+zi8sZgD93fhp4oYvsUtcH8ZCZao9AcTIc5r3qEfW54EOhysab/D9lgjr1Xtw==","signatures":[{"sig":"MEYCIQD+mRu3UZa18WECqbbtqDsyOH9MZD6t7QrUN1poYI7pOQIhAI5msowlVgxwXH9nGzeBFO00AMxvpbEm5pLAfHeYskGn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1456904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewjGvCRA9TVsSAnZWagAAU9cQAKPG7yTmwqwOiJLXBBF5\naz89mxOpzl8h+Ih5aLJ/e0OhaokYGIRvqxXSveztsdjTs0MeGVw3QvDxRlth\nTg14Ex+ghbAjIXbR0i8PLlfKpfwdfrqWpMqNfvxm/6ciXFYoR5f5wA9MbF3Z\nMHAoJa0xOqPBZWl/NuY3ozS1BmNHD5MGrWaVAMDTtE4kDSXyeMuHdjS21te4\nhAfKwlnQyCG5g6cn9LnMxPPZeGmMUNUSq1EhvWEbm7vWRGAfayaJlLjGUkyF\nSRf+q0/G6AV/E7OeA7nGQGi+nucUSssNWw2vCUA8AlY5IT4r5lMEzpAz6ZHL\ns4bY3wr2LnwwMO/1iYHjuLLjgSYVC71ZKRG6dHASGgMyYSQg66V5nxmeMtXD\nbJ/zz7LYUJAQ18DhXgrOGiN9oGKUge1Hau1jcoCNbPnED+XG7rAcs5ZUnCBZ\nTZ0tSEnuyj63o3bzb/XHflt3w36AWPXG2MhDH0R44cCdSfG3nLyP4AT0tVV9\nBRCWSNi62CsFMxXPshLRGSlukcdAS4zhYP3APQ1TjBlNKW4IuwD+dWafEtRX\nH45ZCfixnU7g6Y/zQNwQu6r4l5voloM1rlAVSPsjyhz7YfGLXNqG6yb4xitl\nH99Fk+RkBrmizwrIS0x8JSBpZRAwKWpULNLZiXWa6glu6XttgrJ/QyzbzPOo\nL4Pb\r\n=VvVl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-ddfa17-kac4xg1j_1589785006698_0.020208517916981306","host":"s3://npm-registry-packages"}},"1.0.0-feature-e8735d-kac6vzg0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e8735d-kac6vzg0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e8735d-kac6vzg0","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a829d4e38951e765b7d68df2d50ef3dae0fa9d34","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e8735d-kac6vzg0.tgz","fileCount":309,"integrity":"sha512-RMfIefZxenityRFDWmtL3LQtLyD5eC6yoYVS8yEZfZzKJJkt1yn9JM5GMlWf6nJ4Kl6kc3jzsJb6h06XWcPBcw==","signatures":[{"sig":"MEUCIEewNJ/8SJ1mPVuirjxjBp9cI2LXEus+yLjvEHqO3OZ8AiEA+XHi5dYk1EEaJTjX04jyjsThwmyUqdYRo8pMvfva+AU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1456623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewj6ICRA9TVsSAnZWagAAp2UQAIpXboHO5jNCsJsLMXO1\ne9IabM8rMwvbE//7eea9LYGxRP3Lq+7VOlUjQIiRElhVCQNyYvudvcY0m8a9\nwdyT2BIeucbA2mS/EJBRDhU60AFurffE6QUbzbqszMVshargeR1vQAcFDKGj\nJrL0okMSYGbMgOAGYgk7UE2IgigbGliJ53AvqEPvqZ9M29BBF20zWimz9Pzg\n0G5nritklEMOex4icKlC4b5YlAB85CkTM+JrnVhIdxDv1VTwOa2HSQpD7TM8\nDG7EGZR5ABiYbZj/4rvY6IuXVF5tkHzV+73O6FsLA/QKFXd7MxQPYVLakLSg\nO68zVjxeoiIl5XY6lD1waF7WwfDjPh0w8QmCOHUvFuEN+M6VKEBE0P32gqzH\nHUxUThbASR8MXZIeRph7GqqzqM7PNCDZjQ4CMxnVW870XE+0KF6y7fKP67I7\nmLNBvEpWZka2T6yY181vP4vNWSBwPcsnr89bKu9NnCP8ivdKmOkxMkd48LHP\n+mhiBU7koRQ15OMpuS8T03WN9aANuHY46oaZuXJL46Rc20dIOy/uZUSQDhxB\ncPIte3hchn0GHTHdebP4IJ9B3wWIZJEZQJJkYZz/TJbm0lyJ3XBR+9pMdorP\n5LwzYCd3X4Cjvdk3bAhB3Q+i4kUGTizvDnB9xbjxlCk8DiQTaX8SRLHw++N3\n1sqL\r\n=3Z0o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e8735d-kac6vzg0_1589788295868_0.9519681753724203","host":"s3://npm-registry-packages"}},"1.0.0-feature-04a553-kac85y89":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-04a553-kac85y89","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-04a553-kac85y89","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d3c32e4ac0669077aef59ce5c88b1f85e6b200f9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-04a553-kac85y89.tgz","fileCount":309,"integrity":"sha512-nXOQRWOMiTUj6MmDBCyTMRaIh0w5Bh4pPICY4wH0bTM3L4yHckLp9aXu3geyRHG4PfpMvefHJflrjbC6YNlk0Q==","signatures":[{"sig":"MEUCIGki/8n8OPHSfYjL+MFOIuDl81yGTuaWlL5tagjTfa0cAiEA5EEliPQfiMslWlGofXR4/3htyYHjoYFsbyTiWUaQE6Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1456090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewkbkCRA9TVsSAnZWagAADaUP/0KWoFbYw2eh4NvHSI6e\nDnkaYwlT5nU9CygnDcRzj2kwn93VA4UdpTxV78NChPsb481g6wDM2kgrkTZt\nL15mZ+o0w367Wz0QyaQjmYgT5HUWNjan8DWUPeCHmeFF1v25mZW2C/WUs2nt\n/JVuy1GpaJBp26X/Fk327Z3sKCM9oJlK7Z0hXWewmaS7auHx4S0U2YvMjeFh\n6BXsbgq0ksQTMR9JHq0RT54jDODyi1qn1jMu2I9S33uBaLPRAujShLRW/Aud\nHyZ/6973iGM/f1Md9pDQeqijobJii8WpwuYu36Xwe8vS4qMJi0yloDMEInxa\nM09UugktGZQExqpDmTvl1EthOoPqkN1lZZQU4yXc3P9k9lDwJIqBbtYG3eLd\nlM5x8CelwDHyp1PeidoFRBbvYL12kXu52W2bT0gc+u0twzVtGPMzVT4KALRZ\n+1SMNdilCtNP5luX/e2v5qiByQig3MK/Xzl0ToAmVblLyMVD4AR1gaf584ce\nXhCfHWNlVXv3RrT9+iSNKE+72bD7cIupfp+WbglMCANrhbqrJcdw50a9B9U7\nLgy58f+hLhzga+T8YMVE/y9QT+BSQqXpAnRXDy8IWphztoKUgIBFbdsbdw02\na5NBxq/2h/ct0T3yVJXmfs9QofRX/WCxjDYagdVB/aulvvWkzk60+nyy1ofv\negJF\r\n=rAqW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-04a553-kac85y89_1589790436226_0.7818144299573029","host":"s3://npm-registry-packages"}},"1.0.0-feature-a1ce23-kac8ztvs":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a1ce23-kac8ztvs","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a1ce23-kac8ztvs","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"772039ad8683ef0eb53cfa74bda07937bba93bb9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a1ce23-kac8ztvs.tgz","fileCount":309,"integrity":"sha512-evEowOPenOUA/eXrLLIHcoKg9IWpNAH/1PbGERi2iZBpRtHzzAIrTPHbI6/ozRUL3DSNe2FveiE3EjQBgQHxJA==","signatures":[{"sig":"MEYCIQD+wJ2iKbm0V/39R9cMXBRfUtuM5ciJMbKDzquBGmrb9QIhAOP4ZWBbBn+SXJ6JD+hk1GYdb+nqrIpcefgQLQvOC9Pz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1456488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewkxaCRA9TVsSAnZWagAAj78P/13sGQTn3Rf3jSEjzsb2\nnxnG9GMv1GF+yKiMsu1Y8YH9RocRvpR6LU3QUs14D4yuWet/Yx5CVuwkUgcL\n1OSs/B3LIvMHlFos1tfCLM+fKhzyzQfvRSccnRi6PL5WJmzJMgl986shtfB/\nYcWvbeiWYISK+ifGYt4etBhs82JPcMw+O5jT9FGBHKekdp9TrBUUWOVk2Q3Z\ni3o8GZgdPfB4Njgn/H0nuE6J2pVD0t299gJNcuuvrlv7sn+42wy6IWT+0bZN\nuH6Y5TF3iZ53f2/7g8VSqaVcUpnZgOjnUEnZA218XcsHL+PRcTmp2zPLwLP8\nzy3efFRvcmswElvM76FoWeFOPDi0/B0oT/gF54GkwUOnPI6Xvq8IQ9SrSANI\nzC70XbXQO6sMotXradYjOAPXizH/mgVO5PIVZfakYNMq877NDMEhJ0vkL8et\nH+in14O50PSOBfwbsWfGB46TqMgaiykqAM6UNrLeseuDMiP1+e40NDIYugp9\nnjeZUmtbgdHl4VFmD6EjlWXoS+lEKD3J/OmwOyMcGphWPeF6gtN7IhrDew7c\nUl4HbIfiyZpyL02jm+G7pX/I5fhCOxj9pnhVhvJnkXu0oIttZ/gqsgUTCt0J\niB9+vlolAPJL5ILpdgRKPqdExAq3s3LCsZ7VkxzEz6gDDJMyVIvQy3nQeEil\nGCAg\r\n=iSiE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a1ce23-kac8ztvs_1589791834165_0.504213134259395","host":"s3://npm-registry-packages"}},"1.0.0-feature-7e6850-kaca7cna":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-7e6850-kaca7cna","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-7e6850-kaca7cna","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2167b6d7768fd35c6e7253b9fd32d52524c92940","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-7e6850-kaca7cna.tgz","fileCount":309,"integrity":"sha512-EmnC7ce+dRqj4Gk7AQ+fFzHsxKcUHuBBBtOxWMGAe1aYPvU0TIKZYfW5JoDAlFZKPb9SZo60/iSqbgJvrMIykA==","signatures":[{"sig":"MEUCIGHYEhR+ie/risbC2odQj+seyO+BpGTgvFLzOMn9crs6AiEAzRL5JewWgBeGuOXpYDmk8m6yRTgZ+Oes2uXIyLxwCno=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1456630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewlRKCRA9TVsSAnZWagAAPUYQAI4Bb8XoeB/Wa0qWthab\nW72eNKHWFlDrzYq4vETgEvSQAMxpqqTWlRiDEq4NRw+ETygVAW0j9iedGkX+\noyKmGloMyynbXvrGpOJhE/WxBGAs4ufEHlO/ZkP33JSxT53SrcYGoYquzw8h\nbV7cgyIDqfrn271pTPJSDTNu7Ua/vebK59E96ek7hoklh3RD3DWEn+wSbU+e\nx/iW2P3FqK9GXwS/+9Jb2HfPbmbyYr8StH6W2VjFSDDn2C4Vs48JunWIEF+8\n4uHJjcZM2b5H4+rnuxKbDjCz1PBI/DT2REVNpi3CC4+BTkfCdsPYJCj09fZn\ng4sW4p+B/0bph5CSzGVJDJyRkZ/gY+GH1Z+M8zAtPcklQ6WKsvmQipsZDDie\n0A4LMCkzMWo2OUwaEbJk2Zm6BW/6O5B8x7Me/IqgTiMZAMyovnl0tHZN6gep\nHjdhW+HSWuHVtrCF648wdRoqoUjvuekbyaWN+XqBj9feUO9wU21uZ5/t777x\n3DfKpOyQPj6ZG8FaZ/b2RI33Kci3gNZ89TmaR7jYh4izu6uwLV9GVJSeN1eB\n+LWWSP+LRZ9JULTjgKPYhpc1DUrkz+Sdh6EkQ5G3CakIyQdSUC7ie0bqxylg\nU47ZydEPbDJ2YVYZhLuNR72mbbgnxBmUgmFRQe5LZFHNCBEvFvio9URe1kzM\nXz+0\r\n=UO18\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-7e6850-kaca7cna_1589793865675_0.06485840507051299","host":"s3://npm-registry-packages"}},"1.0.0-feature-a92ce8-kacbw55b":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a92ce8-kacbw55b","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a92ce8-kacbw55b","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b5361485a45bf787cea71502899a7662c2a38449","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a92ce8-kacbw55b.tgz","fileCount":309,"integrity":"sha512-OFfweNUom4+pP1Oomq7Ztct6w0pCULYX1uo4SAr3T18vMoT1lwp1aplYIt12ZXJyf2wAvs4fNNVAQEjpMx//dw==","signatures":[{"sig":"MEYCIQDXf908SRkRObptI69nY1dGTV1Z25Na3qUbtTQNmhx/ZQIhANSwoRDOw3c1JW9h9+b6Z19b4FaUzJpQpMhjyzgH/qQp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1456566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewl9cCRA9TVsSAnZWagAAc70P+wdcfK8MD/8S917807su\nSCH0452N3Jeg//YE4gJb6PRvJg7AbHVXd5HMjcHhwJw/gTKz5j3z+oR7/eC0\nXE1ebRKnKSDGsUv+KwsN8Jdg2Hz0lDv8gf3hwZTze21rGTYWSRT2FDuBw+tH\nTmohGctytoUt/2oEhPmWlVJWM+tvdSWRbfuJs+oIYdcpzdr9yfQm15gvOIiw\nNdZusEiR53Mn8BJ2YDc9AVFm9JudpIi5cnzNfjHRKT+wQFor10N2ys8Bl4+F\nxBJZh6cOkGYcWKnyTSVczxLpDa91sq2G62AYB4Qra4GHq3L7FYEiBtOFZBvE\nagHzgEb1njlG9mqTDjy/9TWgHZePU+iW2Bmz+X5SL9xsSYYygL/szhu5miA8\ntWh4Y0iwlQ24lTItlnXB/cbCyajG4tv3sGePJtNkgmEp5a7uVeuGw3DR/8wi\nTa5zTKRsEC0k0uMFBQk1gPfWZCDq/Yz9plfNVUcyY3qx3PqF7IfoRCy666/y\nbLHmN46l9FB88WIDTar22yNNBjn7Y0IlHvpl6GcbXassyHOe11DYuAnSusf6\ncioxDNWEBLkrbWmzPZ7TQM7/yI5A33/lGmFcv1zhGVRNu8csHJ5ypIpiBfwx\nbdaNoLxO8+mxEnJmX64dCep3wWRJSEGbjrZ6+opaszJKTKAJJxGoLeamfwjR\n8z+i\r\n=MVmJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a92ce8-kacbw55b_1589796699839_0.8160244864879278","host":"s3://npm-registry-packages"}},"1.0.0-feature-7e6850-kacc9xie":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-7e6850-kacc9xie","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-7e6850-kacc9xie","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ad76f3d02090f482132150dd48d5bb7792e8103e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-7e6850-kacc9xie.tgz","fileCount":309,"integrity":"sha512-vgvtJ1qW3OKkfZws3jH++pBkvh4Jp+HTu+0Ug4Zllaw1r+m1Pzc14OnqHS8qlN1FaaLdtTCTr1r/hAx0l1wK8g==","signatures":[{"sig":"MEYCIQCdEySS6ZmI3b2uQznTCax2zciYuQgV7jk+ofNmH6HutgIhAPHhCgDQbu38hI63cswc4UFpB0pWXih2jvjJzoHpPcur","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1456630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewmHbCRA9TVsSAnZWagAAnaoP/2Ywl+hQZNaapoFlu5n9\nEwOyvg8GLnBxUy3Bxu5tlyGa/HELa/b3oEn3TjPwCXQnuI7Bvqb8jPwS4FGz\nD0cca84YDuSHvoNDryu2PBVIjW3HCn1SR2j13tPcS6O6FwM/MCqSMrZhJdLo\ndqoMu+R41BzG1c9QoJe40toOh7ceUpKZO/ALjKT2F8C96jIHz0w6QwaPlMdi\nfsPLx/yB1uWS5lwYjeM69EfR0xnAFNqXhPVUdgKuDiiJZSZm68pdEOgpZzJA\nKuRDyFoU6GjIUU8wQsLnltyzjdWWUjrUn/73gBDh+c/RYivbmt9mH/6ed82v\nVpEKevLGEVPODXE3OVX/VfWGbcTrgudl187mpG4j88tJx0z/PujyUPphmjR4\n8SiNdVa4qSMDZ+7041N0lUbtVQ+c4HHhOuABF1w20+TqbtIUMLq+rwNt8GUc\nM/nzeU0Q4778YuGy+AASV+MW6ShbIArNNLJNUxb6HsTRI5E+xfary/oOF0BR\n+l+bJfmb2xkFf9qdYLEMVfBnMfPWMrxnYB+GE+aCbm8XzKCVeOImi7t6yX0J\n0H2ak5HK4/3qRqLNdhUsY7em5V8pVwduCkW0tMIdYinWiN04RUTSaA8dL0bS\niEdyAgSKOQuzKrx2DqWcoQetCKj5bZmC80i7O/BhkrYkoWsw1fC8hrdXhJCB\nQ2O2\r\n=DWYh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-7e6850-kacc9xie_1589797339380_0.4533566960971771","host":"s3://npm-registry-packages"}},"1.0.0-feature-1dcbce-kacd58ki":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-1dcbce-kacd58ki","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-1dcbce-kacd58ki","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6b94b37a65a42830f060df2a25ddcfde14132650","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-1dcbce-kacd58ki.tgz","fileCount":309,"integrity":"sha512-pMs+3/2n19S0lsgOvermUKuO3vgZL4ptVXSMgFp2zrVM1DSWozhuK1sMwvvVR73xZn1OnPKwJhNakfZKNEGrNw==","signatures":[{"sig":"MEYCIQD2IjRokVZxRWpp+TbjmdjpFxXGc2m3vld9c28y7nnDpQIhAIpGwYlwPs2T/XLnxmVQQFiI3ksP0HaiHAZwXECPZbrN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1457392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewmeVCRA9TVsSAnZWagAAo30P/AyFlf1hljM5qAo9TN2n\nQDMuJNhZuZYZuyipAXjK8w6/Rw1VbcWm6/UxBfQPiQ0F7hrwCE6FW/54yWo4\np9gfvc8OQJDHIg9OTSG75ez0Bgkd1tnC3WIAt044VS1Yji29RXqyH4EMkZgA\n/HQo5LCkuUGERDR9/Mrg3H605MTujXDUX5rPbJgzaKbAqqhJVbRZ7/KHmVBU\nKKmdoUPoTztTUoNd5dgWKMnAggiCXh5v24yaRNCdTVYdxVgZjYt7dylz6KyM\nh1BYzsRfAiZ0cY2GxNEBH7AeJPpgNyPcyh4ybdvOuDVvENUCZrYq5zQdg9dr\nm/kVkrsp/4QdGuMBLR7UoDyixWDd6MLwUDdaJCvxlBRul8H4SiBibQzpZSgj\nReaeWLVZId7FM1cVrbKxEV/HxwbQT9R7FPxU+jjj0D0LRxbpcXjQXMjrBe/i\nrnY/SPAOnZrlJ8SLYoxBoFLv/N5x6/fO2x6BLYAs7Z4nYamlvraiEMJmc7ku\nZirNXswIHcoamWO9gT2WkrbbeBIrHh2iVMSfxsas+0NA0xtE2BmlO60EdSj1\nsfQ73GFMpJ8htr0rAGxmqT4KkY/CxnYC1Wgx/WGu5zvx1sbGvgJvuYgnDmci\nclHF1WuhkI0lzdX4FNI/tiaL8wzryz6aTFbIvJEYu87IG7+tGvlzHHchYoFd\n49l7\r\n=nE/2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-1dcbce-kacd58ki_1589798805316_0.5038513007171548","host":"s3://npm-registry-packages"}},"1.0.0-feature-7e6850-kaclpvoy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-7e6850-kaclpvoy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-7e6850-kaclpvoy","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b39e8a041e105d9696624277228278b74ec9696e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-7e6850-kaclpvoy.tgz","fileCount":309,"integrity":"sha512-nbHuhskJvn2VBqZTu1vWTpJDizH8jNkVwunoMkOwAOyO322wrZ3zCpjOXAmsnE4wieK43MBMYIghKnh6jr184A==","signatures":[{"sig":"MEUCIQCOk4vzE9Q2MPXDtxjF8ZDe9rOsTZs7GNsGL5Yh1zIEeAIgaC+CbpuAs2+cQHvhfawGPuQlfRUPfnpYBFmAmcjPsrk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1456630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewp/VCRA9TVsSAnZWagAA7isP/jaPMxjtRxaBeDDhQKJe\njOtlinqIgYVXgo45JTbJLMAFllrN72AY2ZsBeiV9TYRd1+ElQW4rktvTHDkh\nUaYrCfvtIxkV0ieI0FGozsZnzyaiIZtoHxYpqrGqsS0GaWG6ZMBfwL67QD44\nqJ1y68IkMKLqSCy1MN0UxvYOAJvY29mXJ6+k1MGCwZXctEc/nCiYygvCQkHu\nruEO5UaUAS6Xjy66+LbXIhE77LQ85DQQNsCyDJHeghQ0l9XPaJBBqCY9WUsr\n3H2VvWt8rPsT9d94IaWXLz6UtxXnA0U2kfVU9lKJBWKQ6ZNkYBotERJAo9+w\npH4NIISmBFZTwqfv0pv7GvUjbh2O8XhHPwIDeOzC8TEA5DHDBAM4oej0CZmv\npXzZIFn1h1N+hbsJ43+VAE6y/d6nTTxasX8eAgtfOMgK4H2hMUcZq9l6jkO4\nWaXHRUu7ThExYuDJzTUx15hgxfWjmsKykxt12oV0QGDiGfBqeeDV8oK5Y3e2\ngd6tGdGPPmeRl11+DjaxLZgTJH5ri1YsMQWTNvWw4RQ3DvGM1lZz3UcVzU9Z\nVMIFrJEMopVJRdnbl/8jhetJG7AqIKL/WHMDF6+IzpkqVLNQ/ZWA1OC30xUs\nvtOKq05TyPvlyZ4qf2QkYNJPXI6GZHgyYaU6U/BcY+trW3+Hm9HN6666dAPT\nvDNr\r\n=yi/k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-7e6850-kaclpvoy_1589813205043_0.27947311204585024","host":"s3://npm-registry-packages"}},"1.0.0-feature-0219c2-kacmlct1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-0219c2-kacmlct1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-0219c2-kacmlct1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"895d69eaf73894abd7442bf20baa12d2af324c59","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-0219c2-kacmlct1.tgz","fileCount":309,"integrity":"sha512-RgoM4i6TDnWLHVQ/dDmzrXdH5ec0NmIvXP088DFxd/ZlY2qczs1xfNDCPMYVnhbcWK5eJjW8bZlqA9w5+ofZjw==","signatures":[{"sig":"MEUCIQDLQNC2Kfmqv1nuW1H2hzE5gRTqeL1Bi1ROVIPoM2tJGQIgNU3oy79PuSABMRvr1xzLMuvuUktl/AI0qEMWwdHtQh0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1455101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewqWTCRA9TVsSAnZWagAAeToP/3AX4YMIQI3Udm81pmDX\nGQJDsBfsisdHJvuCFgZTx7gdyjmPqCl5JEBcsXcvdG3KRq005F26ak+SBuR4\ns2LrQSuu45L3rga8lJQ+6J1y/+HzWUX6KXx/+lN2EK+UaWrp0wgDWVgTcgwV\nDT7qgp6FWpOih1Tnr/ksGHpjeeDp3WUXelIggunFc2Iz713w0g/I64wBWcbH\n0EgwewyDxq5kPJCoTqs2WFafB7kfp47i6CcF37HeIUV23Bn+9VahkSzxq+ot\n8ze3gJJvqI5SJsnsMtH3ZKODK6CDFgNPJMfFR721Cp2Ia3CpLzoR2VNAFDMy\nIGWcTCMuFhRHuJYoBZjNfW1dtxFLQLJmdDvMllnOfdOSLSgctz4lu4CiehqU\nw+weX96fGRtox8ATYWOBJbKmJ0TZVbe8H8pxlrpTN9u/HKz1e1VHDJRO2Bw2\n5/NUrRWNTcj8fwZW7FlYkU+Jgz0SUHSY+EkuPzl/bmlDDL6JFS6KkYEF9/6L\n+mVfMSp7U1wWHsvpo4CrOURY8CHuCyq3jkIwzINTLfHLcPEYnE6rsmORNOvC\nkXn3yUVh4Cfib5iMVXEtduBnCRr3ycfsZYM62LJyoC6NmjlVsZuVOdcAsyin\nV4bAsN3B0s0Uwl0BsgzR49uB9RRVlO8rwgeNrDzVs9lT5uPPMqxagey+vNof\nSjJj\r\n=yTk+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-0219c2-kacmlct1_1589814675072_0.6045058686324138","host":"s3://npm-registry-packages"}},"1.0.0-feature-daab90-kadk8guf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-daab90-kadk8guf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-daab90-kadk8guf","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"704212d27c70d9ddb48314f375165512e58cfc59","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-daab90-kadk8guf.tgz","fileCount":309,"integrity":"sha512-SKDDvT7u4k+Uqyz+l0KSnjR3jNuTvrGyqqgH8Yziva8voX2IxsS6nRXh2L20DgvMQUeA7lg+ZSMwbKnXTs6AQA==","signatures":[{"sig":"MEYCIQDMiyJ+pYRr5jcceF5aQJUthYA+JdWb6xjQCbebZb7MRQIhAPN0RMXyffS2miJ83kLErzqin3n4IiCUsE3iwkbO3mMg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1457775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew4JICRA9TVsSAnZWagAAmXoP/ihGI+NPGRELkDEo5iS7\nC/EvBO5D88vUN+eNChFFyBrVE1seMMOLc6EUPkZfBC7LOrPY0+WcScZWhMBW\nuxpJYV7nRFnCNMyj3FOX3v4vnp8qbV9AD6VdU1IdSCpCzXeYW0bgbv7eZaGj\nRZKpyZepN14cEDI577oFNGYyiF9NDSk94zxjHTvNNLMnaoN5CZvA1EIN+/+y\nmOYt8V8AOXFghFGoNMNBll6eocIEjBgriyErZjYQ52/xKzA43APJi/9U07WY\ntbqVIg2iSLjbTkoOAoZOkk3RVxJJ/R82YNKCz5i9/SNPuJChsJTaWV5GIrHc\nBsc80qYDlHbOr65HOcT+rBOWzc6U9XkiyoKNAxkavYVKKLc8ABG5pvviJia4\nk6hWmX6s4ayiopYOXJ5tkAzZn195OIzRUVhkndalVxGpNuWwW6F4jPu0QXbl\nXK+Aw8HSjTU63S3PeB2oB+cXb5bKAR/tVE1flxnqnUPAhyEhyuUK0i9hqTkd\nTbIhzQQ4ggN6fffTgqEzKRb97FHBSwxEwpwlqXGSxBe4hEBoq0qiIQqzBPPc\n9AjCfRYgne8CokGetIT/QFNkZicIY+WK0HPRRdr3OV1d43VrkGfldY8NwbwJ\nZqc9KGpw610r01URAQPrIeUUgf+fF2jjtZyD+pJbNDlpIi5aqbIczc9MWumi\nklhb\r\n=ndvU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-daab90-kadk8guf_1589871175497_0.8773155582319607","host":"s3://npm-registry-packages"}},"1.0.0-feature-66b5e3-kadmwf2m":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-66b5e3-kadmwf2m","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-66b5e3-kadmwf2m","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"e7ccb549e94f936c8a3cad9d05bd2743f10a6667","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-66b5e3-kadmwf2m.tgz","fileCount":309,"integrity":"sha512-jFkYrVTF9uIWCQaY8/QMgifWik/7dzNxWvCYsJQFMzegd2tP6EOCj+E87j2bDFhXr5fH3rlrF9hndzCZPNgBIg==","signatures":[{"sig":"MEUCIQClFKbLeCB4bUFvFyKHjTekAZxH143mB4/2KoUBMPUyaAIgcbR/HTMxuCd/NUNrdr4WtkWEfEKeMroL+kE/7YwFVLc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1457721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew5PKCRA9TVsSAnZWagAADkMQAIQpbr8a+tl72zK0OYBe\nMql1nseknqrtlwKrk5av4HQTX8M6Xpe+I92DIPJv6UnKNyksAWAKcnJpeIG5\ndUaWjgMPXlA4KsAtuD6eqXNRgJrVCXHn1TAagMJyDFmXQ9+QKAJsXaXCRfu+\ntVAVuPWg9riZJzJ7cJownDMSKdRYqdvd0O+MfwUDpyfrHtzx2+KZ/mUFrPT2\ncA666y29f2+uUiKTxDjpNNZh+VTMU5a89tuzfZlI1ad7GVQesuM8fHX5LoNT\nF39gTyPaDy3um5t9G+ohmjgI6m4JgesETfgHO7dLpK6W9d8V2X06+1Z2aZtU\nUbYdQDZe84qJQOM92THAdZAAzW1XWrYn5iRnwgDJ7Csu+C4XG6qgiyCD9Voj\nMlDmHy89pyf9w6zgpeKcV0/BZiSDSdPfIl9Sl1kUnjApJPSCcbiUskMGqxqa\n7RfJmSxTexvNofCOaQMZySghnS2VM65c3w+u/KymidIzDQvxCYxalBQ30ecA\np6uWYwGedAkLgFyx+Ox8lTdT8EQoQ7vTiTsRsaf2h7fVOdk0i3xxwWqFEFtg\ngFFc10/WeA+89v80ZBWIT7PyeYfMSyNErdgGw6holHbPBR+weB9XfAIJySR/\niQ6pwZVErwGF8+C0FMkd7LFe78LuHu+AqzKK/mbFGX0SBViqQbxGgLn0Y2SH\nmddZ\r\n=n2Bh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-66b5e3-kadmwf2m_1589875657655_0.5094366722179087","host":"s3://npm-registry-packages"}},"1.0.0-feature-3a1dcf-kadnc26c":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-3a1dcf-kadnc26c","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-3a1dcf-kadnc26c","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"66d7156b345958577dfbdb045ed0bacadb1b2a3e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-3a1dcf-kadnc26c.tgz","fileCount":309,"integrity":"sha512-XJW019mUZ/4uGSjsBaPzySy/Umqv+jiXPcexJzsaxTDEJSduVlpR6GMziwnZrXPlNMlsrptsxXeoMIZfRiaTjQ==","signatures":[{"sig":"MEYCIQCh2Drd3QGBVvvqUro1FHA8GXUMAU6h1AG1wzhN7yI5IQIhAOrJIfxoD0qP4g7+pcOv8Tc5mOHmnYMPyty8wvHuJdlk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1457691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew5amCRA9TVsSAnZWagAA6roQAIqKZ+RrMdDeUaN767qs\nQIkIns2xHiTm7YgkWj1iyAiCC/9qxPJHrgnp73z/6OTuMwMtmNkV+LZDFHzU\nzFBEmDXbyV9vZGZsasuYuQ3RUbJkVgsGTX+RnYVAZW5ERDWlPHyz22OEMlH2\nxfVlVoB9mIx3y+nMsH++PPpGArTJKrcuXyIrcIy0989CLzvb/soY8pFuKGe9\nxdPVgLYvrD6UgBLU4mFjic55/knegjCQbRc7TCU2xFspNWfxvf7dYHMrZE4U\nxi3KKelKlQhZrZlMHr8Bxg4VjX2j2bRumbjTAxWTQCds+WI9Gm+cpZirWFzp\nrJFTOZiHCbHiuPUwAkVEfXqIH+Qn7ycWcv7iZ/xF8WihpyQ0NkHM6m10ZLO8\njCU1aWQ/xe9PJyzAIX27ymlDGVkviREnKHtD6AO++uwL8qU6sWB9uRcNsP+o\nKm8pXlr3op0HWy8xb2MAAyocufxP0LQZGTlYam3x4hXLLT4BMOXgNKrpgoAV\n3CfBWVU3av/+MGae2MQlzFWmSViKin/QLIWEC7/FDouWrEHpu55Ecg2YTaKk\nLjUy6wpSdCGA8ATlb5pYzGQB9AbMCjhBzK1aAqA0ODYI0axBWhpH5XeHkPw3\nbNnpLCG672BeFRuGaPREGrGTkk11E8uP4ghZaQUV8s4Sc/KYp0GLUP8+cVL/\n7Eez\r\n=h4fW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-3a1dcf-kadnc26c_1589876389843_0.4105084557007581","host":"s3://npm-registry-packages"}},"1.0.0-feature-5fa9de-kado2n7b":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-5fa9de-kado2n7b","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-5fa9de-kado2n7b","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ed8e9ae99cee8d0a724d822b0832c64abec54f8d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-5fa9de-kado2n7b.tgz","fileCount":309,"integrity":"sha512-/yMy4QbjnSE+SJ7XP0hMuQTuAC6hsn8zUxxwXloGZuY0mWFbzZwqUNqoHzTVFautKUS46LY6vxH3B6cNdq/qVA==","signatures":[{"sig":"MEUCIETACR/KIVpma35zLUtbmSjQyqOyV5QTBKymcPOXGNfuAiEAzQUrk7H7CkWGDY7TKC9DMRNSxpLIWHNwYXKB8g52D6A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1458047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew5t5CRA9TVsSAnZWagAAS74P/2zdI/tyCTVnn8uX61Md\noxjdGqwktAIixmYSTskSZAoI87kDlYhfWil86iilmmyoyUWospEKXTLGCfNm\ni+vmYHFng/n8Chu9NIAiUH1+Kc6uLXr6cBUgkpS8w62TT6jCnZKOoxsCY+IG\ndUwuP+YuUaEnvoKoYbjfdeFD86fw1Y8qCvcF0VLiJ1KFZk87Hgn8rEYarrJA\nFn9vzN8hCKiBL5WAc2kOCDV6GTlIu+7LyanD+fb4a4iTp5vJMgCey4UAUhUi\nS3xUBHSiF44HpRh7gTZ9M+OVsR7UrwdHJ0udT3IrgVOJYBgExNk7+v1FDYH8\nbwWAUTa7zjE80D9sBqshpqzH2Y+18AvXl0IibfhggmnkEcFy6NrHIQnAB2WJ\n/U3h3aQqpHRr+Ar/SJXZtX5iCQPmKdbzDSymnBptOhWAdJXTTdIsVousMvn7\nSg25Cx/YqlIyJByH36Qc/HGN0EIkeqeecXblHDZ+ONDfjBKAtM0F5AkP2pZw\n+bq0W21pJsWMf6wsK6xtPNjbvPLmwKltAgpxSb0IZ57lX8huqGD1aF5ftzk+\nWdmEHvKx0Rn4YiUwxME7fRiPogEu8lWidd8q8lZTS4cJiuVScROha+eWkUKM\nONSSV0N6Zde5BFOLkqU2MUMdvjPJMTm26oRuGHoOh81+pbxIL4K36J+htSlj\ntoMY\r\n=6FTq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-5fa9de-kado2n7b_1589877625535_0.9347821878472338","host":"s3://npm-registry-packages"}},"1.0.0-feature-a42bfe-kadojp3p":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a42bfe-kadojp3p","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a42bfe-kadojp3p","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1dda9808c463f0dc6ea1b137cb9ac0101382a79a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a42bfe-kadojp3p.tgz","fileCount":304,"integrity":"sha512-z+5leZQLCrNg+vt7ltvWMbvfPFnIRRSi1FfVsgEjz62+td24MLApPKlHMCorBUQmjvagfXMUDBL1IkUrCTCsCg==","signatures":[{"sig":"MEUCIQDYmVnqbi1lKpPrThLxLfuTztpFsteMLUq7HhqqlMWmXAIgXqZlp7WSz8Gk1kkBdi60pzqebyQeZxiQ8fJrOykb88c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1428393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew56TCRA9TVsSAnZWagAADxQQAJ12l+bnvThG79bMmu+r\n0Tgvzc2hYA8o+X+iQU6DqYD+k0oKG1ez1Jpq1Nn++l7tL5zeY7ShCCAl7n/7\nIhjKcg62MNhovsIIEpxSyl9NGwBK94pya7gslguBCeAS73We3rzROP+zdc1m\nLG+d75+B8GwOhDv1KJHdumCPwKx84an6xu3AXlyEUREjNQ2lphKaueZ4OIdA\na4zUUyTrnrJwa8COjjDVbQkDDnDmzQ1GLNLng9v+gFBGuXBwo7FYJqJukG41\nOxHTx7EzC81INi9it1fDYM3Cnv433DJyW+4wvJmIX3OpLpFpLDUisHVRJNRH\n8vz2i/4PpZLa/9SSdPb3Ots+VNnaFxES70IPtC20wXpLiXjy/5QA9WcsIHR2\nZRHwxqBzdC8wlnxTCpacQ6AVwmzEx7ZTg+17nwvfOYqsbfkkM3OvSnA6HmGg\nNJouryeffKX04xNTzVy2Jj5SjOcgBFQ5hQ3n8cbdnkde4rL0obKqqb1el5eH\nklJw9vmXweKNWQhcmLsvHdl1JYrz3twGOyS4JP57DKkUDnVMBvFEsOTRX+82\n1yql7kt6W5UK5KI5it7NQNYgEyXUZRTozwJ3ayFKHzwYTj6SiYa2Y689Gvs2\nEywwoCxCwVOZ0NIhcR3QQWZtZH1yh/9XX/3RmCXkfTyK+13RKkf2Ui5/UNNc\n5jis\r\n=UTAe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a42bfe-kadojp3p_1589878419237_0.4063245589287652","host":"s3://npm-registry-packages"}},"1.0.0-feature-952a19-kadpz9ej":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-952a19-kadpz9ej","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-952a19-kadpz9ej","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6d89ab90beba259fa3a297169679c523440b0c20","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-952a19-kadpz9ej.tgz","fileCount":309,"integrity":"sha512-5ZFgdUyHAi6v77t4VR+rzgsTZzcc0gAMLhLj6WYFTUwFbEk6ryRGB8q1yxHH6dKUCVgLMIaLBEt561Watjwi/A==","signatures":[{"sig":"MEUCIQCnFPW28yu6e+Ur11LyDMf2ye9Aqahy9ZTrkUMLb9Iy1AIgcNotmarzoSyTHv0AlD+k/u4kYnNi6mkqy13eJASzWLc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1458465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew6f3CRA9TVsSAnZWagAAOh4QAI1RVjZ4PFytkFHtowYO\nRqV8BW703aM31A/qqVvWkigCkW2LyIiIvzyxFELDRkeywM2sLoLXe61sqaqD\nFUszX/kh0Gdx7jEIVSwoMPMiG25jQqjNrzz6Si0Igy/rTKC2Mq05BPdCoDgK\na2i1AVKLeBMBt0WCvTIaD8M8auPO6pTuhuON6OZvMqUtIsfjXDEj9Sy4L34L\nSvy91+nqLYGvD7g/k5X/7bYvE3YnU14kbonp2yOOpt3J0IELgyvhfiqizLVb\nMpZSUTiHPecUvWvrMHbBWsjEn0EZruyuRDv4l2W9Psy0ZpNDNxptDBr2LdTV\nveysrk9lZ7iq/pd+X06re/rhyDTE2SC8A7NA4BjCMUvymDiBjwTWqsffvLbo\nCROGp8nfVB0MUcVAOSoYGzKkkzrI49xEHGj4nsQSWahuzigc/sHBVpM9NHhP\nqvtSDmR0IEP/clSC0aVLHhMsEVBLaKOhbGASQhmFhjJvfthmpUzMmT/zEUAn\ngMWS249jDmRfnn44HBMEofDBuNR55GxLatU+3pBdp56VukDDzsPpUIWLZcw8\naNEN27dJ3O2IwNmtjhB1AOE2IYGE9irVyOeNPug5jlI9zSXrz/uOc9u+tUbB\nafIchSMDHhVbsnjr0WPtL8HLJwPidGdUdMN3GQzX7UkDt5Ewsz+rN+Iluv81\nj9RK\r\n=d/eI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-952a19-kadpz9ej_1589880822536_0.400161494001374","host":"s3://npm-registry-packages"}},"1.0.0-feature-97e4bf-kadqc8nd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-97e4bf-kadqc8nd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-97e4bf-kadqc8nd","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d2e4533b9d7e6b8fd8776f8b1eadc2aa08f86c3b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-97e4bf-kadqc8nd.tgz","fileCount":304,"integrity":"sha512-XSSU5ge58T9s2CMjInPQYJr2+twKAZ8JF9sN2NA9yffxiRRjuOhRT3c7FZkkfPDT7ZIBh+uTyrDn33dY0opbWA==","signatures":[{"sig":"MEYCIQDAKrHrFyDuACy+0Zv7TAvb4A2qmlivDy9nULqYf8NTtwIhAJl/DHaW0JtyiH5gD8WdJvflZyix3A32W/NxYN08/U41","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1435344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew6pYCRA9TVsSAnZWagAAsFkQAJnQ0RanlT/GgxNz7PhQ\nxnL+yqibxkqCkoQqW/B27WrK53UDaqpkPQW6V/kfolY8ifc23YHBjzyp03DT\nVsGx3rQcelU1dI0Bk5g6nPfwagM9kSovEg7gJMQSqCJyPqEPiLGhXWWWhJcM\ns/7/YeOs7s+zXp1/SPghrNAaQ0DcXYpzR73j/skxYKPlhKQVKLvsMZ/mv2oM\ntDzpAKxqEkGFkbwg6kAE+ggPcnWEUX6HTyWIm9MRoSpYYgOV04Z1ecLeHuC4\ncoCr3PRrzXhGLyf40ZH7m7ldfdsWEtL+s9gczWYeXt8KQBPWZDxLqBOSv9Sk\nlcqJUZrcfZUBJMbtpRrFKODmctM0HaRjrgUrcjtaayiDC7KN/iWdR7uf2cCf\nGPHCilgJT6kcpOpBY5HOj43HQ4ggaoXHpNH/Wes1WCI7aLRLsq+aO37Qp2RY\nC3oR5nrnR/x5jUJuuH5n0y8zVojLL3tNIK6EteYrwfYh+0fPWMF1woluIG9o\nbTwWtxs/jS8iL3MAEoSb1pOVUubmdeUAtO/YggX8cxRTfCUiEXbg3moN+zyc\njezlun9Gu5DKDAgmQjffOPOVhVsbLmW2tdNBFz3N5M9VS14dqvXA2rfcv5SE\nG9mtjWit0HEIJ4I/dUcX9uF+7fgegvBXcH5TViRvaukJEkrOYB2y6yjusyA8\nTlC0\r\n=YCrI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~send_message_to_process_instance"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-97e4bf-kadqc8nd_1589881431570_0.5548265083797681","host":"s3://npm-registry-packages"}},"1.0.0-feature-67ab3a-kadthwdk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-67ab3a-kadthwdk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-67ab3a-kadthwdk","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f4590788747baaed096489d5ff17777e67805b03","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-67ab3a-kadthwdk.tgz","fileCount":309,"integrity":"sha512-+TbYati4F6ECDN888QEPpprqQTJLCJ9IlZTURIlIhAYkHrXYXJLlsDYIz/WdcefRqQSYO4ufHt1hGbvLePqxSw==","signatures":[{"sig":"MEYCIQCkUVGEz+GasyCf5sV6B/YkU/hXGTh6DtfQJJ7lddAwcwIhAKhvRsM3iRcN/vg83KOYVGl33aLQWa1zIUkMc29fv7F6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1458877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew78QCRA9TVsSAnZWagAA+nAP/jWvzKTkoVlC7HwdRMpb\nWzpkZBuxfcHuzQZarZdZ9iqxwSFwz7uzG2eqec1QfuO3pp/O4tzMN//qhZNq\nj3R8IBKR2mBiSig4sGX5BllCa1uw+AX8L/ebLhEEICZ3UJWmm/s/kASkfiZm\nw31nNsqkMR/mlqER1vFPr+g7mmj5pMEbKielDuCzabWqoeRCF044Bbmpx1Cj\ngSxhYeOLbE7eiv6hroOBrMlL6VcDE/FSUvcAq6QJDqfOnfw8JOd3diKMZjXU\ntaiNMZg9hm8JSLr/N1iyBVNgUR27GGKcb8babFmX5xXYZFdRkpqPvmEdkrfp\nSu62R/p7sLqq3XdfUT30XFZCr5i0hG+akQQIVMKbajZJTs1XuPVw89GvyNsC\nzJf5Ar0s0ocEFApGrCUnFj0ZaC37V6Pls5WW0SzlShFi6brnN9NBm2YLW27X\nuMdcKujzyFx1YPcYOPLOHz55MMqgFAoEz6/vq0FB8pmcx23/CNpAPPsFOGOF\nFSi4t4WZfoSm5ostAsUbdKyy4FTJs6wr5nAZ4lo6ua3Qo2Dl782EDARuZLKl\nu9wWJFxq47agRu4egE9u/oup7CZSozWOm+nPbNY2VBq0Phd6KfpNCh6iG25g\nAmfhjk3Ve5I5p1PZaYIaHsAg0J1KxGQyk/kH+lecQm+oLNzpYJI5pO+AB/Zs\n33QG\r\n=CHKZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-67ab3a-kadthwdk_1589886735668_0.589505607744401","host":"s3://npm-registry-packages"}},"1.0.0-feature-f07641-kaduhf3k":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-f07641-kaduhf3k","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-f07641-kaduhf3k","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ac9831052e00edf0121275319b85b9979dbb54a8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-f07641-kaduhf3k.tgz","fileCount":304,"integrity":"sha512-Nm/FQg75X3nvoAEX0pyTZtz6i7kNcQcJ51qZTgKW4Bmr5tu/t2rA9e8Q6T2xU2djMWRH+3Xs8omS5pnlbOjzyg==","signatures":[{"sig":"MEQCIBzv8TcxE3IcHayAgxy7EbcGWf7KIgAUPRZ6vQmRyOnwAiBPsS491FBj0CosWZJHpMySrWKmO5YurX98JKX1r8qq6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1435806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew8WQCRA9TVsSAnZWagAADecP/1SiB+Ks2+aeqB2H/LcS\nZSqW71vuiz5wwUuHRdwW9Lmp2Xj+OJ+qfsma7WoN34KmPsTyccyBPh0HP/uS\nq278nlMHAgHB04SaL3KxSlT4S4cVOjP7EmN2fUkSQIUQrceKKjYNtoNHj3Id\nTDRnwvmUUYkZ7LuIng0I67t6FlIkYG3Csf1sBrTEp69g4fFpnzpvr6WOY8tL\nbKrDHNs1/fJwAxc0Cg3c6YHKQYDBpqdLewAM5Lx7HaJo9SKODHJun8s7nf0g\nvnA6B7s5YyIE+KK6v8PYtNG6golm6k+Ums6Tc74GdlB1MwcVHCx1LzzeLW4j\nNiOBTF//AQYtBKl6bCc3/nNErd8hAMSEAkb0OZ8uzIkkkNGqHbAADjfMkOuR\nagH6QTvbP6faB9kZqaJvzMsm9/Vn3SRkgkMvLN4Np+Cz2Uv0nOE0OaJysx0l\n1IiCr0pOTHtaxssRXZp5J0PTsUGy7Wi+xV+QciLvUvCJHyBEpFt+IhXM8ilY\nbWFwk7hBf40MZfyfUq+YqXesG0e6cCNEY0joy8qmhDSlbTuP9qxBZEHMYlg5\nxfFfBklVtYPIBOI3yTWuCWFQhienJIJufOhnvRAtz0/E9qUEUvzJXRsd6Lvh\nE3n+MPenLLW5mBw2uCqxj468lfjh2yFNSCSte9NRzA+ZqQ+fkABC4hYKEl6n\nF2bB\r\n=SJk+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~send_message_to_process_instance"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-f07641-kaduhf3k_1589888399658_0.13005080746715625","host":"s3://npm-registry-packages"}},"1.0.0-feature-fe3774-kadvf1tw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-fe3774-kadvf1tw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-fe3774-kadvf1tw","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cce45e46cbcc5e1748e088d979e61ca003493e63","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-fe3774-kadvf1tw.tgz","fileCount":304,"integrity":"sha512-gV3hUdOCwH/d4TDNUlHrAKK9jiWSFx593R/zUjKNhQ8X5gVgTE1auYZ8QHLsvi0Fb3YLJX62606Nqvq/DsF9bA==","signatures":[{"sig":"MEQCIGUtRXAwhZrRmb8sommz1oEChl4L1s4/s0AfgexaQJ6pAiBZEWxd/amUt/gYq+uS85h/D7G4Gsf24csVX3IGkLJNbg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1436178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew8uoCRA9TVsSAnZWagAAYo0P/RLqar9oiTcz3R7NsHKu\nxa9NoLefWQ80qugnp4kWFLyDdtTPmSpiDph8H8Yn+YuKJlTLtvPin9MAIauM\nKIAeAPFWlhsxYK+ir09q6OEhurA1Kn7p2OnJQSSR3c9o1a9Zi0eObMzRcsk7\nCUAE4UwgT3IcjGulmRnvziCZKeFTZEZNQOHO3YWVqSfhgCCbQM4Fgqg6B7i3\n52G6sdZBLRscekoWiqSOxVTt4h9mfQC9xiiwLElj6wg3gD5uSvTiNsQfsWzU\nkXc6WlJKyoKIIXhJG+DN6Kd57z+a53tnfreugExxclCj8uf1DNRMHuI/pPzh\nxIQtWIKIaPKXBD4R+0c2ylWrUQA7OGmZEquHfo4PeweDJRCyyHrQGhgEcMfW\n+zRrVOWN28ja500GeMZv3zE2LsQFm/cjQDxV6mgKTVuvt9BBap/M5YXLvmzh\nAP85AoUk7jxv5AayFiFeU49J8vD/tRS/O56DSBmTHBXRmZNiJu3U4CMzBSDQ\n2PByflBK/vBQUz3b/9iJjRGoqvzQ+BccQfvn8sSV0y7P8XGS7UDJfFgL03I3\nPRNxcA/ARVgpnKtJZFXchvkYNx4nOK3s6yEPrOEE8USMWLQrAzZojC9yvLdf\n2h0gpkAOpTttqD37BreaDzMPDYZ5RieFmqYXL5qR8foddxo3SMhziT4XtvlE\niK2u\r\n=J1Nb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~send_message_to_process_instance"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-fe3774-kadvf1tw_1589889960408_0.33204485667987615","host":"s3://npm-registry-packages"}},"1.0.0-feature-43acde-kadxhm1n":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-43acde-kadxhm1n","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-43acde-kadxhm1n","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b678dd46c67b2bc5bb49d004eedbd526dc8d9d6a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-43acde-kadxhm1n.tgz","fileCount":309,"integrity":"sha512-2ktnFdnHnD/cxCcS2MxXlAgF8lz7u/mCN3lFrNmZorp7JNUnJjc0ETDZ268oL6k4dFklfAQTKoj+5LVcUPJ9CA==","signatures":[{"sig":"MEUCIE1tkD6uzzP/huuO8mCB3hIh1pLlVYCYiwpK7waVXXLWAiEAtscNyipJTZrLxa9DyWvEpqy8gTzNr31U9S57G8u6SVU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1458865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew9k+CRA9TVsSAnZWagAAuKsQAKBG7doSjMEvJKGLjHjm\ni3laGOdTTJg8V7QDZMJ0VUGDJhThoWFNrjS9+nnqhQWOSJ/JjTg3rdwDY6yo\nxtUSHIj+26bnr1hhIcZkSQxZPgEUFlNahIo1ItKBa5a0mQpSGyc1ja8a277U\n73asK25XBtfrvxdF4THky9z9YLn6YsvaZX+zyEDwTgMF6qALvhBagcplCYBT\nH32e9aLbA9tvYf4I+HeXlKvCH699Y5I0CC9IQhcRSkSA++6Hxh5++fFlDa4C\n9pGGt3klHcXyoxcp4GtWgPSAHc0chWcU0ElHNQU2wsBPRQa9gkoVWlD1crt8\nFBacoZMhYZXpzkzIGffW+893HP1MVJx4c1e6gHulxxbirW4sxExODCJVrJFz\nIJdYYqBfnXJtsZVTqUN2AePlnYYXzjnMWP5OyK4gyQkORsdbk2lA1tE9NLsa\nwGny6eXf+EE8rC2YNq0SwolCwlrCIPBv05HsIXKYFm4fDV2v3TvR4jGlhG56\nFrzdWDoXv0S3C1zHvBVILyRD5pWqApJWgFFXgkdvlD558FrBZ92OAY8Djw92\nlA1Lt7gl99T6tzsDPwcctGQ3h6ZVCCz3UkAXRqFaCu8fvLMcjV5N6zpIPzda\n84Uo3mibkGox9Q0CDoCvRZ1UhDpneFtYgeARgBWiR2CxX/QXmqk1+RzFGsIF\nu2iZ\r\n=vwq5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-43acde-kadxhm1n_1589893438092_0.7086614513601137","host":"s3://npm-registry-packages"}},"1.0.0-feature-306014-kae2ulhj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-306014-kae2ulhj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-306014-kae2ulhj","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"626232a17e0547c532eabd44d323d38031f5e6b0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-306014-kae2ulhj.tgz","fileCount":304,"integrity":"sha512-UauNugO0zEMAGBmGeAESDAeMEXdPRFyAsNzhb/j9FgU6y5IARvPFtNUOApgtD2CYdSjyUyMbiTB2gd1+qD0lDA==","signatures":[{"sig":"MEUCIQD4yGuquMm/SwkL7TsRJYD6wsobARnF/IyqW/ss0QzCwQIgNSgcV6KVghS2dTsS3jTAiMPXTlJrBJOoisMgeNFLUZk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew/xqCRA9TVsSAnZWagAAS8UQAIwxuzxrCqf3TCEL3JSL\nr9ol86UAoftK/lmHMzspN7sHk/cLRJk4DcSKeZjVRG1LRNUyWO3ZZmamCmyJ\nORfn6nsV01KKTdrjojHD6NVaT4kLihq/GXFjjc2tqm+7sffpysgCJLuOFWvj\natvXuX9IfB4MSBtBeKNhu9/wSeTLfCKiKkcdZXNVeX4DZdMFWYDebUAbd1+T\noJhT1Ok7HS55OMk7nNvcy8/0RcD5g142++nvIAv8OlEFmmMbPkMQCHO+/pcs\n51mteFIaqWHCa4D19GDtznb6rSVbU8PHChFX75Dtl3fsXv/wqyNJJXHHoOrQ\nLUcDMi859io9CQky+/U2kK/TVyt731NMWXEZXQRheZ9jV6mJzIdy+D15kvI5\nizdd95K4EgkMryP1LufN1Z6xoqzql9MsHcJdukdERRFGj1DozMmYvzIstgrS\njwnZNpl9YC5UXndLI/YJwGqDIGzIihwgW3dsOlEMPw2IH+DYRPRq/pQYPZoQ\nvBIDsTYy8XYWNRl+FN+cIkb+iQBuDtLID5r3FCu90e8GB4pkg4EwHD0R7uhz\n6rOhkJvYpmZOp6hK/XZApX8HYAdCpw44iWulD6Lat6reWFZvElut35sg5U5m\ncR939Koz95g9CGSaGW3UiwCb6xi0NcyhDo8BjwPv0OGZGTwJvZt0SL5MBAnz\nUaNM\r\n=OveU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~send_message_to_process_instance"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-306014-kae2ulhj_1589902441388_0.260942018913622","host":"s3://npm-registry-packages"}},"1.0.0-feature-306014-kae2zt4y":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-306014-kae2zt4y","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-306014-kae2zt4y","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"55322cfbbfaee7d5082eb90eefc23db278424b6c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-306014-kae2zt4y.tgz","fileCount":304,"integrity":"sha512-TUI8sRtRwihDkvl+QNmzf6+F65Azaqtx0p0mHB36aa8MPR5ev0OACQ1qLylCrSojBeRenxBHrAuKhFoW48aQnw==","signatures":[{"sig":"MEQCIAXFElnFdQG24jOxZme7wCLYrKclrRzYStZAp/823QP7AiA/jhHvvLEORDwR8N4d7yp9DtBS7nemhdVi7mbdCSK/9w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew/1hCRA9TVsSAnZWagAAx+8QAKIYeuzT6ioQpgJg3Lhb\nETAIU42RuKAO7mU5Gh8UnGeevy6+8es9hwg46XT08k42gXKe9t6Biyskiv+v\ngp0jxce4Lras2AGfXIktcw4o1udIHtOdtf8a9iuujRtye7MJ2Be0tZD4mDDe\n4qZEdzW1rZIF87hNnfsRuW/G06v2DeRLbyzlQTgyQHJrRaPQMB2YHyKensGH\naiMETFO0Ak+DZ92+QODYEhYA2bg9OripDGB4QLtWAPCi7SpZXT/Eu+8XBYgV\nv/5s/K2IVVu9xulv92CorttOmBK0y17FZ+qWoE5sqhriMQ+YDwBZoAfZEmxO\nATlckYW8sYLHGEllNjMghTEBI/tjWcMiyA+ukjIe7EuXLEoxq5dbVeGcjJbL\n//EURfaZF7DUIoIlEukZ+qJ3egdpqQNM4VwEpxfnympJCbbgBl4CvQ4PwnXE\npOX/U3VEJG0AhjCo90neXJDo4wAXTHm58Pr/SR21/EcECxNy0+/ax1QTkJZ5\n3AKs0LK7r11fPD4vXOu2DW+n3ZujU1MzvsMVNAzydqCp27bMJR5yYjdPdOWR\nmr+2j63r6IkoWJtQrcTJ/FCTEfdSsD1gxvuatpPOT82X/fLn7H1z4MkLLsZ/\nSGdhLP0hZmT0c3xgdJ0hQwaOSSTJafQEdDhrkQa7KSAn/o95e9yENBmuxPKz\nnCUb\r\n=NgaB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~send_message_to_process_instance"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-306014-kae2zt4y_1589902688855_0.5287354439090752","host":"s3://npm-registry-packages"}},"1.0.0-feature-319d3d-kae75p4q":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-319d3d-kae75p4q","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-319d3d-kae75p4q","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"e6d8a7853f4b0cd1a483ae71e7e7ed52454e39f3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-319d3d-kae75p4q.tgz","fileCount":309,"integrity":"sha512-3HJu/vFqryiYmDTR978Elx8PoaYJWmWOdygEbf4fXbtnNabJGPY5Rm5/8bGAC6atH5PcA4oIOSrj9ejNsSuizg==","signatures":[{"sig":"MEQCIDcY0T+31IJKTUMuSXVPzXz2DWDqCUJ2pDHDVUjs8zjVAiBSBzNBQlN5o+lJqkeL0ucAwYzl0SbcpGKl8gbSUAX3Fw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1460106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexBixCRA9TVsSAnZWagAAvMMP/00lp6a7e8hW7L/nyZ9/\nD4AirvMCzTtChuKgn7Dj98fiQlveAP4f8roB1ugGsPKMaZfDVk5n+w4De3tf\nCfm+xLia4UQVdy3vNDUCeq9E3FaQlipcXXyVK1xlmxkyVsrCUQNBYrpYEa19\nEzFbP7X5rbAPfBHinGoYiErzPxzZlr4C1lXYYH5XQ1XXMfv2OEofR01zioBZ\nUqSNBoSf764zGo0OcEYjeeauAxB1rEYG0LPEdNFfXBWWZluA8VgRxzjQVokt\nGXvMGT2Jk7+aSnsjtS+5tsTv9jvpk9+4Mk9iBNVMovfDY4KnJDQdkVkKYK6g\nMYd4ZtslsxYigz9NO2xU8fjLxkJYWJdfMzbD8DWMQN4MLC5JANCSiF/zoohs\nv7DERdmTRoEJSowVIKbwJ322vzHkZp/gK+pF8GIH3VHk/Cd+vD8SZWBWXqBC\nZ2TTt5w7Dqk2SslO/UzW/6MIJK0/XvwdL8eeZ9tbgEg0Un8PcCaes2Go4uYa\nDjGalDou89IFsIOrF6UEUo9+XPsvgTfNY+0z9o5Rp93o/P80+Rdd5Sh1Erem\nQ6Nw972QkoXnOMOrb6RUvxep9Tp/d0zLNMdhqtzz+f7jb0BEReNg+SpZQ9EV\ntUYn5qy2W5Bf2s8rvvnKDeeYMwlSuHPkcUwUAvJRYkfH/PWh1Zcj4Zra/JW9\np76/\r\n=L7ZR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-319d3d-kae75p4q_1589909680910_0.17812637456854508","host":"s3://npm-registry-packages"}},"1.0.0-feature-6890a3-kaez0nnn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-6890a3-kaez0nnn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-6890a3-kaez0nnn","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bad097ba4871265e61ca12eb12865631e2126694","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-6890a3-kaez0nnn.tgz","fileCount":304,"integrity":"sha512-cNxF99mOJcMYGZzYDjs9LxwPIvMEoFIWLKGL3bhQ54lhbGjU42QtSRggYgghZbDa1OhMXZQPmcKWm/qhrfUoCw==","signatures":[{"sig":"MEYCIQCMXgBsB1t2yGoWTXA/YB/glyhrkylOGLn++Y0nlns9ygIhANfiNfJPQgYY/nX9v89f84g5ENBAe6jJlqVx1hXOVbJk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexM94CRA9TVsSAnZWagAA0mUQAJB/wheIXJFSKAeIA7qj\nYnm5gHDgQvp+WJ9fdxD76op2y4ST7QAnhedExA0GDs6iTcROysd5pq5wmp1B\n/cWFpudPpXNljcKy1iJbjeeBaliD9d+785dqg3ARgziVaX9NQCqZKvnyELvH\nHf4bFjluHHsitCuo/O5ReZUDLLVCWfMUH1v4Sp+zd8Qb2YsAIYlQ3bKtaX64\nvRlFMrRxs3jIPiJt1Gbhmdn9Rh0HOGZapyJ6B+WklIkv4g+Uv718IeVbd+pv\nnZVYEDREul9UabMWOE2CAPvNXxZgMCSLPbrnljZL2ldnp5V4wCiUFE1GL69H\nGStrrpKXxcLEIhMz9BTDTU5Yh+8tGL5QLiYA339/4YeXlAUvAx7Dl4cS2Szb\noPNpNxy2WFJ1xGVlW7ItPmiCLRCgsqYQc7HpPyd6d/p6Kf7QO9BkKtUHuP85\nGnPb5TyYxnHqF/48fQiHuxd/aewAG4/CPJY4cl4wjBnFBK1M9+pxy3E0hk6m\npqdvwmtPqSYbzINxJmk6rJmBMQwOXw1tp6T2UPEH/qBJJ+wsQ11S0Vgpns4C\nX7f36/7qGDDi6ttlwx2a++vWt8QL4pMnQVnP1YudelOWDVHw5w1vefuCK99t\nAn0uGim32w1WSd1gC57xeWEB3utB+TLh0b/QCSy9E/Goh6FM27e3IGq/dYOA\nJocC\r\n=9Uw6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-6890a3-kaez0nnn_1589956471872_0.49685445392186645","host":"s3://npm-registry-packages"}},"1.0.0-feature-189984-kaez1m3c":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-189984-kaez1m3c","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-189984-kaez1m3c","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bf3c0688ecd9f7c9a2d44559efadddae6d9c697c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-189984-kaez1m3c.tgz","fileCount":309,"integrity":"sha512-QNnMvAz/bIkpAFIaD2xZEzngHBBhbKrQB7DQ6a2yifLw1yTCOD/mj8ku9cByIM+JU5ErPpP/VpHKx1qqCSpMsQ==","signatures":[{"sig":"MEMCID2P3N1Hu9JETvXiozQyeFZ4xIOCmp0rKdmCibffjxWGAh9pTJ3LfNU9PQ46n6S+LmU8iqu9ry4i37BdumteT9V3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1460114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexM+nCRA9TVsSAnZWagAAddEQAI/aopUBdDk055BWf+M0\nyUkvtPTXdl2kBmSq4EzK1r5z7o2wzOHQBfIfAX25X/nn7OQ6xJuGBCT1N3uY\naPDYJoYMtuf1TW/rqriBJWtes2pr0HYV14mQkPtO1iyOtu7EorNGpmGp0OCd\nxHQCTZxC1eaqft996ujEz7UWh2o9mcrmRnzOvXD6b5lTGDo429032Hwv46Ve\nzZQ4dhppgrBnFCdJysQKM/AjnEj1QoucijcKAbgK1HpuD7x3XIF9iITV19RR\nfGLGTaxjEjmcgax4RmOZkYmKwpi9keByO6ALfHpW+xMqvubBD4fYgeXrs6E0\nULBXpYFd7rqiL6bMOb5j7QOXtyCdPK2TnCWgxYSht5NbbnorjtVZXBh6LnpD\n4yDn6gC4QSw9RNcRDfaV8yiwrL6fmOutUGsl+CDUlIhK8n/CVRs88VL/a/Kb\nN3u05iOyKGdzitfrHl5RUIFTLKZ6ATv3HTBow94JrL88rFKqSzoc9VWAdDCM\nxL8Ao1hG0AIfyS1CLq2nOOjJlvLYYwaJu5Fz4c5JisECWd/7VW5nrVT4bhij\nK6RdtZeQGMRkPhH7AUqWBPH5EhyHZIWzTfTdOInVwKWs1I5Fqdr/zj2udMlD\naKtVVuxPkltJ2r3MraqqcR862xv+07/7a5qednfS1htwbme7huR6Vz/sdZA9\nP8ll\r\n=ZKvd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-189984-kaez1m3c_1589956519313_0.6046087934224544","host":"s3://npm-registry-packages"}},"1.0.0-alpha.32":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.32","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.32","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"244734857a20fa3d2daa1b4b106550bd56a14392","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.32.tgz","fileCount":304,"integrity":"sha512-jPOdy/pob1dTkxqAMDUq45U3aSrauLocIakAdCjlsq5aJR8mkTxDfRUEk/04CpzeXahdMKhaHpg8o7w7pUZcYw==","signatures":[{"sig":"MEUCIBB30miHvpmM6/Mlj5BKR4NtVfZCd2eLnLvXCAkPmOTCAiEA+Gij175iwc8ke1sfuQyUZIImkCpmQYnaPeDJTbGfp20=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexNBmCRA9TVsSAnZWagAAizcQAIbAk0sg+cMPAYUPyBgm\nfyXwVKXmLrO9FfgPuucDOREyYmjrBlIvntuulNSCPFI/VrnDNdNyKYLsgd9r\n5XzmNg3yFwCFnOKyq9FcnSbNI9L1g27CtIANVdp1In23SyuUpY4lI228StdT\nUOV3ctECEw54CJjYPAun4sEBpIZGw3/MhUHSywkd9smrNq7Jfv66xhyzq6MQ\nHUZQlfGrPt9ESx1naI5CSd2UiTPuQnCdCxBhyqwA2ZghlhPs92v+qKW94N33\nz5fQ/Kfiyqi7XgH5z3qGi2+fuEFlPuKi7ecTpwmXe/RNImYA2/PMUHq9U1gE\nU4R6AolU+hP244Pno/etghck97ZinikUuu8uTxTgkE3LIeblkr8AsR4uYvcs\nvJXMyBqnr3CfegTktWtDS5JSU6srCQUJ52XAq4p/kmZI0zEgE3Nd8m2QZKPB\n5BtKLdGhlLwjLYG33EDdEx/GfNDihlviQaDl0i6pdl400U6PBValG2BXrVaA\nlUoZGllmG4BNXJ9YlPdRTLMEWJMmbDW09V9DFlTASIdfMvm8m9n/guvqeFzc\ncW14CWHs7mD2lUgEjCvQz/5RXe/9dG4zyEenK1CdDqhwIbOMoIV+CHwrnRSR\n0f0svtWLWASrMqi12NTkh/estsp1FkWBs0pJQyY0WsOB68C3SjJSYiwpnPHW\nWeQk\r\n=gh3X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.32_1589956710189_0.17603383296998665","host":"s3://npm-registry-packages"}},"1.0.0-feature-690aed-kaezbb4d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-690aed-kaezbb4d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-690aed-kaezbb4d","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"94d346281a2466360e6167a27908500cf6fcbc27","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-690aed-kaezbb4d.tgz","fileCount":309,"integrity":"sha512-po/dWBzMlIJ5/6Tjsubse3NWyLm7OwILt+939lRD41mmtnL5EOYlAuavxCYydl2swoLkBXRMPrWu9lgsCs8iuw==","signatures":[{"sig":"MEUCIQDSEWQin+uxd9UxwW7UnMOM+dSAJe9BAo9fthCn8museQIgL1r/8+O0lg+nHABQD8LJzY2+zMV4MO4dYTKfAuUoo5Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1456703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexNFsCRA9TVsSAnZWagAAyG0P/RLpOU4GmVFLB4y05OKP\ne3ShKKwuBbfm6tTAQTryGIJUmHNCgon3WJvSdO8tCzxXWKoJXuzVZgomWXo9\nu/rSDLaoT0pq+eDOCz5ybmpKgag0ZsUc4P2yl9K87aYLdIuMIBWPvVjpq9Vw\n/RBUBLanxB95AJF/9H1Qolj4404jwDtFkq5YJ28al+RdL7wjIWuYAJ+8GqwN\npDVMxE6JkzlRhaPPzPKysO9wgtI8WMnKY9WRteOck4v+9uKDPIcWJ9ocKN0b\nFt6hsZUutcgfOzJUbff/tK/9E58STv/UNDaWIcdd3WGsdcTT5bA9Ln9AfLlT\nXpVCPknAGvz7HbnYlRhLJUQcU7J+5SWK4m6E/kBpluv4mZzfYmTPh588Z4O9\nstwSxqrpzGGIreszfn14X7kKYIxQSJUPK50A3y5btkkSlxvTARxZ6PuRAURj\nmFKvnPOYCccBbJWLv4d1PCINGaJlFLHxeGVSMucysldpfI+PsLav8t1Xtl7O\nisOKLJUD88gSbqHNnIfJhAHP3wPRvOOCi3GrRDV5XZQpCG4D1jcIjxp2MT5q\nzEu/gqDcAItxDDPXsRZh0D7tswN+c8/YnJHJYM+PyxdBwiJuVGJ49TlGzxbU\n/s0QYAFt29PO5s5eIRQqOqF1oLUq2GvUbjqMiqHCX3CwiKVWUeZxtMvwDRpo\nyfcE\r\n=Lavu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-690aed-kaezbb4d_1589956972309_0.3593174307681477","host":"s3://npm-registry-packages"}},"1.0.0-feature-9c9b40-kaezp5pq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-9c9b40-kaezp5pq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-9c9b40-kaezp5pq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"24ec13c72814edc1ef0dba01e345d28f97e557c0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-9c9b40-kaezp5pq.tgz","fileCount":309,"integrity":"sha512-zlqLorKTEANERNjZyw0zSiR4TcfBqusSpY4fQ9A+ZI7OLlBBCKl6WEKGROuk4zqELAx1Zn97dUnpShdxbhNxVA==","signatures":[{"sig":"MEUCIGyRr3/777OPT6LNKISN/SZOO9j6Q8TCy9hyoEW4gcRyAiEAw4qxHy71IPpu4PTAgA/+Dw1uDGSQp0L4TCITu+kuRCQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1459956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexNPxCRA9TVsSAnZWagAAbJUQAI/grsLtisH2btUmBtu4\nYQrVYvVibZUZUOcRgY1CWlSWSpIKMY6AHTLELlOHNK3GWlmzlC+XUKfIoJEF\nAhvHk26YH6To++vLlHDeTONGVX4UCieuHsbz3jfGaLN3BrUOlG3LjxzwlrvX\n4IUM+/3yeWL7E8uYeVcZzmqo5WcDS/9J5qkHWfgzUeZ2PGsn+Ic/FF1lPnuf\ndOw0pH3uM4Aazkak/JYOfACalDfEZDLuqkZeGJJgDb3fyxgEUTjvdix1+b3o\naktinkU86ywdaj5+5u6tHPAdNWNl+pv22DwHxCdDP1G74gDh2Y/m+F0mPKts\nIrwYexDYjwnO10pmhrgIP2TkpQXgGfsJ+vVi5VxrGaDWw+Pprenovl/+jBLi\nya9/V4wM0E3DAgFPXcHiAsuLxAiC3wvszDJuOjdx7G1jV7/5RWb6DenE6oJ9\ndA/FLDDDWxJYCFkoJ2otHc0pZ8BBLY/Uiuf8tloxOBkYrD3a/rU5LvkllZW7\nUGs3MyY/iJijRm6zbJlv4Arvl7fudLOdDtrt+Cjq5SpfD73SzxSS+n76UUHQ\nBzyJBIKTupnS0Eb1eCE51WVzj9L5iS91nmTezBWSIezQ+ZQGL+YhJk6ioM1b\ngNoE0CQe4eNXFC3GUTEwRxx4TPlTzOKDSk8ZxDsmapczlpXlFr9L3ykl8Bm7\nFzSR\r\n=7N1x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-9c9b40-kaezp5pq_1589957616897_0.4002073194019302","host":"s3://npm-registry-packages"}},"1.0.0-feature-314393-kaf007bk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-314393-kaf007bk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-314393-kaf007bk","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f9cd9046eae3530bfdf21989780794776b07d62d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-314393-kaf007bk.tgz","fileCount":309,"integrity":"sha512-SESsjfi4g4zEOKLYWKdj1Hw3bMSqMLR8lsw+O1CrCuYhYFPSs9zXUnC9mgehDCt7GfLEcHnLD1Jr+ySkcGIayQ==","signatures":[{"sig":"MEUCIAt9PiPCEYKwMxBlt8ngv19SZyiFIbkKw/sgjmPLr4iWAiEAxYS/lHTcxNEt7MX8TnLMYn9R8+cRcgjSb4NK35CxxWE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1460078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexNX1CRA9TVsSAnZWagAAAO8P/1CZTIFcWhHcGRy9c79p\nSRBzpX/LaSa4Xud8G214ulCRDUtNWCCcqL5RhEMJrMF+aYp4VujNX7JzDpTa\nE4yRycpmVmPEf0JcfzQmeDQCBk1ufVYQo/MEh0v+kA2gI6Q42uH3+3oYedTZ\njhFGAqNH2mILO39C3FwCK2R+RhPqJmnKTk4esLvqxx7m4yu3sNyHydhnFcA1\nbhs/+P2AG7SUOdxQtX7YW769FT5JBIeTQBK1UCR7QqGV1ivhdIXOlE0lEkig\nLglqhzJTDCEHKJcCyAei5NQq5jEkKiSVUpqovFSxO+QyPynL/Paz/6qUX1an\nD7qvTHffrtP4eAJ/DgHOvk3ACs8YE6kOXwACrynNE3Htlj2qQbN0sWHL+1m0\nNP0DtAhqhtQK8i8o0WK4l1q+1G/kFxQDfQy3IsSU8YMUUoHur8zJ8VSOxOLE\n+gD3O2Ziig0wXQS0PV5j6bSt0WWTam7o6WwWkgsSW15FsI0qAvFJIGSS1LNu\nJeSchWsn59a04iQ/1ZdNmz4Y/3n2UquPuxFkVHVKBYvcnEi2xSh4CkTcHLDd\nY+SxCMvB4faZjMwrsWirGwG1q5ooVVau/J2+qYQF1LJPQh+f835veYdUpBXX\n7gaXx92ebaAxqpzI2f1M4wk6O240psfkwHOUolZCnRTv+JejqXbS2cBxlCJs\nWIE5\r\n=f4yD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-314393-kaf007bk_1589958133342_0.08871348033704973","host":"s3://npm-registry-packages"}},"1.0.0-feature-1949e9-kaf26faq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-1949e9-kaf26faq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-1949e9-kaf26faq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1d150a6d31b728557803ce309ff253cbb49a5fa1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-1949e9-kaf26faq.tgz","fileCount":309,"integrity":"sha512-KMENAjpNM+rtoa21E7qklM9wel3OS7eW+pEXtGDaHi+jufk57bS03iEgcJeIqHNwIhY1tWrzdUtaUyurBYn8UA==","signatures":[{"sig":"MEYCIQCsUn55uwornZmfinQ1tWqA9OuHESGrIJQ/vuZDrSntmwIhAIuCSj9x99pxa/IIJmF8uPmiOYS8tIHUdz2Na+ZknzHf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1460756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexOQ4CRA9TVsSAnZWagAAssQP/1LIjyr3LYhAxPdV+r4w\nKSragZ9VUz9hVWg4aMHtjw2f5EAoTDAyZ+gLt4PiNmgjzaVSxGEW4LazA/5X\nlYMA740JOoacy1o0h6xi0Ct/P9cFOvk95RcCXHtlCXukugexXG1Cm6MjZKV5\n0fe6FlR2aZvW8VQUxqgoiqALP0dEhgQylXS9sLyovAuARn43TO0KxoaFTBRj\n+/QFwYvoA+RZUOd024UeXQOshvdngI3VpWwIQZSnpLIvXDyNHRKnYka1AtDr\naiPXi1EE7Fd4NEtvKFvFI0MhF1Su7SGdxcryLwqO4l3XHxAXCNuQeZpG/UV+\nUlymfs7SPwVfEu8SJszgk79DTzXsD7mefK9s7JqNIplV2bDRtj7yqFitut3a\n1KG3s76E71niKQU9hvcGEQXc0JccNCeGdcSRjxyZEvF4PcGWHBJCNqnDqdTp\n/WDluxJwgbDgJcMuTLcTT+e4eeKILOda5EYXctPFW4dSh3CIl9ZmtVtw+eUP\nbGi4pBmSVWGcTIDjBLWYZgwaYSnoZY+5urCsWlmxeOa5kz+/AN037VnxrwyW\nt6iWW6GaKK9kfgv8N2sIs+Am6qmDwkZZoydKiExFmxoDTcUGPpU1d3Yr+6a0\nx6JraLEA4mhhfYea3qKDbVG8kIaQDBn3ze5mRMUe0G1bmg+KERPBAhiGbbCM\nTB6a\r\n=N4Ee\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-1949e9-kaf26faq_1589961783972_0.1077711344930008","host":"s3://npm-registry-packages"}},"1.0.0-feature-314393-kaf2y6nh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-314393-kaf2y6nh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-314393-kaf2y6nh","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9c662b82ea51291400540095447598b23e7e6d77","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-314393-kaf2y6nh.tgz","fileCount":309,"integrity":"sha512-I/ozEVdrC82OiinXpc2avA78ORNBPh38w7GD7HvQTmtLtzPP9tqdS2BDJXWiyRF+E8W+kA2uvFbbfYIxsi2vqw==","signatures":[{"sig":"MEUCID8mvwSuEUg4ogKwj92bpVbeDgQH1GLaDiEeMtk0jbTmAiEApGpu9lojUzBc48gg7VlTvIeuW2dcCsF/hmza3ug+0FQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1460078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexOlGCRA9TVsSAnZWagAAXDQP/2bcsxnb/ZGBJhJyBx55\nzzBpZ+Sk55N4HFT6mGUccclqStWLbOskJ2/bkQAurjnr5+95IgKKwNNOHCqx\nOHqfZQg9dX2VWPCEjsHGJFlTs1Rt3EauifnyWu260JX3LIgCQse3OrvPjftf\nXP66PyeGMNhhU1hCTcSVn8elj5UKG5/ZHh5ekds9zOr4hVXNYeLnUarKW0je\ncnFazouXXdgSljoM2YshiK6Z1QoAoSXVZSXd6palAJY54wsQhIgoQJuTQ2FA\n1zmBJUxba5vBUeO5oFButE1tXCDKYWKLUPovCBCe3O/xHCdPwFU3f5PsCItY\nfw7WZpeFpwlIoxA1K6qOKcTjfaJLuYyO8VrdiCMHcDz/B0W8ZgiUOqW0WaYF\nOBjhWwVgjlVBHxfufecDWndfF1N1XzJKseTbqWS4Koxz6cXWxypgGFOA2xcI\nQhLv1XrZ6F9UkzDh88O64PVzmaykLZPuv17sIvyqvjkbKtprt3Zc2xUnmHxz\ngvYSRciV2aqsRqpGyR3uM3VYJlws7jgAaQC1HaP61IqemrgWFRjpBnk4he9w\nGkT8UnG8Q5PYEx2IJXJrUlqOk6U8BqH+uuk5+ulKlmCHVuy9WuryBiDDYsFY\nLj/yeGxpe5Ve4Ke6PPJWVZCQZ7ATsW1tsqCL4Wv2JD1jgMvaPqLClPzFpt7g\nJL5p\r\n=nh6Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-314393-kaf2y6nh_1589963077649_0.41324695820018054","host":"s3://npm-registry-packages"}},"1.0.0-feature-bc4d55-kaf3etyw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-bc4d55-kaf3etyw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-bc4d55-kaf3etyw","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3408a13e0e17d6e48039174ecc66202889c834ac","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-bc4d55-kaf3etyw.tgz","fileCount":309,"integrity":"sha512-orWkC1cJJvyYMz/CqDqiWp2EZJeRQv9qpKiC+7t/y+8mBqIgOjV5bcgJfHCcy3jykygu9PiTOHUWL9f4Yze2XQ==","signatures":[{"sig":"MEUCIF+RI54glqDp4LSD9H0l6XN57yNEL6Mf5CpakEFzFcN2AiEA6vt7SEGimLjkg2P/GsmdiEh7W0JTp4/RdpQpQ5ILm0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1465845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexOxPCRA9TVsSAnZWagAAbt4P/jvBhCrNfpsJcEBqphTs\nHrUEjCmVIsijPHtyEJLefUdud52UHrrjKRW/9ZmmbZEhKcvINNID732jm9OT\naEisGi/bc0tQBUUZXHOYquYdcRl0pgaBZd0B3DDtLJ4c6FcvBA8hSv3NPp/p\n5J4Nz6eUhKMwYubWIT6gUMkY1p4xJjvtBLZPL3H8UpfVWauav9EIBAJXgDXH\nnnMlXJaKxfm8d2ibKgXFA+bINcxPafVAXCjoMpEDYsUFz76ulOfKe6DBocH5\nuPA/QAGnWeEMHxxOsHPf7lmHGp65mShnbCCc4hyGPO7/x8pxOB/na/xEaUNR\nD9B3eaFJpgK0b+t58VGeRdqZWtMis7vfhBSK+5V3MEauBI6el8s0BjSbfCPk\nxkBxosj1hXP1psAJkQDkxLbvq5rBVQmCPyHOfZCwCRYPIwUU27E1Lj0Q+C7e\nH+k+MzuTGWywvcGlz1X3TI5ipHAlp12mP0BVmDDOrrDeLq5WVT3uWEkW3O3U\nOV8MPf6vuK22uRw9B+vT8UHEGjLMACQtVFtzejDG1/yWFU4L5e0CVH0vHYMB\nF6v830RV0CX3pErz8jfhRbifB88tIy9KoSbNEp5L28KDq3mOHigtMcsi7vMZ\n0TtJh+c05VlRTzhjQ1xLVp4019n7PCBsk2Go6u+oYYYehBodwuzBFJC6iUYI\n8n0H\r\n=DTNe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-bc4d55-kaf3etyw_1589963854888_0.6992724248747875","host":"s3://npm-registry-packages"}},"1.0.0-beta.10":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.10","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.10","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0d70b5fddb873b6a1963465aa162ab7c0c8a1210","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.10.tgz","fileCount":304,"integrity":"sha512-8cJtdE7Z3z221Fd+j2JMRNBr7kYOz40EZswKBDjiGw1IZaIBFtYDAnqVwxZlrWZTdEd4mROt1iU7UADsiVkAaA==","signatures":[{"sig":"MEUCIHwnuFFwS579zGMBh2ttJD3IjV1qg5Tt/LlDrh1TMI8vAiEAvr2nQPJDcQAZKzD7tlNKl5wUpXYNS7HQTK/6QLEFEAU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexO3UCRA9TVsSAnZWagAAOQ8P/jDaFd/FRN7Z3TeN3QHj\nPCJTHNMRNHs3d3vGt1tLDMGC6BuVllhNyk+36RCA9u2Xrz9K9L5AcS+eZIUw\nblY+xyDjdoni2IXsZ4huliwA8/lYG+0DdGitzRVZyMbGiCMjwHwyoKbUNfhq\nJg4Ltl6m1ggxCYQ8VZa59Na61ZnPxFDqMK111o7t0HslSs9wyCYXOtTHLngK\neE3P0GQxb7wDskt0hSWUQBJuVUc3uYFj51VuTeaxsRneqSh01jbnhgMPWHNd\nRE9FLvBGgsi0z6TitQz5Pkngl+5W0Hm63IeciQkiu8ypH0On5DTS1Jd8Paqz\nSpNJYN9/5CCw+NqA7lknLg7Bdx8G6QSoRnUB8kOMfen+bnWrT1rWK7v3cOnE\nAogfIXZEOr3xfnkCfUP+mnT0qyK58lbPtxgpmMJoqt256Zs4ZbO2FQW5GUyU\nDF7lS9crVUbnfAvOwsw5nmm+smGL1ATA2qzyjHHllwy1pq3RIk/hEkf+R0ey\ni2BRzs9MTZcIiEiisSFtwVagBiKfne8GWNsSChSw1ziN+9uUdH4KmhSctd3s\nDisLOU2GOuhFDh6lkCciIQ1bTbjbPTIIEXo1hIEHSfgWqF7TXAKs3e1w0dBU\nI+gmMgTTZ41V/EIIhQXhTagyDCJGux3UB/RIOy96RQsG4Yjtdci7CzEGdrrJ\nHV/Z\r\n=PwO7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.10_1589964244301_0.29592204161186575","host":"s3://npm-registry-packages"}},"1.0.0-alpha.33":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.33","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.33","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"716eb4cfb0a01805c8d8244aee2f2b926cb0ac52","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.33.tgz","fileCount":304,"integrity":"sha512-Am36FEZxV4tk2k+PDqY+VctTnU6RXv2VyiWHCkftvYvMx+ebOl7BVo+22XvXTmS2UM4JGPRt4vJxapy9hMEFbg==","signatures":[{"sig":"MEQCIGwvKpmxv/rlGHo9iQONqVVI7hpJlCkVNOlg4KLnrJAPAiAKFQGkHV7z18IMSFZzcyMrxZ0sIajYlBw+OhxVU0JBLg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexO8VCRA9TVsSAnZWagAAAOcP/jXHsfYZ7U/Grdqditwa\nabdZW/ryCXorZs3HYZ6HwFZ+RnFYC1qZ+GheSawzr1HhI243h0u3NzEVNCKa\n5VU2xYemQwaoJevoKS3IiqpLD06uSolbLT91veFwTjWY5wspdhBcDSUCx1b6\nDGt9ka1j2tznSAm2e/ugodI7+sNZUN73H93WrcoFoGh/MEg5JPCObPUMyAkp\ndpFVpEbPv4Kl/ZrlFphMgjEXaVqr84f6i7a5IgqxhwWI/TO9eqc3n2bI5FRi\n/ep3wwGMdAfzYmP9Ad+oVXWAiw9Haf1QS4tvXlUWz7I20JJm3AjuI819vPcx\nzUhMaaL2qupFnbgwUs51Kx3H4oI69IYSdDpV7f+249EEo1PgnW4FywPeIa3v\nIpnrXYY3TyMMCaDRt8qrUJRQo9zBBblaBjPIrS+PTXNYvI8EYASdOZJulopw\nSkvYXe3we9stAKWqWQKC40k2ykxC/9MHHw8y915/ZEI+dxMaoqVkDpM9vq0h\nk0uEvwI9KnI+hIjhU7TkhWQarbpWAnYRrDpClY5JypUjTaYN7hU+RHPO74p+\nwb8P0XMeLTUqJKfYKx6awPQgesfARy13bQyL5ASaY5wcrw/QOBz6mRvd0Cms\nz5Eu3yKvxdW0hNfJb7UmgfA8YaEIONp4d94EQG8g4nm2Vq+IxLX//ejxbPoA\nikLZ\r\n=Ab4Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.33_1589964564598_0.48096830587231554","host":"s3://npm-registry-packages"}},"1.0.0-feature-3d0ab0-kaf3w30z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-3d0ab0-kaf3w30z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-3d0ab0-kaf3w30z","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9170b705d46a01eb94824774b19c31b54a4d52c2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-3d0ab0-kaf3w30z.tgz","fileCount":309,"integrity":"sha512-zXJBFY+isI2evCMxJIMTgvgwZje3qKIlLckkQpO4/4fAvMeoFZv0OOoRUs6S+gpsF7zTLwG0gEiYSZQ4Q6hY/A==","signatures":[{"sig":"MEUCIQCm+wL0mp4E4V0XR8gpyWPwikQib9Z52pDXFZg87lZItwIgVN6XK698V1AZbKnLo6/RDAbB3rjOqOh+nJNPhVUeeb0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1465964,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexO91CRA9TVsSAnZWagAALMIQAJAdhnGcpaJU61ShPQOk\n+ndaZ4wDzdnymEJNlX/4zXM8woukKXs+53TLqTeTj7qvAo0fI/nt6o5IWSCn\nqy0FumqQ/vauuJMMuyV0nMfg+Bhq6Alik13dTr8JcZ38o/yko2yXZsReRi8i\ndeYNYfeEWbHvVDsbGgdU6RM9QHbC9Pqapph0LXXjOuixO4CLxppoujgKLjvd\nH7rQIiCQ0dyZ6GrPpcsMlMwuRib1gmpx1FN0s20I6HofVn/eLHHaqKjI9uJl\nhdy84kVKtBXYzx4QE6JcX9cGSV5yiMG72v2z5vDMEzwRPmDl6/KaT91CRZCO\nXZ2U+/dOcRUPP81eEC8Xgu7B2QmnIJR3MVA0so78sTJFrq8135tW4ZZeI+sB\nkgem0vZYQMeUo1V5FtO5Xwj4nqVFtHdlUMHJ4+/rEYKgayYMO5lj9wO6er3m\nkg2fh7AUZekSLtWl+tendGLKrdjfIxqNmMKJ4NFK8TlW+Bx6uJXtZrOaoe0p\nLAoJV5bckT3YT/9eahRy+Txudblf1Yyirk4VPCytICrZKeOp9so3GYLFAdad\nW58aslfJyJ+c2OdO4um+8lJsnjxSw0/QqTevaXqvm/YMNBdwtPVqWrksBB0g\nv/tElQEv8usE5SoH6+4j+4T6+cBVbj514xqLlo04CoL695fQFmIEeb19f8ld\nwIit\r\n=ioyW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-3d0ab0-kaf3w30z_1589964661453_0.22181059969678762","host":"s3://npm-registry-packages"}},"1.0.0-feature-9e2d42-kaf4n8mb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-9e2d42-kaf4n8mb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-9e2d42-kaf4n8mb","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"e4601a2086587dc1c6cc004b0f661bbed3da9000","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-9e2d42-kaf4n8mb.tgz","fileCount":309,"integrity":"sha512-WAusn0nvAAoq4I9F14gsmOcAC3ysCOg4YKiUCLV749nl0/6Gfw7sVCp1Gi7lOFjEHDNi3dJHs01jBgnBosP7tA==","signatures":[{"sig":"MEQCIGM2XLSsH8X3Q4RaoNzTtpTj2fxVD7Og5t5M+8qBRAKJAiAY55cMey1/ZZrwov2Fy7n2bYMH9G1gF1G9Sk6Y8EPMdA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1466219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexPRoCRA9TVsSAnZWagAAO5MP/0dfAqYjdFOnfxWpCsEF\nCDZfxD5LkzQFHBoip7IP9dn5pmpUB5W3UqZCEUictvN00c9J1GXqjaNR/sll\ndZPpyflBvw04bBYlMh720ObA1/aBdVVL2Gti6+sM+0DvLxbcFrYmzEAYSKBL\n85/9Rj105axXiC29rDC3Enuj6gJ0fw0DZEYGHWr2rCM5mnLZEEJ19n8aKrym\nGy9ZwUDmocHrVg5zopKjpq1QEXWypfRPJQsr/jaaOfqVOzFHdtoGbqzbcf6C\nNNHetpGkDLKGj5oWi57XAJuqxIEV67YgIltxCiqh7r9qYBvgqEqzpQecKbGg\ngqWZj8v0ZVyoZJKOS6xkCqpjnNXmafFHYMM5sv4hfC1s3TpeE6OGfghVVVRv\njOYjHpnP8tvfkdKNyzQvj2EQyRv59A54rvMJ3Czj49N7IdXaDF3WwvC8Q4mh\nzTB67aWTeItG7iz+oJe/GHiOMvroVWTDhrM2GFFWl9Y6ecWMMw06IYkO6L/I\nmuCtnm/gLQtbliyplY6tKtfGpwsR0N2uCGpJH4/rD/K1f2Qel4aHRIy7Uf+v\nCsMMSZMPjoKIPD+k9Ti9ZU9M89Tm/3FAINfXNdN/cAKFAAULr9rgvHTv+H2e\nlseZPYuO8jppPfWkBK6oO/u351zXNiV3jSZ9/nAHL99rO9wU0/IjFgOh4OZa\nZjA9\r\n=txpY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-9e2d42-kaf4n8mb_1589965927528_0.7215718063430812","host":"s3://npm-registry-packages"}},"1.0.0-feature-3db6e3-kaf5clos":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-3db6e3-kaf5clos","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-3db6e3-kaf5clos","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ad68406cbee814449b60684a63b43bdf62204112","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-3db6e3-kaf5clos.tgz","fileCount":309,"integrity":"sha512-92RjWYN5+Wca2rLaaaunJXscKYiofbS0quMOkc6WCB5F3MQWqzoFa161BvWJel38v5pgw5f78ZTgMaz7X7G7HQ==","signatures":[{"sig":"MEUCIQC0cekIB10TLWlxQvE6FXBb+ENJFwxcVT5iUZkT1xsKzgIgYq+MyyK13c1Ww+JUCKkEE0rAxXT57uCP3lxx2WuOhvA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1465521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexPkECRA9TVsSAnZWagAAxw4P/0tTLFVOFAo93TXuE2qc\nFXrbwzy9aNXWhqNjIaKnOBb9wfDnY0Hppbg02r55EzLSnew3mp8897IJ2kVI\nl3VzUiDD0iT0tcZhbFIQRjZ9qL2gOGVvg4BiIpvgfrHze6Ys4zdz6lEVTxsX\nhEPTCVdVh8WHq10PpeAo60AHt9LhwajpXuP048P9ZiFvKT5GP1fNtnorvCiv\nMzgwt4KPr95AfWRYl5HzR/ebIPbcHXsBpexkbr/FrkTgeCVIDltOwh8l0490\nOLBTjn6Lwo7TLXzPBBMwD4OsgglOzuoTvAieMaKNVUC4eYA8GlsczEgLIUq4\nEWAsk+q6ZWXbYKlJMYV5hx64jTffzHPGVemgAMmkrnf9GbsC43PyVRNNVGaG\n+4Jojjm2p/tQ6/ETZuFyiai/0fQmDT1Auyyb9gGwRIMkTZftOQXhtSFHOSCs\nXrASCPGBhiYDogw0ltKYB/5F6D0QzfGVFy+Hj9h4aPIKBGLeiOew0B/dqa+6\niFqtU9IjnHky2ENJzDdanVFaR46u0msDJmd+CSQ0gCiacI/TXLEPad1nsNOw\nAaF9FJV24iWnuUCvSIpV1W7c5PIL4RRslqY+VlTwJdDBvsoPn7tDkUlqUqxq\niJedDS9GtMomXSb6tiurDNtBBaufpZykdDTK5eJ6J1miv1OefG/srxAMq6g/\nt9lT\r\n=1ioR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-3db6e3-kaf5clos_1589967107556_0.5988818734282071","host":"s3://npm-registry-packages"}},"1.0.0-feature-92179d-kaf5xm7d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-92179d-kaf5xm7d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-92179d-kaf5xm7d","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f050581e0361117750608163c468f22fddae8b05","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-92179d-kaf5xm7d.tgz","fileCount":309,"integrity":"sha512-ukgZy1bSrNudodPKpkLLpvxZ5CeyS12jwVG8ZqjyRF0g5e2KyQwPekpvINGvzGV0UQ4Tm0s4rbscXo6nTSKebQ==","signatures":[{"sig":"MEYCIQDlh4VGSHiw7NBnWJQvoaQIW966qNunwFUzJczEIvNsmwIhAN5jZg7Y9LsMPKxYoeFfIrtsXq3MZlK66ryv0nnl630G","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1474323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexPzVCRA9TVsSAnZWagAAxiMP/jBNZgYAEsk+2tnwp5Oo\nbILi1hONFHl+vcub6YZFqWJ5JsqHRXvsT8JwTH2IXbV9WhGhCGYjpid2lqaE\n8i1iI+ZkkgPi+4KAyvZ0wfIsJrrVTQ3QtTqHYQKKeIVulFPFVjERVtZKotl7\nVHk6XjIktSPJcW75SGrFobyGRB1bLQGDLco2YLTEBfu8s/4Mh+0t6HUjyV5U\nt/1PTCxMN2wv24k5EOpx5oZFnLFGmujQhMHkAgQfrQuJAXrK8Ij1hMQqKRAk\nT9WVnqwH/CE5CRayr+U+HrMNQjFb/M3iPFlHBp7sIvYc5m58ZzcuZaAOw+xF\nSwufSLBOM/7JheeOQvmEy/IGkA/J+fvLzukIrVeOoyjPaGVevLoX1a+U7uha\nOX+hBWbNyVNHrGQ7Sns2PNswhwTlVpIEfATAq10iUpb39mZ0JnxqNcVEX7pb\n0pBM2H9UBCQEeIvzI8QCd6rGSzpJCLsNalAn5fADSsjAodCgS2aA9A1MyLzm\ncbgY5UHUGXKO7eAh6N+FgftS6mqkGeEV98oIq/Q32yHEQXkDUvcH2BIPC/oc\nXLiFsisbnOgoG47zBCtcdNDrujUnHFvEIFOSLpGrhXyQXHpuJHQjduBY4Y7Y\nf5OlQDtkQG3KeAt8F6HSJIWSOUHUpIig/1wXFkOBBBiZnptr+7dN5fdUXJh+\nAsYQ\r\n=AD+Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-92179d-kaf5xm7d_1589968085154_0.05165284150428695","host":"s3://npm-registry-packages"}},"1.0.0-feature-0aa06a-kaf6dm46":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-0aa06a-kaf6dm46","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-0aa06a-kaf6dm46","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"fa0db8788a41fbba18280f5d1de8b07544664d94","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-0aa06a-kaf6dm46.tgz","fileCount":309,"integrity":"sha512-CUhQ3fEvfx4enrKl45ujcELm4/2EB9aFhGmcj/Ef9hoVakCL3YmB3M0rLjXEjOieYuOfR03j6shxGn150FH4DA==","signatures":[{"sig":"MEUCIQCGjbcYDkZLFNwEQYpQKHFFlSSFBjvPKgiMEE8nNGaqYwIgaeViYmDEO9f2jWQ1ZhnFKTLEJgfyUob6P2X/LqfGaWQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1474220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexP/MCRA9TVsSAnZWagAAjsIP/2VtiPGXYS5zqjddlWzA\nvE6q14gPePAqnO9TmgdeCdJQ5W60AEYPjByjHccaASj3Uq9wLMZRzctghdlt\nMCsD2ghsveziQBk5T9Ot0EvBH4scTweFudIeKE5vSt6M1vl89TJtIn5Mc9Hj\n6xiTqiG9Fs1PM5HU0RsWVDUwnyFDHRm0Q0h+KtB5XorvoFsWg9TcixqcyOqG\n7gOgpyL3vt0VHCfSIL8J8aPwwtCnlJEgD0kUQp77gpYJvgp92UiwJr9qapPh\nFN7st/gsZMKf/U8hTARkJjHs7CDEmkepeACMOXpkx9y16T6AX4OwUU9jyEqQ\nBpPhpJDkzo81yrC5TJ1XjkRG4TBDo/bOf7luWx+3CDJqqEncnxx1jCAYkn6d\nca+i4EymxUva9F7qjnke1rC4xg8aOTeepm8ZP/pUUH4u3ZpqJakGYqS/lGYi\nUvGBQ2gZfJbCa6b2Z/EJJa/QMyPO5z2UBvtAxboeRkNVJfx7nxCEDWVgaduG\nRNns711uRoE+htSJfz+cZKAi82VWbAY2ARj0tl4FiXdPVB9SpVU+ZsWEMFSr\nYDthZuXIzTe2XQJ+5IFhfechlu4J8ktpPXRmg8dPJORPXnoRV3GVntt/tAig\nrrIZ2JuFFFHYO75BgxkOOXJrPSW7fOlVO8Rtkvdl4az84LQOb2cokI5ecdQk\nW2X+\r\n=cb8X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-0aa06a-kaf6dm46_1589968843526_0.8099320451988987","host":"s3://npm-registry-packages"}},"1.0.0-feature-c62987-kaf6f781":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-c62987-kaf6f781","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-c62987-kaf6f781","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"65ff262b5aca28bb3e7f530a4d2a2fd97f5fafbd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-c62987-kaf6f781.tgz","fileCount":309,"integrity":"sha512-Ru2ex/bTZLKhHoxRG7uhHBk1uaJVyfT2fCqDO7wjwFBwdgPI0hNiKXQplxBv9m4TCxpLogaAnt1jMP/eQpRDmA==","signatures":[{"sig":"MEUCIQDpDQCMLuPJpUCJdBrWKuR7Y++QNFBxELP0ah0Yo0RbsQIgYF16dg0fXbF8a0YkagpbHSX+IndIbh0pRjncr/CzuB8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1474220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexQASCRA9TVsSAnZWagAAsh4P/izc/3koMBlYyADs6emd\n8PINRV53lCI0esi4tTo9jmSYLeEfJxDF+mC4xgNulEIVP3w9bX36GVU/9Gq7\nj3Uco1B8JGbcUw8kkZaBR2c7WedQt0B5B4naOXCTwO6MaO+jEnwvIpVcT9my\nBPRAidyTpQp8St3VSkAv2lf1hKrkm06u6sfbd4inwZae2rGCHZQbefDS+wJ1\n9PXtx0j1q03atypDhqSBCQws5QFvcFhAgZ9tZyGpSbhj+WYs7IJuBvMbcU2e\nHrUpkbjO7ATru7w0w6vP9cUAAUOgWanRDtB9H+QeT38YthgHtuadGpYxfmpC\nRkHzZExdQOXV+k2XDsRPqi1UeDzTO5/9HrblbnAvkvSYTwcziy3yAyuMPKkS\nw0AN2zFm7kuMDr+R6AcPmPYQ49R9seyPOjOhhGbMdH8FcEbuFLi0J02a9at8\n3rhLt1/iWXnPcN1YkH+ToyIfEV7VnjN5lIdnU+qdNIwr5naR317Yxfmrx8lB\nLIQUyjbWIqBooulOw0l8oRNDdi9Txq5W4hW+U47JrRf7pV6ZyTlwzL5zCb7L\nRS3W9pO9e480AbKw25slt8s//HkDPl9MasnJNRmuz93tZipolWCrUuSB+utd\n5Am/XRxdnq5YjWps1XwEItHvSuxl/egKRyeJDAAO7LB+LOos4hmVri9ujA1l\ntnt5\r\n=xLR2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-c62987-kaf6f781_1589968914120_0.19348786306403354","host":"s3://npm-registry-packages"}},"1.0.0-feature-8c4222-kafaxk6e":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-8c4222-kafaxk6e","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-8c4222-kafaxk6e","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"e84b19ef1e23f71a53da652581b4f2ca651a98cc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-8c4222-kafaxk6e.tgz","fileCount":309,"integrity":"sha512-IJpOBjN4ZPLR0x3yAr9fjmDkyU+BmokYTiAP1EZFSwPXHYHvf9Ms8BNhO71o2gwQV+VFmm1zryzqMkm21UhYSQ==","signatures":[{"sig":"MEUCIQCaG7ktjJT01Zt56l3KcgdqfgoN9pujhOv28qlDKQ5HUAIgOrM2VUMdDOdnaULD5VB8eEoku9P0UF2QRXIICPbcQ0w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1471673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexR2jCRA9TVsSAnZWagAA9KcP/jzqMByj4hTOrSL5EHKj\nMozWB3X70bPxbxdAlFv0s54v4uOS3Zmfb/H+lZQ/qPEllecPitw0wbXreKlk\nuibJ7EdFRdQW/qtWyAgov615j9AbWZbl/4+8BlLl5wZlKUw5y26M/Ucls5Fz\ndh3AYYWCHAqtQb5mbSJrOL3jDNLn9Gqz3YawRd8TMkpjDWsbnKTqeAqLOzJb\nQAXaNZSfcamnwN8QIIZOGfyS5VrAPGTfSRQHaIvnUc0qIujXyYBBAL5lpsh6\nH9HU1CXVmACb+zrTP0MpxoKiIZEXT4g/W6dcc/3hwHuhXi90j1D2NUl8V8U/\nQwcZH8RAZ2wvbRHjBLtvSOqpVp0ZZgoH/tsxJWAZ3xm4QV5SSXFJnt+S4yJ1\nxrW/u52YkkJ3gYjZdZRZ56ZaRIm0AQvUQ/8D6jQ9BeBKSy7XPLWbui1oROlx\n9WN+GWzFiGuCikwkdLSKI+dsa8Yqc0HmwD5YlzpNMVP83fL9olq+8E2GLGJP\nrPwiDloVJzJRdPCOfQb26QXF2AEHz9vo7dPfZ52py457N+Vy1yFs8Rf/4+U3\n3ExQjwnMHZKlJHsILryz7aQHRcNJMx1AKOKj8QHTX3r/wXcuBe5096G8z1h9\nzVy8/4VgxmGuw6cKdOzFf8RvTlftGSljEZMCISZfjz3icSCKA18+irDoj2Zh\nmcxg\r\n=uR/b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-8c4222-kafaxk6e_1589976482863_0.44247619066868515","host":"s3://npm-registry-packages"}},"1.0.0-feature-7c130b-kafd35z6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-7c130b-kafd35z6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-7c130b-kafd35z6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"070ecf9d155bfb98ef32a5d736d3026f1def6ec7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-7c130b-kafd35z6.tgz","fileCount":309,"integrity":"sha512-AT3DMRW9wsO1JTgmO6GxUATD/GFSYxzfTKtZjwBShrX8Q49sdV/0LPvESimS+Na1iHXe+4AdiIUZkZ7al6U5gw==","signatures":[{"sig":"MEYCIQDBb0ezUo0PJfuwM2V61WJj4KcgietzbunUovS0QMWlQwIhAOnwfIPilNDfBsAot9Sazk46EwesSXehR6XmAP2EnA0r","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1472580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexSvJCRA9TVsSAnZWagAA5SoP/1ld2c8VY5xNhmu+Ptr+\nRKaONcctYzHTcxurrgdUDWrXujF9uppRRgGHJe4k95Ow6qdMcw2LZbq7DXdp\na+E8UVDW+FGYiLMpaFLntnpkg+IuhW0wZCi0dnVcsVlbh8gwi9jPKeH+uE5i\nHrb1USVxzjkofzhQXyd+HudF54gRbeRIxrCx65Ko8GuTA3OGL1/2WFccN9/8\nY7efIpCQiJlv2lluXVat+w9tfo88ZoHS7z3roB5ZQTeACgqwsQA3eUmRfeLd\nDI/qjq62P+rov/tGJeZx7cJI2xKGIcIKPRg0+nlYBKAEbU4wWmcjyRiOKgdw\nwXzhNR828RsBg9WLylQ76rnkHrXES7S8Vi1IWzIw+RSLCAzWw0dnmeDvZz00\nDofGzUhB0sHuLUNYzYFy2ytPSFV23na/KnXZ4m/Qsw7VD8bDiol3ag3+vkSE\nxquhjY6iPPtnxQVtjC2F72hVwItHSoxR7P8523YhJXXEukf0IvWM3RtHJSnI\nQSaa6AbyRCqLspvd9V8EVWO4w8irWy6U9wSji4kBTcNdj46QsEQGryK2/gMU\nn8zTj9EaYIv8vouxwlzsHXTc4kzhKKG7g2Tq7MZzjxh41QcGLNNt3sUg3nup\naITQxLXhb5DyO4m8sSg3vusnzaOmVNAEyDahH7d57R/BNEbtR0+oPrrc2+Ui\nwUbO\r\n=0+Uv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-7c130b-kafd35z6_1589980104454_0.20755662240292927","host":"s3://npm-registry-packages"}},"1.0.0-feature-bbe6ea-kam4a7n3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-bbe6ea-kam4a7n3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-bbe6ea-kam4a7n3","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"434fd048a92a2c5ca2113005f4e314c8c0dbf71a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-bbe6ea-kam4a7n3.tgz","fileCount":309,"integrity":"sha512-6Q4QKsGacsjkvhIgOi9wFPYAykxrH0L6DjtRXhqKGjN5eSDUGOBuXMbxjWJ0w19e27OyC2UlXKK/SFfB2p5YYg==","signatures":[{"sig":"MEQCIDTNs4FhRkXSejDmaGnDc/3kQEeLwrH/Q6SFLUeXBxtzAiBfB/HVnW54wps4l5OSW2FBTjOCpYgKGuIi/xMJFdys/A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1472678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey2dnCRA9TVsSAnZWagAAtYAP/Rv9D1QDY1g3nLdD6Irl\n/7fAnR3GVV3NmoYXz4E0atD4NRcPVmug5jlrhXYP0X/rsuf13Uu6KYu/ok4M\n0/MFfrkX5FxySvtgGvUPrUPJLNS7SXWdKtaQjIemyi5rTlZb9v/V9yynlXl2\n+Rs6xAYnPCDTG5NQISUkmEV0vJctDqPMrxvN1AgbslOqqpfonKbanmC8Q9iv\ngkAj/krjvHYbXptXmlrsR5d/l0O8t0G5gLcweSGjEzQpp0JnG/sjmXY40VLj\nASsgVHQPU3U675ytQ2d+RaehALhzTbW9R6FY3ElyKJOlMUCaIW+0Ec0ZMHc4\ntIfiUm7X3CVDrgafKpp0fcnjY/0BRpuBZfKr9dChCK8IoBB+QR1MbUDv7UPm\nPeBjQE5NL6PD3BxV4rp9jLyn2hGK4yZGMkI/u9gK+UNoWFXFYkvGb6OBL3NY\nULmq6aHTZBsj8vxecVnepWgs5Et2EQ9HyaSyBa+gy0JomqpsnCjKGjPWGH9z\nKVeaeFyj7AjDqLRq0mbo0k1o6iP8BDUod0yq2R0zOItb9f0CDmCphiFgFWBI\n3Hl4hTQFwWmFWc2izS+7MirlVR3lagvHiQb61D+/aBK6poynjKBpv5TKlhgM\nJzI9OutLnhNFuuYHm3OXqUT+mKnPK3WS3Xxvkd6j4n9xi4lSB52dzGSpqOn+\nmfZ8\r\n=7veN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-bbe6ea-kam4a7n3_1590388582520_0.6655231122336966","host":"s3://npm-registry-packages"}},"1.0.0-feature-f62a89-kam4dw9z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-f62a89-kam4dw9z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-f62a89-kam4dw9z","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"11ecac629befd47d8bc454a7d1cd38855da14351","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-f62a89-kam4dw9z.tgz","fileCount":309,"integrity":"sha512-shpwdfUNmD6xpZXyiYh7sy3uZi5v32VmB34cqA3W11hpT4HjTPYiJs90veu3wR63AbdVERfqh/dwm0GZkEmE1w==","signatures":[{"sig":"MEUCIGD0/u2xW2qKJ1jCaHxmP5k2U5qE21iF1kf2tiNBN5peAiEAv9BvZEG7jzJOHhxcvY3zs1YamPxnyzs0QEI8lXnmkhI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1467652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey2gUCRA9TVsSAnZWagAAmYMQAJ5ZINy4Wgz4WaQ4e9jJ\n5M/LDueFT1fIMxyYhbcC5gr6WkzIPjylpz5hTsDAea6szbJrQ8jIOiz4dKQv\nptrGR8xPdBDDKy5zey/C/aBbBZrCNHQE5lMbJca4wz/tOodJ9M89rola6AEY\nlWCRQrxls8+zO1r9TAij5FJbF9oWTTK1IK/4PkGtAA2+EL83rEVCXBNE7VYF\n/Psg7peqGrnVNDZl4UhbJ//mKTKZOKr03OPvEmZvOcN3vc5iwKUCpLr+dW+9\nbowxOYhXJo15kdnaqbtii01JW6FOp/3IjneIGwwv1zbh+J7Ln4G1o8CrxCj8\nYN2RqFtZaxvTvV47908H7MaOF6ADycqs3jeD2qV9PoN9Nbg0enIssAOJXQZ8\nTn1fr1VQ5MFsNgPlEx5HZTeiXhphY8lvtHimn5ima9f+4fGfAonhBm88Frsw\nwitmLvSfF39IoG9pktcURK9FlO96hthGEvaiWxyBd0XN8YFAMthd210Yjffg\nvqaEjYLAejW50VdVzjwr5FZc6LpMRPFk6fgcZ90lbO4lNMvnS1bxdFjC6s4m\nnYHaKFR92B7aB6CyMWFxDilpG30rDwWy6BAFWvDAdAjYBjygss9paGYZnrBF\nGPgM7tw15B/AwN1x1Z8wm4HfWTuz9MLdxTWPMdGQs6+oayy7+AAP/mKbSogj\n6EjP\r\n=pOlF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-f62a89-kam4dw9z_1590388756408_0.9893704927945142","host":"s3://npm-registry-packages"}},"1.0.0-feature-55e7e8-kam8mt9l":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-55e7e8-kam8mt9l","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-55e7e8-kam8mt9l","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f536d772135faf77dc1c38bc3ad8f293206eebb0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-55e7e8-kam8mt9l.tgz","fileCount":309,"integrity":"sha512-7iRew84iJ09ktak/vO6EPTsGrX2FxX5Vhbolj9JWcBN7TrpTUUj76AugFZ9Ke+Pr/5f68LdLcF+eaPvFuSBNWg==","signatures":[{"sig":"MEYCIQCLcQROGhppspLpTd9WlpMk87AMPBZ8q6YwAUV39pEUpAIhAILAKJbsFvmL4gLWYpBBUSHtshWaCCc1X1Uaqp3nhMFA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1464949,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey4PvCRA9TVsSAnZWagAAtykP/1ScWwPaxWcNr07f+jxC\nOpsscsI/yyS6B9CZnhGFSIulJHgdpb1hDaYlRsgqKXiGSihfySk2Lzf7qFo2\nQYNjZNsx75ziIvaFvYTcUIE4UI9oYNKyS/DGRY1hAgcaLcsSVI1cLTh0eaUy\nHYMZMc8OCN5Ufb0PhZ4wT8pgRt3D3WBs+CAFYDhDzM0B7+jtNJ71WYMQcMzF\nk9jxSONEPzRGmCezBPxdLrzpa8E+I5r4R+7FL/NgvTaXPx0+8cWP06ggVV2P\nWT6Cohp3jz+1QofjiExlPiAeX3Xp/7nUXO1L8iPqJ0JQqoEdWh+emHg+2jgW\n35w3oPfrbgHiECjowKzeAqKptfS8PudO51FNyAKES97dvqK/PTd0FbUqxLaO\nnsWOpGgaOL5TVTh/3CWyCkCgcA9dybe1L1gmgkA1J3i9ALkLzLH/DJbjorMv\nKCAHMK2u/Qk6TCN7MzMqHJMMfFbitHyn9R45oU7gw7L3OInDjcYmSerHzH5Q\n6FlrprWCiNLkPBq7JVF8xooI7nAYPHOlOsIBgvXbWUmzpqKl9XgMbTFCwlgs\nOdV0yE/Ve5aOqiASTFDRjMsVCoa6/pImmonvCFWqdef9ObCUwEQ3e7TnPMRR\nd1VQC/hTsHHDsdtDj/nfzFASoaDUWShts+4wkrfFO3/LRRnrXJW48DrTJi8J\nZGL1\r\n=0e39\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-55e7e8-kam8mt9l_1590395886548_0.7432741597636559","host":"s3://npm-registry-packages"}},"1.0.0-feature-ae4f62-kam9bi2g":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-ae4f62-kam9bi2g","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-ae4f62-kam9bi2g","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bf9aedb34527045ef11c9f433dcceecdf67c3caa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-ae4f62-kam9bi2g.tgz","fileCount":309,"integrity":"sha512-TluJAfq3mz3HQJCtjAleKHY9dA34BM1dE+KXADK/J3upS8GfU3EjWgSqHpB50vd3TBfVIFIclOmEiQBk+Oskiw==","signatures":[{"sig":"MEYCIQD/vuegqw6lsQOaHmMdxZvz4kBvYYfwo/b9vrDa/RzfWgIhAJ2TkuAUT9Wngr5AsWKAqYfdbS9atl3qOeEkZoGAxbUV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1466795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey4hyCRA9TVsSAnZWagAA+R4P/Rsh4/mBQptoGZQ90lw4\nArJaKQ8PkrC80SJ5PPmTIoEcgvwi+tqNw/Hfp9X43vZczjIJMcaQa0wtGqXr\nTo9CXiFL5Zv4UOduSH9DPUs+lR1gsM6jRu+yUGhmEmy5vuAUj2oW/zLEOOzm\n9Wef+wVLh4Datnhq+HPBUAxKJFJLDQvLPmrFVyypC6y7xiuaDscmYNCu/LtA\nUtsqhqCmgHi8zIZxexwwr0G3EHpUgnmMIKPu7R7cV1PvaeWsrCRohO2MVxN2\nL0ff3A03Rxjoqt3KcEsEFKBZ50jZtVciaBe3kKo6PyiNq9dVD/zvjSnI5KkC\n/74d3a1mxtlySkOg7XCXLE72tn3G272NTmqVKW9/dFJrao6syAyvf9O8c5Si\n7OtgzV2SjRqBRbSid56gMUbMRjjmoyIr5AgfGr+xGMtzvmuYydj4rlcJ+wyj\nt3PGQj2qSqdI9rTi5/7WFAbbVoXopmArT9Qaic/ZL9A9bd4U1V9dzL1x3Aqo\nBQiMxTY9vFDkKRxCKDy4bPzV3LiIayYRTJtGA3BlZEyFN9dusCx90KHWfoCB\nN1vmq6qVoBKOzXGf6BM+s36AGn2EO9A/XpKpdAByVPN5JEtCHRWQJSIePVcj\nxShE4qWdNTUOJvrSvarlQg8T5y964foOlXB4DA8NuRiTLCMRg07aqY1JXP6D\n+IJn\r\n=dS6w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-ae4f62-kam9bi2g_1590397042220_0.9072697313378977","host":"s3://npm-registry-packages"}},"1.0.0-feature-306915-kamaanvs":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-306915-kamaanvs","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-306915-kamaanvs","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d55a7d36ebe4127f759661d45ea23aae8435a5d0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-306915-kamaanvs.tgz","fileCount":309,"integrity":"sha512-3QK4DyJLS1ovCThM3GFypLhIVzUlDlUnAX+OPfJUYN6YREVNr+GfYZBtlCnXVnnSRYp1wQ5Fh5dZNKsOnaTLWQ==","signatures":[{"sig":"MEUCIQDcfbvoPoc7MGedwkHCpoNrcsR9Ql3VrHPqIOq7o6GhiQIgSe62dFZTTBYrDxBIoLR1s/ujsjmihOZn9EDyB2caOis=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1465201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey47cCRA9TVsSAnZWagAAcC8P/3sfg6kNDh8DH2LrB8Dl\nRGan85+yZMAc1QhmYYi2wXO0dorw+H4bGvwDdnZTr4tVlY/joy+B/5+GmFLq\n/Q5EaVIuybXdTpQdWvrcAqTmE/XmIOolkyhjaTt6SZ9MySyY0ZniUQpiuQ/c\nAath6WCBpmffsnMXwpOwga4rojrvchGRf3PgxHXsxOp1pifkyBbxf8sHmPe4\n8vasiu4KI55VotbrP+n39YvUK9N/RwNAJEc2JGJMl5bVxVUmD5uxqJ71GqEp\nPSICc6R976OObjcViYBcmMWIFp8tlJUR2nGrdEcVdYz5oUIaHlGpJmCFvwWc\nmdlicMHSu6JUgEpBl52PkJeCyz9gWOILoouuDas32vYR32EdzLYSYy1zWaHv\nB5MCKOvKDnJCHXISRlrLLBFj0Wr2tkrC2yTxwpg5OvczjYcDRlx/HA2mlpqR\nWlygduyPMaVZtgwlQHYsjnZ5oKk9YqvKMgtfmgbjPn9rzX+SKSWC4Wlb9aVw\nkeCDIFn/99zcU/mwywUBNESNz7uewb4kx6oiqFk32VntYP1aTfMLOs4qglwZ\nquySgO9BR1QpThMrStb6r1rBiqOTWP9f3txj4ZilPub9JfngADiAQd2sp/ki\nlwQ77bbkKbbS1N7BkqggAIPzz6gMRw0TEJLA3XgbJhcLtFkJgZPuIp6tF+Pw\nCmbT\r\n=nmqx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-306915-kamaanvs_1590398683980_0.9501228639383186","host":"s3://npm-registry-packages"}},"1.0.0-feature-de37dd-kamae79g":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-de37dd-kamae79g","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-de37dd-kamae79g","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"fd8287be4079dc0b8d3e4992ca2769f4b031eb7b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-de37dd-kamae79g.tgz","fileCount":309,"integrity":"sha512-hpcij4XV8rlbvbghTsZNQGdM+YklJOuuUD4MvuTArX6jdb4xZNXFzo9v+CGctr39WNF8d6x0iwMIABMockMQUg==","signatures":[{"sig":"MEQCIGE11Wm7bXFCNRiMkNk31bpJxeZ6fC3hIqovsMIfCeqXAiAML+FgWlzjk41InKyvPAoTkg5NjwqtCe7AFe0GbNJuVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1464761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey49/CRA9TVsSAnZWagAAs98P/jXHv1Zk8qn1oYMYjzXQ\nDIGNbKqrbGyoQm84ZUH+2DoQQa3kmw2od9LjXeJkX121V3231m30mJ5IOPFS\nST96kd7hGcmCUObexbw2KmRm+WsIe3wuN/4CLGPZFFt8tualM0g8N46Plh90\nmWytJr3daBk0iqlrjrRuB1pdXB7OIcHdY9cjPaJfLVUNXS6hte0CDScMtlbI\n27HXd23d1VQkNBEwOUcdVftr/x5jvbMvgi/VWMYx0aFaEaOgOGyaRG0KakZw\njvrxM+HjC+5ahAJKHBZrEH9xZ+qb5KWwOYL8wlb5Y/ZzvzPmEtIqA8xIUXbS\nwXOTeuXJFrzBtArmrObmd4L0IzqiT0LAfswBQCNiHDUSVU2ezkrqfKk10MHX\nfnARv1mp8nefJ7xWPM9brH+Vg18sXaWti9mJgiiUCrZhuC+JohJU131i6hab\nuZhA6ttq+grUiN5hMwsOrA2tQ7iXV3mJYnaCzAKuS1l84Yyyr3GeNf58Wj5y\n8366xiyjYrb8OqESGGkJC5W1PJI/+25NK8Fq6GA9CyFbMGUh5AbFxAzvHEaY\n5AROE8OK/3JkE8AZVyhHMhURYCxsNCF7ZG8chkuMdwsJe2inJ9o1WuErxmwu\nQelpY0lrbWLyATi9AEevADXHCUlySRQVOqr0Xu//LGEVQgCOaqv2mGNsAIrn\nzjDd\r\n=p+nK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-de37dd-kamae79g_1590398847482_0.8929610865324433","host":"s3://npm-registry-packages"}},"1.0.0-feature-192c81-kambdkjj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-192c81-kambdkjj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-192c81-kambdkjj","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1ee27d130903df47972288653c8cfe52d06d5209","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-192c81-kambdkjj.tgz","fileCount":309,"integrity":"sha512-vLkjl0xa31D1gWzNjIyVbULNQBbReh4Jt6Wa+jhUSz3OaAQgrVkbpHTWidzu0uu1ocEQTr2Ocq+UEobQPEW4nQ==","signatures":[{"sig":"MEYCIQDu8mhgBJvlUnXa1410oJ0lymOdJ3dgmo5/Z/YyR1e2KwIhAKUdnW60ZeKp6NX4yCJxVGYmb4W0wQ2xepSqPFipFzxf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1466109,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey5XyCRA9TVsSAnZWagAAUVwQAIAGdY91Ce9UJVUEHJO8\nQmTAOO5VgCDB1OYeGlU+l0RriIOw5gv8+pJRyhBXdcLqT7WJXoAKYO9SobG9\nMLEy1QUOE9pe5UCVmDo7em0NiRe8o1yjVrXaJ1STzYQLMy8ORX15IymmzJvf\no8eovZZfdV7+O96wjFfwG91GrQfxjkt5M8xCfbvvueHV8AxWM7hKJSV7DJ9A\n/8PWGgILEnoIp5OcUEl0IINltq6vf7ra5bPYtYY1DG4EF+ySyeNY6bL18pGz\nbwBGxGrQBHpJhiRyh6RTXQdrCoMkHLiwZBcCsjD1fsny+tqfDpwl5Mlifdoi\nH3LBXV6TTFggiv3RFjgzHFU9zwkUPaNCZbWq6Xgu/g4J7Jy1Ja75P7Em2y+8\nbi4ELmq4mnLo9OYWFz32DWic3c8lfWiKEqAuIuLOtaRPxVb3fxuRzRyie+gO\n+feWUZLMbQo03rWayso604a8F5cg2IR9yMKaarnaOW7mOtJSiw+H4WqnKy/U\nh2oDXGC+AukmL6tkGYXybEqLUmOfLhO7MII/D2KmTnLwdRQkw3Du+RuWwKIv\n5XrJTA1/kGFPUgTpCJBXTBEyQxCGvchOb4dZnrHysXIzz0hdVu24W+BHXhZf\nyrJxzpIZ+cjM9krwqCYqvyOeU8Vac+GqO5Pb40qval2EA+LJDGXdxL03NM6/\n2vyx\r\n=tePb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-192c81-kambdkjj_1590400497730_0.7678410469201113","host":"s3://npm-registry-packages"}},"1.0.0-feature-38d76f-kamc9h3u":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-38d76f-kamc9h3u","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-38d76f-kamc9h3u","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1aa7fee3247f342353e1ac0105d899a979b847df","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-38d76f-kamc9h3u.tgz","fileCount":309,"integrity":"sha512-V94BmKB3v5Jqmqzy73qe/+WK60C9NredzeOHJ15aV4OwhlxQTxQiI3S5BZVM8drOzsOZ8E6JHN0PklfNPZ4Rsw==","signatures":[{"sig":"MEQCICvoCIEAI/jmSd+y+d+g3nA33ZKzCIj+6Ls8wC2v9sj2AiBPGrAi9koXftO7RUHA9e22G8eEdOxcDFbFKUliIW9i6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1464404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey5vACRA9TVsSAnZWagAA9wYP/iKP2d6zkv9S7UNQCeto\np1D+6hbL3po55ymN0GN6FX97e0J3tCbEJC5UbBkOraewd3d1cFGh9AfYWL2f\nprJB1ufkxhs1vLPqg0zehJb+ixyr15n16ytlFWbDh/6xlNhttznMNPj8inH+\nKc5DW+lhia6Ps9tI2grN57V+PDv4sZq0ViIOtrEp1I2fbZu4QX6T81ZdtTX1\nuum5mJaFRuZffbZu7nYeWoeNkD4fmTMtvPM7UDhf6lOCRQ5XSN+gavfLBTYq\n0JZETGXj93aWsCfsmlYD4toq6u5+Q3W5mmOSU0z/251ogbzEbR+PLrjuO9YN\nKthUZTQjlC9kVwZr2QV7wgEo2VRPUqNKWmpwu6vaMLIAqX1DKy7u1kUMMYuX\ntGdpL+4Sr1TPY1h8gHq3oPOkY9hTdQEnMvOVeOUmIMOsjqTPvW3YzO9KpayL\n1iDsUOuKXUYynEvZ7uskCopKr9q4kLl3tEoQj5/jsynkXUGK/PM/BKVVnPj2\nA+itbzDhGKbB0HSYvPwfoIpHQy79Gr0etnr0XDO2OpP6vQWOWglIzTA5XrzO\nyEpqgTWjWu/3ITbUkoZsGAJOuFBhjL96KQdMJgoGhAB5GozkwummQNSkzXXL\n7u0kLtB3O2EZs5crZpLiOLyuIYj/SDr9XG3jE5jYLDSIi235gsYn3h9Av0lx\nsSwb\r\n=1l2E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-38d76f-kamc9h3u_1590401983766_0.5549057106482864","host":"s3://npm-registry-packages"}},"1.0.0-feature-9aa217-kamdzo6v":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-9aa217-kamdzo6v","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-9aa217-kamdzo6v","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c85d8f6ffe8c7465350a6106eda4fa361f91c507","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-9aa217-kamdzo6v.tgz","fileCount":309,"integrity":"sha512-vmQn2n+yuYIrTflteDyEHvQx0lkoaI1iUN1HjjEtTsn2KetaoTd0HpdHlFV8fdYyUW9BMsY4t91IvGAcsKTCTg==","signatures":[{"sig":"MEUCIQCYlJQ2XMqYPQfkDQG+BLSGXqjc5k53LtD/5F78WKj1GgIgXMlGSYVsGiT6XWHC7Iq/odnaksmLKbeqIPgOTCb1z4c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1464592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey6cVCRA9TVsSAnZWagAAIHQP/ilbNGdSZzPBRZ0RyF7U\nSwE6UDd/Hj3eY6ijPKTIbSOvRpafMx+LvArYrxjALHuh/K1C332ePwg5fGaR\nMeIQQHhKzUXvyb18T4c6luComWtaLikvaA7GnV7jbySUWpCHs4rMssVLZWwl\nK/bwpmQyzls5TyDdDRWdBzKUCuFXZP+oeb56kFpjqo0fux2fIQaxmxIjgCi0\nU4BY5f0EiFI1Z5+BVH+VeQ5AUdd9lsYIfNjslyIKnDVTZIWzib8WnMBJFKEa\ndlDHHM9izxifiiaZ9HyzldsJ64lBhTNf6KWilofe159khydME6+VH+oH9+0i\niWURLq6805OzBFyRKs1F34oHQGz1H5EeM+qyMZkl6jKjdNBX0SRPcXAvCbqt\nkl6vx2tx/oCwt6HCGqYo41Mo54sTR2TUZ/S12QDZWJ6cqO6OQL1PFepcSbD2\nffiOXbzDTVo/ivYDGBSRihyd6xDe9hKid9da5Ji6sZoNZ5lKc2BQPG5fHPTu\n2coA94EsmHpCIypRtqiC1LfIaWc2zHrjnVYV160eAmSkqRkhawsuw9mxOlAl\nzu13NO67gx0Ux14s9xXXhAzNqEdR1GtIdcTFADmmyk9Nn1lvarFEP6Reatok\nFaAWApzwPBVsTiHy/mhXyyut3H0WTs4BL5cKB5OOKWRgN5+Z0brAIajYztcs\nwu2/\r\n=kC/W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-9aa217-kamdzo6v_1590404884672_0.598744984641103","host":"s3://npm-registry-packages"}},"1.0.0-feature-14a080-kamffx5k":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-14a080-kamffx5k","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-14a080-kamffx5k","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"09e3855aba1318e3705eca5c0d00e645cbaef2c9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-14a080-kamffx5k.tgz","fileCount":304,"integrity":"sha512-a4rDiMPr8C9qAEPDTlC22JY94Sid8jVDp2qRgZi/85vCdTtLOsCGuxDEvqtcfBYcnI2kEf/+WgMmwWkU2UFVzw==","signatures":[{"sig":"MEUCIQCAhShToKt7ILhR8o29nbQsG4ryLOQqZCmRZMy/07f4DgIgXa7FStmYUWSm7DxmkSKG07YsMOTOUZE+ivMr8FdKmhc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey7CfCRA9TVsSAnZWagAAvjIP/0zfAebCsCUqtkCUmxcl\nueST+VC0LRBUZGX5Cn3F4I+974bXTLAj3xDZ8Z+695U0XzYRZGQowNWyNu9o\nGTih0TKWaO9hCSaxcC3KWorRGiqh3RA7jDyVX/3TqxDVJmaHKkOKbXM40B4E\nXCwfyfTvMxIjwGxbLxuttE+A3pH5//0d/ISsyjqkEMO6BP+EMkeDP9h4fzJ/\nJnr+m9vw+rz8hnMj7RLn44z0zJXCkDTX5AN9jnSn6ALdT5rhLt+r/03Bgoc3\nB0/3sw+Lb+H9wvWpzKuHWctuL8HBeYoVOs/J3jrXWlcBKONk17ik02t95xyB\nTUPXuVhXRImXlkhieorfBvjwUYH7L8LLV4KHDMq2uWsNKSdy8XQl8bKkIXAC\nbOlCWl4NaqF1YbShv0QhObS1fJ42Mph64YqgclVyxV1/35DPTANPb5fWKH/4\n6NFbDF8kM+YGMqCzjgbOft+N7Ct5e3AK71uL/q4VWJYVSYSe1qA0nf9h1tK4\n39eaE54CrUn82Udx+nWLh28r0Y0wcKAEyAkyHGNf7PNzI2HH0jFDJ5owih4L\nNw3mPFJIXJ8C2LbCZDXkJmj0hFeXaeDThf91eGoZOoK+NrtWR5+VPuOslvY6\n99I5+zyOw7LYNi/DXDl8r7QgYbOCnWbUEQxI2NUz8lM/BpUGnGM2fQ4ANveN\nRT4k\r\n=cdfG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-14a080-kamffx5k_1590407326583_0.8259136053129579","host":"s3://npm-registry-packages"}},"1.0.0-feature-9181d3-kamg9jrt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-9181d3-kamg9jrt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-9181d3-kamg9jrt","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"99e4b7a5e5ae1d794a9c5a115f14c0775f5994c8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-9181d3-kamg9jrt.tgz","fileCount":304,"integrity":"sha512-EaVWnU7jYzfAaRzyqsyScpL+PLqrI9m6TW1hRsiHIaIZ7jJMPTUK98Ubrrm1Y2r+C+1dIIbElnkP6rnJsMMMhw==","signatures":[{"sig":"MEUCIQCSOCk8J7lb3TJ9aan5gWn0MrpzCBfdoWkqbMhQJYKGUwIgY3z4Azrgt0DE6HGeW9/OY09w4H+sBpb9skNYPAtl0rQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey7YACRA9TVsSAnZWagAAJPMP/25InHMIFHhZyC10tkwk\nz/Hvv1V40XdbK5Xrppmr0jPDmHAgh/69XFNX4gDEg9m1YbhLhPxL84lIy/j/\n0Ic/U4Ih5+z2cvvKVy8rkI6ef59h1e6w1q3U/y9oqKXOvGmMMvi5YV5OFoTj\nyxtHLXlSbf8vLb/BkkpwhJR74U08HrTqIzfpJDNa9V1sM77qhdB1mBATmF51\n0ljSEvnmAPLWMjBdPOCbRVMzLmnfXHEMreZIiwM0y68PLKo6ISvcBCJR+IiD\nkoLfT4ptY9kbCFll72GO5dd4OycLCC3K7V1NZg62xe1oRAkSVUQQm8fxbqDF\nUBBanii4SdD2eKi34BGTyQuotEQ+WjoDX3rmyFtgiemaMuG8r2V5kbvKaq8J\nqhL07PEf9i5nffjxOYszquFAEc1Dq8iKE0E0JtUR6fixsuxeV2dE9anqJpmT\npv0RNRAE8gtrE66BTWeJwV33CQ6FlPvqz4PDiJ02satoVhZ22qh0XBnD4zo7\nJwMV4c4bxp2bsKnGHK/f5bkNCW8PUUlWZnstBHCGo3cbWQkQY/uzIe/dOrYi\nJ1GEUlgLIidureopFV81qZLt4Uw7DIgPepFaOEeu6j86xaRS6SMwTKmt088Y\nbVAKI20b3aJ9PWorUJNvkpPlKyjWGc9y1oozYEKX0JuAjqBYlfXUXalXosFW\nOVld\r\n=61y6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-9181d3-kamg9jrt_1590408703653_0.6467325536591595","host":"s3://npm-registry-packages"}},"1.0.0-feature-46d0cb-kamhdg8m":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-46d0cb-kamhdg8m","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-46d0cb-kamhdg8m","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2b761597fc9e0c02300b1376a8aea9c302eef8e1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-46d0cb-kamhdg8m.tgz","fileCount":304,"integrity":"sha512-OQSDYknqRTpJVxdh3EEzHttNChya4q6bOCQcZpVVhcbqth6dqJgy0tx0gbfIMUWy/0Doz2oi5FxNI+ZgdKgPjA==","signatures":[{"sig":"MEYCIQDiWQ30taqZGtVplgkFLqfXxLPpaGt1HOFM71ZKp7HBIQIhAJYd0Vro9VOVfM4GsFHFbdsZHvx7k7c8ErIN77tMHxAH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey71HCRA9TVsSAnZWagAAlNYP/1yoRZ4ctUjehC8UKWzI\n295hD/LNKy1DtMuAodJBLVvcX/ymne2jbedbkQ3gw/A3kGAihQ2rmvLPrS3k\n21lgELsDj8siFgvLkdFoaMFxZmsdvP8Drap09zk38htk7SxKn9PTGqM6lHRN\nso+nFu7VeA3QrzOT/FNg44vtpfTe7ir5cTRpzFUvZX5yQhxDYn+3tq9cXTsI\nGbef1RtFDYrVzP7YbM22B14JJ+D/1DoRpAN9t5v1Hq29WC0ao3QA7T3v/K2G\n4kelpwriEmk9MZjmQ1Mp2Abo0BAuhKZdt3LpV33AzVQmZ/h2+k+miGxxOPaE\niNurjFFl89AO0Je+l4oi0IqQToJMAePSanftaYx9Mjri3LahuqFo/VDQGMQo\ndSLEk96OMGo4fIwGMdJk1w7rQ9PhbcY+ePdAjRO+vyOd2Iy7jbU2t1iNN5AY\nY0wYm14UAEpI3UTvlWyHuxQ9vwG+vsxDpfmmp/U5vZII4dDFKHllDmJzwLTg\n2a7+iVXyIeIrhzhYp1O7wLdmF90UtSQtPQzqDL3vkYpMfLHIKi6ER6Dh4UKo\n1NZ4PtBwEZrIatRgmgy9uONdp9kIDau8N4ug6vCbpbE05cJB07uAiJGxYR1O\nDXwJgnqo1iJ956un6ryw/jMFjl1HWYxCpCx8x8CMcDhZPN3gDFXS6eKQYLlA\nGHRJ\r\n=xJtn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-46d0cb-kamhdg8m_1590410567232_0.6474329100263241","host":"s3://npm-registry-packages"}},"1.0.0-feature-ad2f1b-kamii6nu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-ad2f1b-kamii6nu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-ad2f1b-kamii6nu","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"eecc909f62c5caa4ef991f206d2366afaaa7c5fa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-ad2f1b-kamii6nu.tgz","fileCount":309,"integrity":"sha512-0Uch9dUsyyNSYjirGKE1N4TuKaCQfpBRC12TeBOUy3ykfyGMqPjWhVtmf5Q/RE5DHoRvgF7Mwp0oDxNMWdXvuw==","signatures":[{"sig":"MEYCIQD1iSyd8m2E3Uthh9nZUmUAHqnwDYOAnb9ceD7uTY/cxAIhAJ8pR1F8kAa6menKeymcblhy8+OAY7V5upsR5j8fbpzU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1465610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey8S3CRA9TVsSAnZWagAAx/8P/3Ihn++3vtxspsviHs6F\nC90QYptfGWRuLPRPfdNusXGiOkgYzJspuXvUd5wUnagCYxIPdK/bGLwhtI4Y\nc9LiHN+1gK100/q/VIEwSJgYldES7A+Dk7e7CeK3DPifawGicFWjOPgccPi1\ncPWeb6OfHsMLdhD8iS3sEG0fHVtGImeQFGWeq9OE7bJljJM2Z0tVY7rfT1op\no69mM8z/vScIwe1lCzCHdyMJGt3RkEiF13IQ5fa7coiWOJgRmEWPZYCmr9Xz\nln+5L9M2to1fWnqnKaQou1pB5/WcD48JjJ/mDbsQA2w0xp7wBSJx3op0qL5q\nihLezs+stkB6P9OMoz99ikmkFnoJtK/KM2D/f1ZkP50Ryz+NqIgLEdWE4PFy\n0dPxTx6zr7XWfGsrgOZGm2KW0YTyjT0FnJ4CTuzwo9+zUnbWKXyIEwuUganp\nP6jJfiYzfElwK5L6tO5CRtOZPzQCB0HMe7UYrc3iGb14pUs9GEuHi59N0d4o\nkFcMTgvO+Li9SifPkmjarsGZi34ze6F65V73oD55Ge5YV1MnDDRSlUY91tUi\neMF4ZNdBLcWqeBx+JHEXDts/Rg5VxtqFB9Go5QWwCe+4XugFMBaPx9OVvvI5\ntzDWL9Epf9OZE4GB1zgQGWTvyZC8r35E8Syr4cnRctp0EQlR/RgD2xsH4Ne3\nKpeX\r\n=L5kE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-ad2f1b-kamii6nu_1590412471179_0.543864162294543","host":"s3://npm-registry-packages"}},"1.0.0-feature-251c7f-kammlgsq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-251c7f-kammlgsq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-251c7f-kammlgsq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b8ae0501f098ff20b0762309cc1e516f3b5dcc0d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-251c7f-kammlgsq.tgz","fileCount":304,"integrity":"sha512-Ly8dGg6riO1+xHEGOEogz6gxOfn4RUGC2zpsaBr3BeZ84XEZfeJIBGga/0P5N1MyghYnOCkJhmr9MlzsF9cnrw==","signatures":[{"sig":"MEUCIQCOu+HuAhm92Ij6FnRgtc2ewxU99Q7Fg62XDjp/sUyboAIgObprswabdAZXNcxwC/WPsIgeXKXxG+YhMZyoMVv1JbQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey9+KCRA9TVsSAnZWagAAgWEP/0MyBWp2uJGeUX4XG6Sv\n6Ahy7YAKJTBLC4jrtayKufqAfwffM58BrMKbKkyBjJl3T7pbKUj9cGUQtJBb\nnSf0ihCj2pP/t2PeXbxJ65PjRRkOVNXHGcvpJWkf5x3rIiPazehArYCUQt2r\nkTkbH9mOnovDHThlLn4fMCrRMsLGWuAYOUO7laB4CQtIPjIxBezWS3KCTsIU\nuNu2WERtm7bJS0ni0WOug2xFFCy0SJdy7QwuJ19LPkeKuYRD21FZ/j99gojV\n0q8zQUYjkM1JiB5r7lmyFkQ/L57ofCbxZCKwouwZuX2YMvkCVzzE20wih57m\njYWZps22bnG9/a1O0a7Be8z0ehmQsqzgcRP3oYqHl8L4GHv+V+JLsrYviACY\nO6pIOy0Vs1A4nk+zIu5uPVW2MORkFg6VeBl5ZnXe/qXkKCCLg/M+xWBUffmT\n/U9iDjUWVXBJWXMw7aBXlHxeU2uENcr58/mVPD5+rGiqdPLzfteFm7dX9qSE\nDEL1yjqDUoogKfHTNNiejHaG19VGMx0y2Ztklwd0YdoNhqUqmCa7AYQPzNdU\nOkLEg4qn08yWCaInquJDNpDNoS0JsIVQqqrg1ewbjE0+S82neW4jJmf6X3K5\nxAXhqIS8ADP4kBxxR9KQFqR4+p9xMEMcVJfhPhiAbJX4QNyb4tGrzx+/8Qdr\n7g8P\r\n=us3L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-251c7f-kammlgsq_1590419338352_0.5863995680447198","host":"s3://npm-registry-packages"}},"1.0.0-alpha.34":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.34","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.34","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"07cd22d2f5ebddf6cf96ab87a5f2339d3c804230","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.34.tgz","fileCount":304,"integrity":"sha512-+Bo3b6ptZVpu7qpQKBOGlFcypVji6wajEI+cLkeH9r+VuOKDBG8ieuoWJGZAC5J+UVPH0a+HFrLjj3kc3MA86A==","signatures":[{"sig":"MEUCIQC/a3xHcu40p8hn+QIQs9JSto6NSpz2Z3X3kFAki7CoOAIgUNiyf7N2LLksO6lwgTDYxu0uKmbDj0Dx+2GMqdjuuN0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey+B9CRA9TVsSAnZWagAA9zUP/jXbSSYHeupc6Z2itYWB\n1q3D5o7fiO2dlmDstBRLzZ3A5u8dw7Ej8XoAzn5y6qxf7xWCwjM8CloSHWus\nBx2D5FwK7fWr+RFu5TUwYosHECCh89FLYIiRKUCKjkMwoN2ZN9V2UfoLQkjs\ntA1hyK49xYmIFOMMCul3rJFzseiO9HAyh6mDRaNpxIPuQlwUjD2ZVI3tfvst\nhs8mEuuqEDG/SZyECa5rY2CG8Lz0HiLpg1gH87/V7jqjWMGTN2ORJNly/ycS\noh2rh6fo6uEjjMZXsPWSUN3JzaZjRm6+pkCLzdDwl8Z05ClIVGPmIDDNeJhq\nL9IKh+qAzfrGJqg816qrty7EepJGkPQ59n0OWIG4/zvOZgPxarZMEPusLogu\nqn2h+wHAGFNNKkwfechsBwMBk3030q3b1hOBfk5Uvl1q86vTdpNkXG2/pveT\nytHrqHOB52Jb/w+6CjL3jJm7GspEgdJJhvXCbXezjOvgENlI8LX+SaqhdgIz\n6CLruHdKIRYsLP0fYVDheLTzmSmL0jaKxgHwq76oWbzS6r1KkrQvRGlFC9Rj\ntywXS7hGenmfRjNnyvMCYw7VSPNheDoAxDoPwtybLvOPB5y6hDG1HyppANrp\nepUELJUACwTupR4qmN4dv1vlCxiElkrLBHIRdau7Cwe00Y9Bp6ztqTNPDw92\nouMg\r\n=ZKuL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.34_1590419581445_0.07625470332777873","host":"s3://npm-registry-packages"}},"1.0.0-alpha.35":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.35","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.35","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"73af16b5745042c3fa38dc52a833c941693de4b7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.35.tgz","fileCount":304,"integrity":"sha512-Pcrg0JW2tKJKcp0u/V3Y093meX83k+/+Z3klx+L/gxuRxNMSoAUHIn/TsOVQnDb7EmA/KmJSk7+vuq+qs6YAdA==","signatures":[{"sig":"MEQCIGCeUPS9Xo9Mg9qTHhtcx4v+UTtHj4pJ27Z51xN0aoOpAiBLmYNA54o+jJnp6o5BirepAA5mBFRe9NysVN3tLfWYSQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezNURCRA9TVsSAnZWagAADUoP/0H+KsCYY4qrOGqsbBAD\nBOkonh+k3BCc4SdvGwjCc3TQEWxLZbAH03fFWx0DXs67RrTwuADIsIKkhF/L\nl5ewtVfo6z4oNZ2Tmlw/SYTMxEWczYD0moe0eexdz1tgB7xhZceVCvnbgE+f\nJ7paWiClxVkzsLDMSahkXujpqVX/Adyfgvu2IXW3kGtAhUEhIrLUCLWVvb5h\n+IlwgXBp3ULEqNlrzM+ZePjEXvuWwjNCHiUPWwLTKeSoF2SIWKSxGYLZ7IkV\ne7XOWsTwF03VYST/lY8OL1UL4HYNYvwWHDV/YX/u9pzpF3dkX78py6LK7YT7\nN6py2qhhnKOwR7o787QwMAODUM1I6wV/MgP2ysrAyTagwCIGeXKKPvNvSva9\niEfuKqThCjck5q56lFxOhKMvXr0sypmfPxPsjRNs4997DHqjg26cCGvhSx7f\nTEqo6N6X7ypicLu948sjpLhQTHrvrFzI8fjdm/5x62iZc90Ub93nEZqpQ4xP\nvQCRxwQLKn7/niui/vrkgIWZZumynd7sbAnQtVJ+s3z2m4nPWYbCm5VvZmck\nTNj17hc3goznpQJPQSRAjbvXv+8iCp0QWOfgqG2NTcvXCa+/ElxI2Ieo7qBf\n5A1BBcpPS6pMI0rIoCPQqQEJpvtRvsetEhkVlE2czbzPPxMNJy8kn2aXkoy1\nFNP4\r\n=QBD1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.35_1590482192507_0.6101378616485302","host":"s3://npm-registry-packages"}},"1.0.0-feature-b70ead-kanuegaz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-b70ead-kanuegaz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-b70ead-kanuegaz","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"48f21ff4cf298db09b5616a454e953139a0aa0a5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-b70ead-kanuegaz.tgz","fileCount":309,"integrity":"sha512-FNAWcpDUFfjDpu85RoARXAminwiXGZDAIMwYKQ1LY9TTo8h8sPngL2Ok7ybswPt1b3SHDNGvka/LgFKxJ8pKKA==","signatures":[{"sig":"MEYCIQDb8S7/Ek14lvzyJI6scn1dKY+LIzNhEniyn+S2tqxylgIhAOXQThk2y1r+9Ad7+VNzgAbLoGNHrETbOTqtJw95BBi6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1478785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezP77CRA9TVsSAnZWagAAhp0QAIksJp7rdwHv9Jmj/ADL\nbK1I2X2cVxaddEX3PCEc4OByrMIdoOiDvMa/BBnj2UaFQInXn2M/YMCNK2xD\nJKoJpjtw2gRNeCnxS37Hjau9IG0oB87wBUkZxwHmlhZ2k6uDbczwFoB9glg+\nMsqeyW9+4UFmyMUY2a6CGy0w7xWxm9CuufBcdOsefvxBiz0eRZBoH258qBjG\nDy+mw/VMjOFV0ERe/uwI3eJTVYWbKlAsseVon77LTAxhwPf7DhLN7IRlnbxw\nw1XXmHR11pVXClxdHIiHjWb4W0NTzlLAbiD9FyFXp+vvG1LJ7iUPK/I2QEJp\nJ1pfbJEV+mM6Q90uErkIzucunY3nI5eqoBNEzNg4HOPPeFED30SybPUjxKJW\necQQY/EX2jPZM5ugIyrlVUGZT78Gk4Wo3ZO5IoZUs7WtwShuol7bUQpz7f2D\n352ySLlb/FBJdVk/bDzJKl1EGMxLbWiWj9TOMKxHDGYjL2C09BntALE3Z8rG\novEUhxa9aPUm98tYzPCmuUrjv67KADVM4QQiJ5etBRO2yG4PeMn1ZUiZdkmT\nvf1vxDiKlbklkSeYSwS/8sOMzCQUkDC/jmNMAVAsZlYbd3ihwctmrL6r0xZu\nlWb7f4OhiVNMFcGe/k8WZtG47z4uToDFobpRKgmPvGuf84qL1qKis0IvXfCP\n3Mj1\r\n=ZdY7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-b70ead-kanuegaz_1590492923319_0.9913070791424594","host":"s3://npm-registry-packages"}},"1.0.0-feature-2f512e-kanwni09":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-2f512e-kanwni09","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-2f512e-kanwni09","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ae41de5ff1f1bcafe5706bb6de2d4501b9cc501f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-2f512e-kanwni09.tgz","fileCount":309,"integrity":"sha512-DK479T6DhWbweyJymUcEDLVp35CoV7ukf6+PsAGbZOo2c6KbgpYm05honlnvvb3gqXpAruwOU5pjMyyqskZrXg==","signatures":[{"sig":"MEQCIEykOaO1IF4E/BNGEtEmPsopcjTmjYU03S4/Mbvcby8hAiA5Uvp57Kt2Wm+Tbz++ehKcC70wJmQu6NbFZq3ql4gt1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1478437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezQ25CRA9TVsSAnZWagAAOGwQAIPhK7lLLwDfh1pKdb+o\nfT9Dmq6m8+PNzvgKv69lsWYJ5cLxXEOssUznvfQsgufSfu8Vo85ZADJSrkNp\nAtKS/p6S0sDAEwa//Ul3al60Eg5WEs+zdvZ+/alllFmmZICqUH8RaOHnFFoq\nus136lUx8F0CP1geHflPp1NjJoiWZQkzLWe7JYrxwLsWg4FoDvgd3Gwwj00T\ncWAfg7M4oYOODPnzSEdDg+RRibRY2di25OBbVa6D+IJunSW9cJAvBYM2Sxvo\nzbaMNr4BIWDb41HkVqX3C8/3Keo1GaK3JsaL7oVNaBIgYjqoY/QkiB05WvWV\nA9Lsa815xFlUgOjwI/WxodOFEjwnP6NX6TzFbv+y2FSda5ReHn+gojN0elBY\nZKPImicsey7eY+kMGCMMRq3joNhcGmaW+85ivl0lFg/u+mV80lCpSonY9ZRE\noMbgFJo9+a95mt7K1RS+CEVYRU7lhNkKp2LfBtgYmODvDzTFVLgLmsSN6Ro1\n1/pQA8+PHlRpyZpkp1Tgd4G/Lo0+SqKa6AqzwWsTgnBsDCblTMc/+SOLAATO\nyQ4zHwpPU9pkq04zFh9IPAHg+qW/Z8xvBAwCs+ecMwhOAXeuRLSiL3PqEZGe\nw1jR799pIOKm+U9F9it0rodlOXqvCjOhmz4kuPO1/0FfE75CRujUzM/pBTCa\nCatZ\r\n=CgFz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-2f512e-kanwni09_1590496696754_0.6662942985877933","host":"s3://npm-registry-packages"}},"1.0.0-feature-8698ab-kanzy7w1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-8698ab-kanzy7w1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-8698ab-kanzy7w1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f3dd74dd1fa9243e8209875f5a07932809214b17","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-8698ab-kanzy7w1.tgz","fileCount":309,"integrity":"sha512-j4RpopWLoza1lboxY8knXkZsGa8UTzXIyNO70hszfMppBNQD8TfNGS7RNCn1S7RWpAJMxH+98NVrQxQcCpp9jQ==","signatures":[{"sig":"MEUCIQDtPIx7OEPpKZGIG8/F23EipqJNworX6Ti+s5JE/PBxSAIgIeiPJ8rPAY4+aNeLG/2d0H2WMm7aFtDCiwuau9yccjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1478437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezSNdCRA9TVsSAnZWagAAHssP/3KTkeBGoovDiTN5OlZ1\n0ITR/wDZM+WK+Odaq/5vO3jVKkNqFk8jlvo9ZP4zANyJlCXiDQZ56qz2jspF\nnorutXsUZzlK/DNRgEmZFp3cZcC8cYCKl42FImtg2FzK7WWfbJHRbgMPCsLB\nx9/kXXB+YD268G8ZOqJl094EZenHtbyAFc/HkrHU+CiBLkEqa6E0bapznotw\nnQaipqbM1sPnbDL229WWEOYJ6w2mJLymsVAglmGbtj/69a7KQEv03ExF0psU\nwSbt21piCtSyYvu6ijbFKN2Gcq86RxNOxLwYHjYAruoQb3ehBcvKS6k9bBaz\nNpF6BafREbWwy9C2UrMcnr9TG/srmJ/2IkWMNcb08ZsnJNKW4pJ+dDAeaVe4\nHte4FJ0EYURHbkjjPtEDu3z7t8Rsnmfqwjyq6eJLHDqtiPrC1RN0dxb6TYyX\nEox1epOoHAGj8hfGoOMxno8ZcqvIwOoiAxGAUK7xC6UPGEEwpQ+DPJxdRUXi\nwfzGCO0jzc0IpisHpVimMkQmekua07Ap/BW6G4X5S+oDQGGhWRI+s9+sNHnf\nR+S1ZbNtScZkn9FRDlROzWMdTAb5befuI5pwvK18S96gi3i4XrTD9KAcCMYJ\nJ4/UvTwODVxy8ZwHE2ZKhgB+0tkRwX9AyQWPcCuf+5hF753E+KseolUstrP9\nH/fv\r\n=KYld\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-8698ab-kanzy7w1_1590502236218_0.5922797125749744","host":"s3://npm-registry-packages"}},"1.0.0-beta.11":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.11","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.11","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c7f8dcedc680c8902cbe8222d62d3bd5c3b8729d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.11.tgz","fileCount":304,"integrity":"sha512-92dCZOutsjUxma3bN1NyE4Bms6gksJdEmf1nyLeUwk+7X90vGQZja4t/uLOpnWP+EWTph9oiJyCKpasM2pOgwQ==","signatures":[{"sig":"MEQCIBUrM/nn96ncG1ehRRrM1xBps3Ua/UAiZsbUXSMWerEpAiA446263hcz+RePilL7Hh6/jk7ygxmIt8cpAs74QihwLQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezgzlCRA9TVsSAnZWagAAXEwP/i0W43hU8yYT5DIe7T2w\nA3KtxuJY2KkoutQpbYIpk/ubTxXEmV0Qc5D6S6ObgQDWDj7cFWOUGiCLmaAw\naSjmDnZ3eZplG2IKTkpGCOKSApKQUb51MDxttc0KOFuh6UQtK8FUES9QyLEN\nhB9eqWk+fMLU2LuxeOpkbWEt5p/7kAntD4uZ9xbkc2xLZ+1n3g0Y6KZl1P0y\noR+ztUYk2jMIagMQR5kDZPMFXUYNFXSkjsH3wP1076lwKHEFGtohcrnqs1gy\nU2FIY74nL9cgMqeGcjKxxdFFBAeTuxdokFEhhKxnowf+E/bBXm+SvUlQfyBE\nnEcFXZ+j8El/sHuvPi1wubNb4/Xq69Af27qB9AjFsOdyTZL8W5ZNbPhYo+r8\nBEL1O2y2585mYBpRaJJ7NIc+IOQaPaRgiF+O64umqKF78RpUflTZLCk9IVtb\ngqniTC45XDGHnMhM4IP713VBaY+Ij/sYetykxK3ChZVRtDw9+jelUkdjzzSP\nQsOjeIEY718GqylFB2wqTE8vIm2x5x3t+n3Yk21US6bfg4sfZY7WPqzJCsAx\nz4QnlBzFBlzU39v99ZDlM9/g4B8WQfk7cn0qQfnxNKJP6fzvDzlgji9xQ7cK\ns9gPL3Qnzs79D/wyE80sToXGFzDW6I/66iebQgqVcdOIoyr3yz0kzz1CX1Ny\nI9Sf\r\n=sN0x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.11_1590562021313_0.23025033843442166","host":"s3://npm-registry-packages"}},"1.0.0-feature-328af5-kap20tmg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-328af5-kap20tmg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-328af5-kap20tmg","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1ee819b4d2ab9be09809d09a0448fa6296e8d4de","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-328af5-kap20tmg.tgz","fileCount":309,"integrity":"sha512-xDpEyci8qOEWHK1GWUA81815YCS2Eo2aXK3XALFZOSRhw+ozWOacyxtpP9c8srkIGC0VkmsLZ7AIYDexZ3kdcg==","signatures":[{"sig":"MEYCIQCsT/ILXfcqji1AauikAQ/dWJTl0ZpO/sectRq7gHbfBgIhAIx5EvSo8+lQX3Z8gFOX/A5mShOs7U2hojHxqjdsV4Hc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1478437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezh0lCRA9TVsSAnZWagAA/roQAJcIQYHvx/3kqng9zrK0\nO2N/eJD62AGGDp11IkadkPNy3DNi1tINV9tVUDRSZnURXEGK3hYYH3LwaUUX\n7UKCBe/4NiElYha2oa8cUDs0wqSh3jeGCj3Hq/f8FDz2ZAdGjDys6dScJ7k9\ntg6iwaapZsiuzKXOFEHDnm2AhChUFdmJRIjih0Sl3o6WaSKVzqKva6lHT/LG\n53ebbtQtOYKVgDJnlY96FNY1KUYCX+n/grhKEaxG1zGaq2zEyNu/mDwd4R50\nlAbp0kLYLnRKEmvr17kWccHaHlquMeqgkpInYVQ5H1eJLX+Ya8GRCBoSLqGJ\n8TOaslAciAxJVKZb9EP3t9EEbhJsd++DL9UON99c4i4TPDvG8DJcMcTOpUYw\ngfI6kTcJgQPchSE/VNn5AAz98FgG/s5990qMrL0WCoQhYTofIzvp6+FCIVoB\ngPEVOY1b/XkzI5+56TQh8WO5ulmw3Oawg3YqjPtfM+dUnopnSxnwfLDEVxFg\nXJgw+w9+ZP7uGOiLYtsznjuQLO/lW2gzMX/XW215eCkeo75IKX2HH98guFgd\nVg0iFk5f8QC7k1lZZsbOc2I60kYe6nZ2j9vyvM226C30TCxHeqx+dvXDEChE\nhqC2eykrEdVGzIIEZg2SmFxg1x0ujzFKjsJCxYqQhSweuOu77+c3MV6m2qvt\nuLFM\r\n=IvEv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-328af5-kap20tmg_1590566181004_0.7241226545102377","host":"s3://npm-registry-packages"}},"1.0.0-feature-fd3972-kap3rgro":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-fd3972-kap3rgro","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-fd3972-kap3rgro","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"e42305b2fa93dd3247cf87c42aedaf9093bde850","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-fd3972-kap3rgro.tgz","fileCount":309,"integrity":"sha512-Ctbjpxw0MRN3RMMR5gacfnMEvZBjWEzj8oNqMCN/QGqbtqdKPnVTe9DiBI/ckxuudlsjky49tLjSwqnLeFzgVg==","signatures":[{"sig":"MEUCIFVld4EnRIqIqUDJCCeTW3+l29/ejUVHMbqEpfUlopImAiEAwbAZUdHmnI0cXr/y1skNQlyIUYsoMyXnpJO2sNe2b9E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1478437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeziiUCRA9TVsSAnZWagAAu8YP/0SPT3xNHXmGfT0o7hkv\nu8ZfV9k0EB/O2Um+ny9Vekur9XnGxd3r1F9o1sHY9g1fci17Mcrm3Hv6yLgX\nkEHs8Dsd5hmHAuv7G9WODkZmFHQ5iystfG82r/9rQ9P9kYIFfCfJS1nALFFw\nbUdfneIG+1nsfsZPgOPA+wt0frGH84W/JVFDjTjOwGFAz/CJEsYBMVL5IZY+\naMbnkkIyKAfEn92hIEUBT8xxTvlX5BLOnywtXpZZG8TAoyafJ1luSsDQYx22\nV9CxTaAcn0qnL8SaXD/JzIYo661lmOQmAd3lNvRajEtW+4DcYgTN37c+cwru\nnydbOF94BKk4/M8sdEfax1YhujKr9gUHitDrbljKO9YtHeNB6cYK9k8n4qYZ\nbCpgp57jMLzh4Cms+HgXOBOmrXQtUerNsFlIChwwddia2k9mfakPRoW2iKKo\nguPNP4wBcgg7DuXMdhg5iJy+emLakoMAuSAoPgHqmHk3jFOyVhIZPTQTQT8a\n7OqQc0Fp/Jo0IEaKO43qAak2zbuCCYMYI9qx3TcLVsYG5jAyfDycKBfVUKOV\nldNLBZGyJYdBp0xmc5KforgIiCq7tD/LY4lDIyvul3dNUHlUbHPDkII8DDqd\nBT7o/YpZlUKoT7rRGmDFf+bi9p5y0WqOpHqCvGX2pk/1PvIvMC2UKQQfA204\n2KgE\r\n=s7Wb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-fd3972-kap3rgro_1590569108409_0.8907470298747884","host":"s3://npm-registry-packages"}},"1.0.0-feature-e0c187-kaqjra6l":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e0c187-kaqjra6l","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e0c187-kaqjra6l","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1579ee27219454ee1d9b210e31d7de70c0723655","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e0c187-kaqjra6l.tgz","fileCount":304,"integrity":"sha512-nGDux0oYLijWXwuDbAE7bIcWcj8vw5EPeWk2HYofFcs1IsDfpWOKpgrMd+qq7DqP42Wd837EwIacHAKY4Rx2fQ==","signatures":[{"sig":"MEUCIQClz4s7huzdNVaTOky8Qv41EF7M8s1PytVJ7EQPcKlQXwIgCvfpLjMSNtJqGhmtxbVoN1VDg9LMR84MdSdznbaRob0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1437037,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez321CRA9TVsSAnZWagAAyqcQAIQDwnR0Xic83JlXDx9O\n5LWDGgiC3LYj5/yfMM76z4waDWE0lEb3COei1qUy8gG1ROMP+y501pZsYlC6\nzqWIdey4/AuLrqxm81Gh3Yh4px16QpzQTEINoVuWJCLXOEDZJTJynX4wfoPc\nnQBzf9odL4JHUmnTroqz797LoIZMFDdk9deJuUeWRuj57UeceJJraCRWEl+k\nKge2sk/hVSDTOif2fKbD7PqtByUuV6MtzkIRHcQTtlu5uIC+uBb3akLBlgHk\nu82tEDPA0LlZXar2q7iUIvtLVUMoiXBmsCjkOiBxC7iQmVdryzf4j4jVYd01\nJFS6ICFZbxXJVAbfJ8Fz3fwgyLZe5Ropt0VNb+UMBJOXE4horItoXjcvM3lT\n6vTd0bo54LyoOXUW8BxvaT9dxO9Fc9WHGQLIoW2cRD4yXkz+OFg0QyWVQ074\nZe2j1ydbz+rs+ctc0iYHefvdrrlJCHvg33o8GtxHhMcEABsKi9b7jwGi4gf9\nhX3D5/5EMLI/h9kMkCnDYRmtbCoWSgsmj00uPsuurMiYmeQhcc9FbgxU2Yuw\nYPVvlU6fsUSe5Z8lZv3yY1IgmJzGZcqZbIkl0W5EFuPldhWmkgOeoxPWbIzV\nMHo0zwq1a98Abov4XDmoeVgf+kdyui5IaYQ6af5CNlUVxD6Q+GLtmTEF2OUJ\n0aG/\r\n=Cu4n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~merge_process_model_parser_into_process_model","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~merge_process_model_parser_into_process_model"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e0c187-kaqjra6l_1590656437272_0.6717865001431791","host":"s3://npm-registry-packages"}},"1.0.0-feature-d5305f-karw7qew":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d5305f-karw7qew","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d5305f-karw7qew","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2d54db3100228cb46a64860274152d72dccceb26","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d5305f-karw7qew.tgz","fileCount":309,"integrity":"sha512-gr8vvc/cm6lWcqtmroLbeZ7usYjVGwn+UPsFRsR4FS+rqK4Posznsf1y/yhJLYqwnWNQcfYr9NCAq8gur3f24Q==","signatures":[{"sig":"MEUCIEBTX6ZrES8tXu31Wc9tGrdddDH7UyiVWPs+4NzmjZw8AiEAhD/wtDyyBGKp5V7qBv4+zJzqtcd060ursxdvg6lt42o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1487574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0LudCRA9TVsSAnZWagAAeAIQAIqd6ikFXR/v03sYkHzu\nTuVh4ooKqJyPf70p8w1fJzdSo2tKeIwWAt4P1i4kKwJW8hrO2brkvMT5FOAG\nZxxdzTGcdnf/+iCEejkpCuH6Ae/+PqIDTtNL1Aw63Qy1rYN4pDJ6ZtFUJbbh\nBYD21ACwkf2+4pes53eAapSMlLvmnZx76yeQjn3huaqqpiadsqAaQKv0wFuJ\nC+sRRmJ+Vh7noZLmNpzzxc/aDy3lfi3X2oWIxV0EDOUgp3x+rHD+imwZkDw3\n/DxpRilBhS92GkeJEbIAcROZUXL/2WRoarrNj8gQt6Xr31ha1/fbI2fIiPV5\ntTdADzhRi+RVLiyy0ToZN38Bi9ROEmSFVb9hyrjxLNGMGcEPRkWtZIwmj1SV\nbSnQ25CSlKdxpCcgCxaHd+4YYGziu7ByG+nuCbVFSfi8g6d3uTwIGhzrHPct\nma+nB4o4hfJjtZihl3WUlNaYCZM1kTYajLSAdexm/kl6KdHTXQcLauJQysXz\ne3i5g9tCA0GLy9GuySMUWJjtS0KJTYTddRQFUsHL1rxjoTxTyWIDCSnD6Xsn\nv/E3rL5w96DZ6voRV1xwJrQk5cKUAfHcZO+HJLQQv3bHnD3uqIZ/P55y//4+\nQbzBs5jVj7I7DAzdwYjxOrJsbM8PzYpahQy4jB+QsfqIpT7VRdGuVX7R0AN0\nDs2t\r\n=KgwF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/process_model_parser":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d5305f-karw7qew_1590737820715_0.21900319383886746","host":"s3://npm-registry-packages"}},"1.0.0-feature-ff064c-karyt2xo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-ff064c-karyt2xo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-ff064c-karyt2xo","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"462f752ac7e38aeceebf72bde00fe4af98c5bc33","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-ff064c-karyt2xo.tgz","fileCount":304,"integrity":"sha512-eEfz2BPe+KkIZah6d/Q1TxKVpu0InsLo40VYcafOv8vGGIs2n6A2/vicz3jVBjLHYyN9rMZqxz8NzbWvuAGyPg==","signatures":[{"sig":"MEYCIQDhvcHRV1HQ0JmqECwVkUB64BTeHJNWVqTCqZVEwDMe/wIhALdVHME0hD/KvrdmsBBox7czgMdLN8Fv8Uykka5f0Aql","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1436958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0MymCRA9TVsSAnZWagAAv7EP/3ujXK1Tt4PdZaD5NvFv\noXIYoEnr6XuRqFoUghKB8eHkCQR0WhAc9BKegmcw4VHjZ36DQHl8DKb1s0PJ\nw18KMfD5AezchMc6KyOgn90bBAyYpnozK1Vz6nQ7XPn8z6TRtFoaG0qEWQto\nq8EBI5XgHzMR3tCQwXdOF+hYNkSdLRKgnOPONQONY/DaA+N7RwL1E2jwQTu8\n/5o43WVG2oYEsT/J92ZPOtZElHBLO7V9LEnF0jK8WuMxH/ngElxz11Z9w5bd\nu/AH76Ym/ztScTrqAuPxd5+Y0B8UB3+FQi3Qv3ZjrRB6jW1tbHUZrsPgkPj3\nJCpHp8FRasV/78+2lmO2DevHAkiZ9/Km60sKli4JixR8z7N2dlxH3ZbbUIBL\nF/Sri6WyOj443yyUQ06elR7Kx/e9iaojk7IPhFQrD05ZHyu13q3UBiGb1RXX\nA3qoQ3O9C2IidcbMu6iJ6IEmtXlK6AKWLYE4S629S4zHB8G0+7gQhZaBdg7K\nzQMayhQys4T+VTOnkR2zBY07n2Ii/0soD35rkWjWwhFquPpTCXJ30oOd2Iwc\nxdXDokn0Zziq2XBdcngha31tWGMEPX3PRfJEJXj8d3tT0EPbI6EIs/wvfhnN\nwM0odHLS0OnD/fD2ouw8vxbg5SbKO/VNVyAt+M4QpgceKLwHMXsIKa6fO/5W\nXB6L\r\n=nPdS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.0.4-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-ff064c-karyt2xo_1590742181999_0.6339648622738296","host":"s3://npm-registry-packages"}},"1.0.0-alpha.36":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.36","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.36","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"94e97f6ccd60cc995438ad9d2b83f6c262d8f7f0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.36.tgz","fileCount":304,"integrity":"sha512-UMj6EDRUYOjRXWk9jKekw55CL6vtZcOm8pi+9hG7zjaVUHswz3ymzvj0FkNZxk5Rf9KyrudQhg2fx1cR6bu0jg==","signatures":[{"sig":"MEUCIGhwknOAGLZOYLs4yNbwF7Ij59i9jF6u+oDnAgmkH+sDAiEA1rAM4M/AqaVd3MVHjxpLnXmb75uRz8hB7ysdCxkKCWo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1436943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0M2MCRA9TVsSAnZWagAAmMIP/2jio8DVe7d0GWQm8yVX\nK3hcYi/ibalt6xdsvG+HHHYSJJngnOsXrDcQ7faHgqDZJuIFEbzkukokA3Bv\n4CVttSJqgpdjoqPTsJKIYyYX+NSRkZHunaSdWJKV3xzPZbkW4jo6PYyWs3Ty\nSNiDw+3OpA/GNr1qoFPy9cBSga9+oTs0quogcGoJuuT29aseDBVbjS/qHUNq\nSDBiiD8jAWnd8GrX28YKpKZuxSK0Pmg35XzrTpXCT+JUM8ToL5d+gOxCXrGk\nLI4A53W/SzcDyvhsFty3W1CGj90gAYyPY4qeiL/ig30K4HtlnJJordnj/C3c\nPy2C1Y2WD1iM4Mz29/UqraKpu3OT0fzZyi7KBwPU15IKjdfhd+tF4FvIHRhW\nCzkxkD8CIpaqDBdoRd9Hl58iXWLqfQ89GO9Nx+Jbwl4Px87MC68zHxlbU3+W\ny8cBqYgGAYRaYBiZihBU9/0daf/lwdUArQmQclBkcKuCf0atf7UcgjZ0Iir2\nidrWNq+C5eVZ35WTDHgUfmVrd0BoXb57OgvRnohxXFkADDlZug7RP+R2FZpK\n7KVb3smlWwXF+/HSnEdERN1Nvy4clWbuc7tX/ICephncJBF/R2tUIMu1n6aL\nX3qPTtnqJ9mQr+3MTMQvx1GrfRI97lhYohPPLSH0Te5tCq1kmXm0gHu8aVfB\nZ0Qy\r\n=Vnll\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.0.4-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.36_1590742411939_0.13987611804772615","host":"s3://npm-registry-packages"}},"1.0.0-alpha.37":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.37","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.37","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cfcfa40ce56c8bd0bb5dd001e09c0b9bf152788e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.37.tgz","fileCount":304,"integrity":"sha512-NxIkqchD6ww7MpCncsH+qbOd4GsbpzlDNus6J/XFbGAodTSmymGnoWu31+jIOYzy9y9/r/ar7aJxkAQRfEUiog==","signatures":[{"sig":"MEQCICy5uyzLBhpywcaBAXQ33yf+MZDIUv5U5jAJkvM4t7ZwAiABoqNC5VzYiuzQcH3QAFNHGA5nkAf+/0sCp11tejJPKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1hCaCRA9TVsSAnZWagAAM8cQAJNBU7e2R6o/mC1Sdfyg\nbbs24XpfpBz2eD5XD7axF08tETdPt9Z63sdmS2WkdppVa0abtJ44EMB0RFKC\nMgyaF3bHnm1zpgc+sO28Be1Iwiv+6G3vkt7ZWleYHtBtuV4D/Y5PUOneCNpZ\n3+FuWCU5YvQD8JzZIUmDO1BzjyZCexVCoE3nO4TScHhF/gY787O/Grmmdi03\nXIappjhQwa5XprziBHBmjk1F5vAk3jG05L9LQrDPbKwu+5vY0TwxdJQpGJrD\n0GGr7+J9uix1PKdPqlo1WyAMmPnZL6XqjZSA5eJQsjibSCHLSBjFpo5curGH\nTN8dgWYnz7h5fGtfBmKx7DSukS6g9Bev8ydLSCyPW451ZbM4U72sP9MOAfJm\nMZXVp4gHkPTXhePEFcEBfAducM5kh45CwZMQIBQNFd1s0eSXG8s+FjBBqjmP\ng97ruQ8MUsxIHJt44aFqPLGVWWb0ziH1H3BKRhYfQ33b9VbT+IjMYPtH/hLw\nBNLdOdHooRLm5OaYRHQy36/kZrxvsWDZ6n7mfJI5NizZzqz1r2lR8hRnXbzL\nTdlvpxIVjTu76ae2YieVaZj6+dhJOBxCk7I/k2vMgeWmfaBOiK9uTAS+YM4t\n0rSLDhs0sfeFNfxiCWckBK3eRxasclV51rEULpge+5dLIsNbwczPMHZFTvRo\nTn02\r\n=60wU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.0.4-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.37_1591087258172_0.7915964818486727","host":"s3://npm-registry-packages"}},"1.0.0-feature-924632-kaxxghgu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-924632-kaxxghgu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-924632-kaxxghgu","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5eaf68978330210b0e22e120e7a58263253f8ba9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-924632-kaxxghgu.tgz","fileCount":309,"integrity":"sha512-3PIFMrnMMKmiO7qs7IzUMqYySspNfBDFlvinbvmm9h2m33P0nizX40l2uV2oE5t0sES8q1WW5qjqv1gL/C0PMw==","signatures":[{"sig":"MEUCIQD1b4JBSfaNgszb7PL2u0LSk8IYlNFFrasFLmUPjmw3qwIgGa7NiP41zg1JVuvLQ3hujGqsLCwZlE0NWgWullZgpRU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1487388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1kz3CRA9TVsSAnZWagAAsJEP/imQlV40CCdk5cJMyneO\nTHSQ1mlfHMxLU/zo3frNT7uJUjHOsXw6RDUYJmbwn0HUg/uR3qbyStUabYZl\nxi80YqRxBr0i8yXPGWX5y5TlipMKjemzqCMk5MG2iaXp4yada3X1MMppNSS8\nIu1ADraBfLKSnOA/stRUel3mYrV1TDr4FsbMCfeFcwYXfRg9Q0aRZnWHiT/d\nPMsQQ3cllaTDg8c+B5DB4nPUIG013v79VbG1iorDlr2eARjDspRKsW31va8+\nhpb31+pRMnPca69cjopT1CLlacFtaAr60wHlrWd9o19t2psfio2Fvy+Pvw20\n6I3rre6QIgpngqKXfLrplPKm4LfK11vSwMiRV7O+TWqgJPewRxa9KvSHof9b\nNfpysYixzhp48sai22KFmKuzLqi2oAU23/xlz1vOVPRsxIzCFcA+CKjYk/q4\ngMDKLGswCarjyWrn/vLxqnVPS0ZJWQVhSjDofU+hzE4i/sjz5LXI/XKTx670\n/+Q3MBWhGnqFDhZ864N3UPkdcuQbBPPRyOGXDLisagwCWLzzaDYu6HW5uG2z\n3T29aabWPkxNM8dXKUhpfTN5yUi3q+vZAxYrEFbvSmZVvpT1hDkHbGf5IFZo\n6PuWDtCPw7Eld4UUaMG0YFWucl3n+yFB4rlsQDUBaLh52QvV2EBphyXJwz51\nk5wG\r\n=sHUC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-924632-kaxxghgu_1591102711137_0.698211443722059","host":"s3://npm-registry-packages"}},"1.0.0-feature-7c3c5d-kaxxk81q":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-7c3c5d-kaxxk81q","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-7c3c5d-kaxxk81q","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c5bbb0f089a4810f70aeffee16543981a04d3430","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-7c3c5d-kaxxk81q.tgz","fileCount":309,"integrity":"sha512-YZH4c4rk6diigmFxhIUs1Di81eIeu3i40h+XLQxYDdg0A+wASt/jYSoOTXDvsVcJ4Cdj+yrJgppWAY/cosgj4Q==","signatures":[{"sig":"MEUCICBuPUP0Qk5euXQCfhvmUdJS3/A//pgx1dUdZpGzBMwUAiEAg8mAHGnWuOG1cc0aSntC/cbkXipRm0azlntO/J4gOSk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1487388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1k2nCRA9TVsSAnZWagAA0KMQAJw36iizn0A/A5Xe3VyY\nHjzxW7Jv6biSnAG7X2qOESqCXh5zRe8nbXiS7n3cE5JsvNBeNW8Kh57TZRjj\nFYKlzIKoX39LjvfI8+uj66jDdas6lIOSoGas5iwVFCfhCjgnKImgUhBD4Rc6\nbKmOBb3JwNH4Tok2/WwomDJa2aJ+gSklpspScexV9mAAgsDoPw/1MIndYJDd\nGu2qquNwxe/Qu1xzs9PPykdTs8K4u1aQHEKCxmAqu7HOp+Cnb7tGdJuvnwc6\nGlaE0adtN9g2Puu4olom/Oeu632RlSfNoBaRCthBMSYRTs6vmR4B/MmjwB+J\nTvsFkeXvL9kT2Dl8o1UCnIrkXP54VCHpGYCc4X1z9WCZf12VlXMBEgHBhqSW\nRCGi9E1H4//xYfqrXGMcxIFAQr4IDtBJQk9Sc9T5TskFJNc/9r0rLxd5bo0x\n5Z0Adt0n+4gHSRTkkEVZEGjuAtZmniwgUjj9Lf4jNQb3gElMCsC1IrJWrUqb\n5C1ntMdkeAyKenQzr4Fz5yw1JAq7pUIRL7njOY9gKJ3SrUAIuifgN4I8u00u\nNkdyRG/sNAC8tTCZbD6BJP96MqNbgL8TF3AM3AH3TR2JYUBxWfX9HXJbCl38\nM2nOhk4V+acLg1BXvJYc0k0Ouw1mGkkq4okQJOJOQ9xAfNqxlpkxBPY2sWkV\ntjx8\r\n=cYBi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-7c3c5d-kaxxk81q_1591102886694_0.08873005821147206","host":"s3://npm-registry-packages"}},"1.0.0-feature-e9761b-kaxxzigv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e9761b-kaxxzigv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e9761b-kaxxzigv","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d22ef6d500256f48c3aa7fd6661be03a07cd462c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e9761b-kaxxzigv.tgz","fileCount":309,"integrity":"sha512-c+22XAAZcmaH+vWFbijwa1jGsm31BYC6h6XVK900qfICHK6ACuMtNepc6MLMetPriAtY1fB8G0LbPhFCizFIKA==","signatures":[{"sig":"MEUCIQCfO5Fpx1c9OL/4JGhVvDJhhc/5fwHpU2FLceRfhpR62AIgVKAe3gSCAWhHy2mtrPZtmj+Xd4EffEdxKQnR59/nLhQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1485311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1lBwCRA9TVsSAnZWagAAbSYP/iJmMF7J2UMPtfvJO+YG\ncfdYgFWhk91rsHhPjsGsosQIf9WmfvakfqnIviLIlOZnyy7Z0DM7QESOTrgu\ngSYgQ1bxKd9uDJBEEHG05jl/9krAUPiW2p0V/Jq3WdCC9FDvL/DgxnT70iyX\nBq3R2cCfa0BAZM2fbEOJsA7pX/2BmJwbNiIrQkjJanNogFa0cWEkFryPMa5f\nV5lU0YePB1ozmBZPykEmahXRIhG640KasqHgANtojA3ZIZM9dEX9x2OVwsAo\nF6+obricfuuXJMmCOffu4l+G5wkbpBWyLRhIbM8YtmTdsoRzccNHkjPLGd7C\njhClFgcKGkYBEiQrwKreGihPMk2ZqyoKFcPdmK57Sqt/aaH+sKIxkTg1iJ55\n+NkHShf52798a/mrEG2izJrUr08YT4Yu8UxSl7ZgjgUsYn1tGLyFnJwAv+Xq\nrw+/O/ARXxxpkhIVlXahTmuvLg9F37ziFZaFDHtSJw83xhyW6aPbi3dDDDfw\ng2rcWd4vgzeuxwKfHpw/uo/YRh5MlHaBw7DyzS7RMAauSjOroYCUUJfES0yh\nAIhqOLP7OM8if0qGkLoP7pC2Ozes3q9ZI2654P+FnGtT4WQtyVibV78RL0wz\nOpw1BKt8AdhHN1xuk80Pk94R6yOCKUPJTWABf44KLLzv8PRCKdzr6JPBz7Rm\nUq1v\r\n=N4gO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.2","cron-parser":"2.13.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.0","mocha":"7.1.2","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.8.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e9761b-kaxxzigv_1591103599860_0.31765776444185545","host":"s3://npm-registry-packages"}},"1.0.0-feature-83d68a-kaxyc82w":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-83d68a-kaxyc82w","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-83d68a-kaxyc82w","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"47e90187998a4e35c4958dafe9d5369be4b8e701","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-83d68a-kaxyc82w.tgz","fileCount":309,"integrity":"sha512-JxpVaQXI1JrUkUeyD3q9b5CzptylcbkcezJWzvIQgYBIyOcP7rf1/L9kanq/9hPVDnxThEOR5y0H71rOuAvCsQ==","signatures":[{"sig":"MEUCIQDx3XvSlbxLbQIvHAwkKlCCihsj8VSTFFOGW7/0PwLgSQIgONkIMew7E2HVPZ9ixPu+U+Df3S2DvSn3JB73wrIwv7c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1548481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1lLBCRA9TVsSAnZWagAAui4P/22QioZ0ZOVIL27WEuQl\nSyQJoTkoQyZ0k+toSCduL6U7N9LD0xfrRFb4vCIOvfsNKLkjxhPmhRc9+W5P\nT7f/dZ3jKYROP9KQYZjSjY5ElVDqjIf7UTOBck8px0vuA6wVNWAzWcVwv9VL\n9NyH4xI54oX1WlTiu+IMQ6z+UxyOwYiNwWP5KNuxq/2GM+yjimd1o67y/uFj\ntlWz2u0VJ5EUM0Hb9atuqRgrwW76UkG2DJ7PdFML2lzWUP/q4kZY2MrLsVup\nauRcJU0ywndgzYVxS8fQ/wpPqohM38I3/dSUh5E6ZnFrrIPifE7UDg+LoC6b\nvkr9HMQCXo7fSvIkRUVPZTh6KI7ga1PoAr6G9kispAfvcVCIOfGw3AcPBbPv\nplpQ2jto7S3iokEj7AJe2uqaPsk++zCA0hqTCjBWQ/I5Y+lCFP6110dnFyvk\n9D6bPlzDwlRkg0HFyMT1+1VdVo1M53Eld0N4SGaVNcosIRL51Zf/C3yTIvrI\nIIUEC90Dbf+MYdo5q34JIgsEdUcl9IKy1d/OyWklcz3J+LzFjWvDboFy/UoW\nxKJBmjRP/vXX9SkZL/GvoOf2HMnt8/+INrmk2LjeKKzoc2+4r0waAqNDV0qs\n1Mk2/VSTYEh0VAw+TOkGQ9mUvMG41JUnMcIyQpNm7TE//Vh7MfaekUV6Zl3S\nZE67\r\n=n0hx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-83d68a-kaxyc82w_1591104193278_0.9543091754157933","host":"s3://npm-registry-packages"}},"1.0.0-alpha.38":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.38","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.38","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c998a891cf6b8171fe3d77fa948a2560e0ce502f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.38.tgz","fileCount":304,"integrity":"sha512-X2M9NjmkgVvUXh8bX3L3suvxuIqSsVCe078/jKG0gor204IUnHD+/5Ixr9xLnQV35JrXOJxFsDEEde51Egsmbg==","signatures":[{"sig":"MEYCIQDTwhWlaQOqQVe5ZjJW8dpysUezyL+od0iBfEQTd5bMOAIhANa4w2NGrEtqwKRBrKcelJPAgGK5PGE2KmGa5wY9kzp8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1lXHCRA9TVsSAnZWagAAMfMP/3hQ0QWKqaqvkSowNXWI\nDe/q2c2mWtqycDd7lHnD5xOi1DH5n4pGXy4dmXZMemV1l8Ufi/eusP3Ee+IF\ni+GjlL1IcVXB7cwVPKoyKahhk9AMPFNmVyOY8DHim25Qy0y8GxepvzQVW+XP\n+6NXpoXeyJtzj3yqUzLOJb5Ivg46QxficOf3MyKCmDx3EEWXUFlJgpiJgTNl\ntfjkl24datNSU8ItfonA16UtpQPpKWYEG5zbzX/ZgHekr22eqq5ldwTObF8R\nOCpOxSqwOQYntrI+O4+6Rk0IRTlL0GbN3GkH8XJYI0paaTqLu4bqeLDaEPlx\nzEB/MGC9wMNm4JnV47fhcSIHjpGNv1ECyEem3NfTEzWWZ+whvU6sBpRWdcj1\nMjhKOhpb3hXW3xEfgbcXQdE1yWRjtVCxigOpR0GESYtREVITOiE6QfGnQmT6\nPU2wqrJaxasPweVxstBeKU8MwWpeqNxemLXLfRGjNEi9NxG8TAEDHaf+1w3a\nBB7NW+gbZllcX8ipfWexmq4D+Gmqm5CRjy/l8QnTnJ7PeSsCnzZkLK6FD0OZ\nrXr0mxNx3+eNmFFkhJhOMWJ1T377S/A5lMmQA1O3h7kB/AF8Ck2J3SrNO2Mq\nVn0/mYLUasyyug+HXJNZMBO2aJYmBDnkn7UlG4URNEXlUGij8UgGMqjkaIlA\n7Dcn\r\n=XSlF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.38_1591104966467_0.9829588626845758","host":"s3://npm-registry-packages"}},"1.0.0-alpha.39":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.39","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.39","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"891529703dc7eb573fc962ce54d0a18e65577793","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.39.tgz","fileCount":304,"integrity":"sha512-K3PPjeDxLgVa+EYkcTMyIanLToRL5CqkMq8Ji+S7khAXH97MiT+P4BKLfZr1oGHJxrSCB+EySqywBz4toD4J3w==","signatures":[{"sig":"MEYCIQDjn+9BxnZ/wLfFg381XOCSfWAeI9ywraz8l/LBfU37YgIhAJkS0Bmh/3pZT/Yr/buozo51OPmuX0L3ldfwWJXIUQIV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1nndCRA9TVsSAnZWagAA4nUP/07Msb3uKAk8HGtI5PvJ\n21iNs8xLLL+JJHxakLJb8zLbjilWW7Em8SBhG/AFT3xqsr7Ikhh+wWbHYRw8\nQnYaldVDCUeF11F9PKg/iQZE+iRaEo+2uu8fQC3hnIJLYxayyOzTxnix5yXs\n5P8QYlhn2JJqw+/2s5/Dr6xdPFk9vKf2Q3MOoBysYZXgwVsZwFt1c6tX5N7b\noE2LO+oinXTgHc53BMjK3xZlXBPuIAGpAaZI0s8FCeSPTew5QLwZiPcOFoaj\nWkxcV7dxh8v+YJ1GAeEENv0Sv52h4KiFHwQbCALhLqn5jP4pTH6d5Bpga5PP\nixf6EVTZjUovM4HJ0mc/Ggc0h6oXwWWwbfA2em4KGf9Fq7r3lJY6Hl3t6A9T\nnCPbzpO6Ibi5NUdtmc2tSa80UbTDEPCS59EOxh+BmsHAXRmYVuXyb2Ci5HXt\nDPKXAtneolQZSvq1I/wkragy5DVxEdm+1CQeI3PZUHamzs0NUnltz0v9xNK/\nObquphBLwT0NoT/Fr2XWB8eNoNeZ0lMFzbUBcCaWB4IcB2ACeYFUUw6WfKkZ\nuJHIzQaum9kh5Pb2PgJwFkghUNVRgs5VGcKpsRGvGXKF4CHWuoBdcqdKWJdn\nLkwG7EuG+YQPZEzLVbf7/ZjHOJxJMinGQVNaiFZC5k3PYkPKZgjc+o7rCbWH\n3zwO\r\n=krf1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.39_1591114204865_0.4596245477371683","host":"s3://npm-registry-packages"}},"1.0.0-feature-b8e5a7-kaz1xozu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-b8e5a7-kaz1xozu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-b8e5a7-kaz1xozu","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cf613a5f215265bdbc1ec0f7d9b245a69d2a558c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-b8e5a7-kaz1xozu.tgz","fileCount":304,"integrity":"sha512-RnSoanJdTcQiOvc2z6Kl+H0LebyltgZvSwD5dtpDM5L3/DNZAyxlfzc0qHiS9kBuwTZ6mIh3UsW2gqYU3JItOw==","signatures":[{"sig":"MEYCIQDaEvuTcohOOCSSf9KJAXxH5hXqy1gJbqpvjs2cAriGSAIhAP0wEYGoUqpgsL9kaqG3gerJAB2y0W7/Tq0ROHu+GJ9Q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe11aPCRA9TVsSAnZWagAAEYsP/iI3vMH6BPPQ4TELv9YL\nEPQjDHWR2yMvL6mnAjHwyJd4f2XpXMKEAtEMzfeuFB86mBVNhI7sJ2K/aSGI\ng8nDlFZsyuzjw+x8xXOunKwVtq8vxPJrWv5BKErWOyMuTKjoRrjb6e+EQX+K\nQTKAwpSB410J0FZLCiBjKUky7+RrlK+oBBm5fhc4ftL0jZWXgsoG4l3vg80S\n5uMak02PTU2aKkC7PAFMx/Xby+4FfiAFvlrcZUp89k7c64ADxLaeVTGAxkl/\nT1WcNdeLLn0HeC89TXis4H78hiOlmzTFdw9mBPR7z3uzPDW25vDCQap8A0ed\neMvLhm6I7SjxQlyVqkDRlJenpmSNjLrxAX6Q4q2IVrHFvmUqszBANBH14UyK\nZ58xEZckQDxQ1wwe3c4VMlB8/Yr7PnNMSSJVXvtTr8O3RcnHoq5BgvrCNikX\nYPHbH9HB/L0a0oXntNhMAWOO7NNnJFKCdu4W7sShTM+bEAzibw7bupRr6sUi\nGgiwSpq1gH73LhRoYDRHDUpGIbjy+4FAemnIdFC73Zvv1CEO0pmkeJGS6gDj\nrocIGXAcIPcnS6oAWDT0Kx8A1XJJyDiCH3b2qA/Scl6leTuk+7R/z/OI0but\n4QVF4s7ir2noSRNI8z5Kr1CjAutsSqG3H1tXRXaBBfXWe57fOlhV4x64ndvx\nG8OI\r\n=IExt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_itimer-facade"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-b8e5a7-kaz1xozu_1591170702484_0.8492356342639416","host":"s3://npm-registry-packages"}},"1.0.0-beta.12":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.12","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.12","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0bb0a2aa5e930add79e0290c2b087ce15fadd347","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.12.tgz","fileCount":304,"integrity":"sha512-Gpjo3JFTpbMw1DyeLWo7xqKsU256QjuadrxcWZoJQkypCwVJ+Ssnd+rrw1ElHajOl0XQACk2xxOo10Ea+uykRw==","signatures":[{"sig":"MEYCIQC56a+bgqHM+nFvJZdlzFd73puIa8oCC+ZZpLtkbTLzoQIhAOdBUvZMKLHBU4yqCE5Y0p1pcj+bSI7Pdl0OCnhlefGz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe12GLCRA9TVsSAnZWagAAh00P/1biMuIdDXCqQstKpieB\nsnld3IPgMGZGEY8Gi8m3+k2Z+PJN0ZD77/cbSWOekgnnicU4unWYCJF76SAv\nzuHj1Zm3KjY658j6rVJBRfOhFPe3/jxRf08NFLVGtIJi+lbdAfCb8Kf3Iok3\ntKgiQaivrSB+z92NXbV+LdaLTQX1bXWD7g2CXbHA8as2RnR4ERDDzYhpKsXC\nA7jB2UCMz7mPrT+EOhFop0dJISPmKXviqOjpEOl0XEbP6q4/QPFdt9ETvtNb\nNCATVmeoZy8XVzGiAnpZ6PypBH2Txn2QDmlmK+jm75iBbit/4my5APRTJK1b\nGeZLGW9ZJ1Lbv2q+5zEjDbdcyL0CnU7Qb9F65RrWEhIltJkgAPRTZlIdbfGj\nsmgn091G4E60u9fmt+BB+Oh4OOtEd5QR6pm9eF9hAzfuPXqRyWUQVbYceNI+\nxrZduGSGo9S+b1pz2VEJQonZHr+jT/uFcaXBUCHODMHdakS9KuNBYbzes85G\nmmOG6gYJrKMdO5VFM4zXGwDqf3XmV9OsGNFla5dST1LgvZ12ODIk4lzcYqvH\nOe3NcfLu7GDozdXPlmZg1Ql1kyE0cBjThGbQsqyfC3YvIZ1wrBzbi75U5t3w\nqU0c4o2RT2aHQJsww2N8Tqz9GkRMH/W7782dD+K/witnrweMuHLCZmTFoqkG\nX+G1\r\n=Pt2c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.12_1591173514656_0.08281018052848066","host":"s3://npm-registry-packages"}},"1.0.0-alpha.40":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.40","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.40","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4db2863355a61a44a2b139d001d950509f2ae3f0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.40.tgz","fileCount":304,"integrity":"sha512-YrTQoKYaU3eiH4C029v5+vwgBJh6gJ2sDRqL75VqDNzpITaafDVRuOD16aKmJJeIqJLJXI4+vSjrmBxKz8nJTQ==","signatures":[{"sig":"MEUCICc1vk8gUxy9wEzw6a2r3LED5XBqsmfw9LE+iROVm/H7AiEAtQ3chKqDKGqiYWe4G6F3Vdrdk8MWv3r3KGN93A6yaDs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498229,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe12JtCRA9TVsSAnZWagAAJj4P+QA6Scmk2HEJzLCqW/4y\nbvRgAUrROiQMhTTikiQEiQugD0yaRdTtqrfz/qjAMQP85kh2KtymzrEj9tsz\nwcuQIb44v3ycW5a8YYRzYLoRc42b9iiMEsK9uRFyhbCsbyDpGxKeR1ayp4dl\ndcvt/F5tRp/bx55xTERPgDXm9Yq8g0prGO7793cSPB6lykhs7UsB53nnQYlP\n/gFM/MMriNgyxG/LM4vVZGTzFZp7fzUOKIuRsHPKnoxersJnkzJUJ5hxnTt2\nzmFuvQ1LicKQDM86AR+3ID3bvdRTZTVBUtTh9M0bZl0kd2fN1xN7L7cmw/lQ\nH5u0G7ofPwWLQJCgys6MjHsIu/Oxo3AqvidlFYVc7tFPx5EE1XsiopPWTK/U\nBT13WSWqCfwn47Qgvaihojuy/LZevCYQeAU4MTWlU1/DLubgKt5hrnS0Z9B1\nZSXhEnjHpqLrHISoX5aARPCB1cgZY4d9bIPrF425XYMf8v0AImgjfb+8mTaE\ngf9Ip3bHQ6baxRt03wMFclZVuiFcHPp2xK7kEUsr9BfbiANTpXBIY7KbogNo\nnE4ikQrTHu0UtGsZgOOMrVL3xMP6nwi0ArEB1d954v2dyB4uqbhgTKEcNghd\ntSh1620y6baoBwqf7E7c6iIEfWu1xOnXb40F/2HbQpTjSPKhr4ACtZSsKW/V\nL7YB\r\n=tVhJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.40_1591173740854_0.453149842747151","host":"s3://npm-registry-packages"}},"1.0.0-feature-29c70e-kaz67ssl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-29c70e-kaz67ssl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-29c70e-kaz67ssl","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4c2449855ef68257487a48ea7188f760acdd173e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-29c70e-kaz67ssl.tgz","fileCount":309,"integrity":"sha512-YTbqI7rbEZa6gmyBOWNvNVOztWtY14iewKVtaP8Fb81+PTTYfYNAW5Bw+AOiMxEIaOoYMcYOu3/eSM/1SEiDDw==","signatures":[{"sig":"MEQCIBeiyZ1jG4gu4aSmugei9p29JxaHsnde+QyKyEOU+DTLAiBruV2xgl02hKroeNG/2JQjlTKMIRGiLag/efEvD9mPOQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1548071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe13KiCRA9TVsSAnZWagAA7WgP/it3FEKNGOekVUlzjFSt\nE3zjvawj3rQWufnlLkhecBw+5UKJpaBbgyAO01JFhLr92SicfLQSsQqtyaKb\nxdX2AT1zbLtgNBGnhu28bR7/zJ0rCqlM70H6RpyZMTeBKcBuOnimOfOV/PQj\nQq7kgZUJe/vkvAclH4UyZ0c3pJ0pLCgeRTkVVMKXF+j23Xjr0GdTyezOIl1F\nKxzw2m8mcJIXQFn29ndnRNP9eUftWVjz+6ldCVxn2sNwk5JL63nRbQxm9HAA\nxNzJBRzCifObHyOp46QlY65vBhgc3wx1KLchtVGKMigRDYF7gPunnWPAkQUj\nWMiX9hnCW9HjA/a0mYb+eSuL+5HcW/80+x7da9o8wLg34zeTzUqbvoBsv153\nOIa96EPTfccPAQIxy63RDb/xFclppXWsydkjscVg7Y5TiRlPyjqKvxlSo4/E\nJVgJtsivlWD/guHomzs1Sg6YJ7pibM8uU3XglGFMp/8m+uegcIvqoMdPXp1E\naF+kxJUyFVZrA6cTKQdLMZ0dvYGK2uSZVvJacATgj9OUmZS8/u9bhLg4RYYv\nR8puRxj2HrCIzIhY/y613IrZ23FUOe2ntURPzXpdcLPlJu5hT3UNLqknyFMA\nYkZP2K6ogewYr86n5NItKfKvsoQM4w8Tq23m9fvO06YbFYsby49qPjF2x6CY\nJ0nQ\r\n=UqH9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-29c70e-kaz67ssl_1591177890194_0.2550375296316161","host":"s3://npm-registry-packages"}},"1.0.0-feature-24afdf-kaz6r3re":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-24afdf-kaz6r3re","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-24afdf-kaz6r3re","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ff4a3d8c10b4196b7f7bb21952003964df40479e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-24afdf-kaz6r3re.tgz","fileCount":309,"integrity":"sha512-jQtp6gYRVohHxbeB/frJ8XWjszhR23oXLQUonjZxFvdDvr2NsLRt30gVLXRGVnZY2h/BDILkHXaL0LZlNElI6A==","signatures":[{"sig":"MEYCIQD4WamK1I/VAopxFQvt+i17rlKvY9QXPsf7pvKCwXplfwIhAJtPImMW+Pnc1TL6zkTM9hiOP5pgHjdf8WEcT+QnkV4X","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe13YlCRA9TVsSAnZWagAA+L4P/ihoMg7gT9/CJOteeOo6\nkeFzpoid3xS8dfc2Chku8O+K1D4pcYHyGl7RT43UT5LPNuc49KsjJhrRfxtn\nRL1bMD+hrN/OUHAJus/nFrRlmVNQP5nzpqQ5/RtKwAkFOuC9UUv60H/whcSD\nohinhT8Or2m0/fMDRPBWj1oDPnhWWXkq1EBb5DToUThquSTvf6jt81DN7Pin\nNDytR1ZY4k8LXgJkzZ2sZpVI5CB2nR7+ZKz33lKvSv29bkC/sI8x/ZcAJuZJ\neUCgBuROTD3PvneAMzFvIFnXg8ybd+/r6lBE/5kiCeO42oLKKojmevBNz37F\nnx+VDFY/HpuPY+zI6xWWJcIWp9Mr/xMQYCscl+eGcdCpye09EmncWWrCc6xI\niHSQUKMs0aWwg1yinclU7Yw9pVtwHqv3dpndNg8fIBXU2hRrxl1FRejzxzMR\nubE2UG8tehi5m730zrs5u9yIf1tbXDyBcwwOVYN2Sw0k/QF9iwHnSEDBZTGH\nIaLEX+6a3DPMNYtfertRfMGYSMAs9nlGizfVjB17BOza8hu/SwgwJSI4/ggx\nm1HanLgUjm26cT8+8rTclhxfy9fKwItlRRzURjsp8IJiZLtPIMbzjtk4fX1Q\n28qaSGc6fAsHFOm7Iw8XdpOt97kD2CYk5886AKMGDT8feMXZKS0SoKgJh4O0\nvdVl\r\n=WLIc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-24afdf-kaz6r3re_1591178789221_0.10780314462565888","host":"s3://npm-registry-packages"}},"1.0.0-feature-4d06a2-kaz7hi4p":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-4d06a2-kaz7hi4p","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-4d06a2-kaz7hi4p","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4586bba5a5c873a03ddc91e40066d8344c5cb03c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-4d06a2-kaz7hi4p.tgz","fileCount":309,"integrity":"sha512-asrYr7nYUHwlfYB5NVpG+ndh2XHzUailvf5uElDTu5gn5IQdcz8tbZUuPor1/ZLj/DNr4sAtnvGQ2CEuFfOxUw==","signatures":[{"sig":"MEUCIH4Er83CymlVjOzOpfXcbAFKGrsC7QHAPUwy5oQ1bWuKAiEAt1LQQzb84oXyCmo8u2jycWRFnpyKcYzP5hb6j4U/lXM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe13r4CRA9TVsSAnZWagAAmhwP/35Hq+5qsRgG0lteqrXZ\ncqu8x8MC14weQTkaBUYkB/bJbyRAtjPCie9mpJXGcIO4rrzj7bHlvIoVlNoS\nVRApAkFWRxJ7ZCg0K0RyqFfg6l4NirWCbeQtoFbPnW5w++0sBkZzYFqr5Wjw\nb7PTDvDnkVDlnITZW1of7VZ6TZpGICISOkFA1xes3iLmZzqNkEl4LNmUa/tg\nk2vSygc3fQxNPTMYmkXoMPlwxy7oLraX690oLW8CcOvTmofSXF4nJsgsQ9yX\ngLLPy6WQEs5ghZkdZcnqcIX9zrD9JLgICBMIbXDQAxVCCdFQAHNpUByGOvaD\nQLe61QaOHXYmI81nulZHKPeX5z/VZSUUmt2ZzP3h2p1pd6jXPleE15lsip2A\niawHiGJQI+YMNu0HeacxQ2sjRgQVmFN7OjoddIzlva1T3jTcXOtUj1w1niyJ\nTd2LATNH+juF6MKIx9JbBB1yXVnw3F7F7aOPZsDd6+eSifzITYBXi6gRp5xd\nqJOiHVwh+zEA52Wm9vIsxt/0CaHhQt7WEZN9R080ZJ/vl2nq3M1M7lPONMLX\nKovdain714uBpqXI866lxqiqqz2UBn4+esFZilYW1a1CfNDc10HERhfJWN9j\nfH7gtYYauFXPavTBcrtw/3sxofPrtIJLmmfAUTi+xUnaFeRQIZcZ4H/Of1gv\necmQ\r\n=7QIE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-4d06a2-kaz7hi4p_1591180024025_0.3426344013704741","host":"s3://npm-registry-packages"}},"1.0.0-feature-50e9dc-kaz8pokc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-50e9dc-kaz8pokc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-50e9dc-kaz8pokc","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"db2d5134d172e92ce1dfd04648677e58bcd7b86f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-50e9dc-kaz8pokc.tgz","fileCount":309,"integrity":"sha512-vUsSYU58iBQFCUksZZyuFeh5DqZay6JDtZzvm9RY+HxlI83WVAGrpB8pi0syK7Mnj0IhQSVD21B636UAkeDtRg==","signatures":[{"sig":"MEYCIQCAbU14lUW0Tk/PcpXGBJnoy3BPFiFajj7Q3LLnsI/uBAIhAKIyxj8p0NjX2lK2IM5KEyuYV5VIvCYhxtsUJnVDALX5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe14MHCRA9TVsSAnZWagAACs8P/1yZjufEHe3JQXGj1Whl\nrpJh3leW3pnRLlHHrt3dwxMF3ur/mZvyk4WP69ykOnbrrwaEHJ35DAz5M3co\nquv4f22mHpz+0/2hwj4iJ7XMYpyG7Tl613hAo5gqnDv8JuRs3MfuW1jm64/J\npmdRRaNnXnehJpVmyyjPveU4IcdC6K1ftaxLe0tj8+C4Khdq85LLMDA95zH+\nqUtRssqfVYKWwLkHCVqvXRkmxCl8ay8MjJPwGtqRy6pxL7JOgiPgH27HEcno\nZCPD8Uf1XANaNcLXHj0tA61xSFuq2m1U+ZbdLzwsc26DeAMndmCoTF/JWz4A\nb3Zfr3FltDyi0tlqw76HiCfN7TYfO6vLwmzdlB4P2NlBu4e1OC8dFhSbTD5n\nFNF6hbVQeOQQ1vivK1GD47diw5EC29ULbda6Y2+MXUqiDeOpdVUvWMev3M6b\n3JJdJiQYaR41a7IoJbiJfd6YukJH5B0kpSv/msGKtvvnGbGeHZZMgpeQ38qQ\n0dMm9MMrjKu10bKUhBHzlkn2EHPV1gp8hXvG6pYc2USS3fJyChTUS6wvBTYi\nYPOBpWOSFOKCsgRFosagsoOyQRtq0JmycgWF/dc9Q15QNjAzdGow+t+48Kbw\nZQF67b6wrSiEDGrfb1unzyZqL9V9XMjkOcmA7g88KUUTmJt63M6RiGXd7Fsd\nXjLA\r\n=H+kx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-50e9dc-kaz8pokc_1591182086572_0.1128272126671026","host":"s3://npm-registry-packages"}},"1.0.0-feature-2b66f2-kazdjrnp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-2b66f2-kazdjrnp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-2b66f2-kazdjrnp","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"aac56a094e99eb3fde279478cb096fd9c0d4cb46","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-2b66f2-kazdjrnp.tgz","fileCount":304,"integrity":"sha512-iS9y1gqrteVb1VRJvXWpMb7xiOR/egeF043w87vcHgJTaeXJYphTZa83Il7AxBMUyX4y64v+mHaLVkJRb8jqYw==","signatures":[{"sig":"MEYCIQDr4deKopc/Ml8Yostt8v0WYQW1UokZBjaQt0CgBXKlVwIhAObrcYvoNAiAEFbRQWXl/7VjPeqOkx4T9muXGxI1lpsX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe16K9CRA9TVsSAnZWagAAJUIQAJ2IoJ3/fcQZsLMiPlIG\n0CvtXZya5yKLKkoqQE4EKJRPegxEhK2XViELLQ7unXbM4nLZY/PxfdIWNpr+\nxV+vZ4xqKHiaQlBYm8pv9QZjCqvPbR8oEsNV6viHpi9gPAIXwE6VBugTXyHl\nIj2coa6o36BrKCq1EZVs2P/LEgnVyzvQJaOJtO3ob7l1nCuVfAhAHg2KKkvu\nVMAiCyA+3KE7H56v7XCnEQtv4vba+HsG3U0KS6VTUCKOa+E5z+G59/TxPh1Q\ng85+6+++EAsgnuYsKTACqimJezxMKtKfG/kV5K6lsikGyeyBSDuJJANa5IHg\notUJJ+tl2H3xd/RUTiAruqZm07Vs1JdO+SmMK3Vv35oKIAwAQLGazB0mTFeT\ns4QjAuSVWSbHJ+Q0WKYStpxS/xHNZUeX/hthEtxq0NO1PG4PIpt/iWnYUutK\nFeYZYIqILi1w6NF/xrNaZypGDjUB5ST5/JWJraZhP4VLE8+WHId8CqqKP3EP\nNQLWforUNQpHWjoPIE5Q0e6X5soxAcTNAGF/op5GnO5YGMy/ucxloRqvVe7S\noQiEktlPlrdkTFmIWxtUfLdugKjalH6C8M8jMCYJ8hILYoaa7HgF7AsQhCSu\n9yASlSJU/HQ/CapBbNq76xmQCs53FOv+BfKE1o2Rtu+jxINlgG8d+vKiRD75\nPN3L\r\n=qY26\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-2b66f2-kazdjrnp_1591190205454_0.7443668394862866","host":"s3://npm-registry-packages"}},"1.0.0-feature-51c3bb-kazdxtz4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-51c3bb-kazdxtz4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-51c3bb-kazdxtz4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d354b1545fd32318b4572569971881b6ff2f5db8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-51c3bb-kazdxtz4.tgz","fileCount":304,"integrity":"sha512-qdDgoFN0JUZ99r1tnwFIbNLMlHqnPhd58C7AXy2xrF2vP4b++rr5HbrZ5NSzawQKyPH5x64QraC8QZW+6WQR/Q==","signatures":[{"sig":"MEUCIQDxqjvRFU2UUZBadP0vKXiMwZ1ehaCVk/uylvIRxxSp+AIgdd71D5IPFa3FaZ6EPt4l/2XsngtMIpyRf3F7IYXPAt8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe16VOCRA9TVsSAnZWagAAGbEP/23Qbdq0SqH9YtF6MuJ3\nmeCo2MELVwauJavdQhz0R8ZWLCJUdbscO3GCcBHlfXqz1E7kdAfqCOsVxrmI\nGtytmD7T7DX8Zyg7yw9mrGdVroy6iEB8oXbtA+MiK7SCfIYZcidbPkw8wEB0\nSeMx5XQJbyJf8fQbBNNAzPhlWhTh5Xg/UpvTlQ0+7eQv+d9FT4U5hYazSKvL\nqTEn4NcgytoZDUoc/Xw/8kd/iNZ1wKgosVKQ0F1N6euYAPqIttMMe7x3Jpb4\noNaRVMyNNagCDbrY3xqHknLeVqWwUUHExpMxakXeAnik8KgaFPYQz7PFX2xI\npbNTXS6FCeSLgdM68I0CWH1Ag6GM7p0XwsuZJVHrjtpexCB2Hmp7UkELYQ2H\nx9DcKx0RS+li9zJ3w15TO37QPSjD7EzwwbGDcJO30ZLbwtjr0tP/1QsvSnQy\nHpvqZkksapZNHr4WpS0mCH+jpVUwclPwN8viTw1ZasPgw1TfkL2/FcJ7taXd\nTFr3EhuOkXx5SqaS3Ne/mJYegi7x4yJIHoKMA1z0lAf7ba/p/99cVnCp8rug\n243LCri/uDfa1MHEPWV9fwj+pnvOev4nwsRu/NpW1x0tGFtusOD7VxHkZVFh\nviD7fIS0CX7Quteygovt/bm9qKj8agdMtG9uYAtTNClV/+feRv/5KFXmO5GI\nRRMI\r\n=OqYq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-51c3bb-kazdxtz4_1591190861774_0.47582363117927473","host":"s3://npm-registry-packages"}},"1.0.0-alpha.41":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.41","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.41","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d566641dc632b3afee9227e9441f164e3d736317","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.41.tgz","fileCount":304,"integrity":"sha512-LA171WYKX4c3WohRAhDWX7wBNX0x9+G2CXMWbC1cK+Ytn+gpXmYXd0XQmnrN+ac0K8bgClV+zZ8wFluIhDDxoQ==","signatures":[{"sig":"MEYCIQD081woO6ueJzoMrRHzEnuVkCvPrFCPQ8b/Cbxbm6l1oAIhANlAomEYA5BO9TXWbrE6JFPgm2ahgaIG1sIP880vNwti","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe16bsCRA9TVsSAnZWagAA7L0P/RQsGc0bo0k1mUE7Sg07\n5jJLMddyaXUdVAiMn/k3FTfP2Yx0y/5kNmfiyvPr5tvNKyjF94BeIjmDjFdG\nanhbsLovdtGlX9bwQTmoXQ0IS40L6zdfkzQq/pXlxqt3IR30Ng0RzkwtDQP9\nx7ZhH7h4iKEL8Hw3sPdtRkyaTKPxVuCdT1RB58a74H037Qm6Ap+YNtiY1SzO\nk7lHbZQdxdfSjD1oYzcO+4jqGEVhicr0df6DDAoGPllKeVoK1Xoe5tgLhhPU\n7CuCEjFzfAAWd7wciXbrNidE6RqlGTUMmNV9HPkk0EqhTO9enaJoFIhnEcvG\nYuPQNsNAHvGUKNGuIJBeKgqjnt72e+AV8RVKY7xYL6D+TyIj+5axT+qCLEeC\nCJ0VTn7qK9R9QvVczLclpsN+A9EuyKvudGXsbiZu4qYR5NFWuSNcUCh2MCKt\nKeY672jkyP+iKWhLBHfQAehqotXF4E/LdhXdBHLqIr2XCpTs8Of1TGnzL4Bl\nTia2cmcVNCEXVgJUv6838w5z6ob5Ex8uuw7jC3UmWHPYw7V0ZLfbT3JHsGQV\nRvdt9daa098nNHxzY5Jtsl4F3Vo500rAcsIAr+h/yfcA2goPLByKbGEPMFXG\nnAVDhFtr8l5aRO+0Oq8myu0rSpkPdh49UhXH/PoF6/sW6vh6G9R73HqB6X8v\nunmM\r\n=nmNA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.41_1591191275541_0.9342965951741693","host":"s3://npm-registry-packages"}},"1.0.0-feature-955dd4-kb0lgnur":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-955dd4-kb0lgnur","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-955dd4-kb0lgnur","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d475d4055dac4d83543204e2deac0c344d39c503","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-955dd4-kb0lgnur.tgz","fileCount":299,"integrity":"sha512-OhvI6kt2ZPMT7Gm/7EfzyWFuho1jv5+ocxfak8RPPNzwiNtCvm3TiozCHIMzCwmSqfK7RjMHTU6CpWhMzanFMQ==","signatures":[{"sig":"MEQCIAzKAQ82q38dz6kLYNHcolt5mxF7kwG/lCcEZvdXGDJsAiB55cyVwMBw+qsZuV8envCXzvtBbjv0xcvjRjagDyY72A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2MLaCRA9TVsSAnZWagAATLkP/1DwDUaO782BtBHVU6wy\n+UdEsbtlQDDUtScvQs1hGngShKEe/x8RdTn6GYPZMhB/BzxIuSQ9iFIw/W4V\nQ/DYoOPiHKAPz+BKcpzj+gWESvQsXqDd4FfurFh+d4VPpq2RU2wQ/VrD3OKO\nBX89QycywR9TXCa+U2PQg9FxhcEp6swgdVvTJU1XlGSGOI8ole/ictQbiWjZ\ntdO/7r8KV8y5EnfGOgaj8up49tPmI6elCRegxIm7SCcMO87ubryZyO0hDAmg\nGOIWH5zhbnMBEFiRxLITm3LKG5v2wrH4PL9DREGt1FZYJN5O6fhPoZlN7fZG\n3GwzmoIOuS2NEomGssRu51iykKuoIK1mv6Qad2bvggQ31itwkPSfgKcZk9H0\nbV58zHpGtu2A2XONeEYOsMpxtslLhGjnIqT8t0wTzqSc+1CplIwcTPIKGldL\nGQrcelBKz1gcHDDKkwHdOVusxla0wU+i738lBUYHJxbBP3nvAb9IgsFYZDB5\nMS2P+J4l8+m805BIwNcUuY81qU97YfCVEh0VLysrXTjpjXokJqxbt86dGDs9\n7y85Y30SA1okMa8rvS9zeVyGYo3SoHLJE5Ign8YQOwq6WpMD/0UrbTv+0CYq\nXrdWVqSpcu8GHzPD0ub7X9ElOhDEFmf4tCAkS2BrTOJ8dA6UXo31FJnSZNFQ\n95XW\r\n=RdY6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-955dd4-kb0lgnur_1591263961816_0.10975811605684238","host":"s3://npm-registry-packages"}},"1.0.0-feature-785b5c-kb0nv9zl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-785b5c-kb0nv9zl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-785b5c-kb0nv9zl","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"13aeb53fb3d74206613a9be642275f26bf0296f1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-785b5c-kb0nv9zl.tgz","fileCount":299,"integrity":"sha512-mgOSevZhu2gXzTWH+WquEs26TpyxMAmblXxcwlEAPpzePMNLj14tXlYaCBfK2fUHeI/wZsb9G1DAY9Yh3JeOJw==","signatures":[{"sig":"MEQCIGmV0BONZ3E05qBrTaGK3i317Y91E7EjXqI2lh6c2q5hAiAGupzBsOsLoU8QgWQxLgvFOHqG9cgdnufl/P7JFtVzAw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504947,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2NKsCRA9TVsSAnZWagAApckP/je/yI/wJDiyKULIsf93\nz43C4xbeoMqABOa3hWCYEXrd8xCi0apf/4HdFhEhct7iXvwnmHeAJIcwZPQ3\ng19L2jg7ZzYnWwfo4QaObDrNjs9fXfadYMxMpTIT5dBqbGJoUvPY5VLqN5z5\nQ68NRufSY3QXlVo2zf+2jzcLyRm5q3ndg/gTWOAT4GJGenk8bl0PAcWJDMqV\nuHoxt6kXDhhKRkgwzkYkbkSWkwOxPombwPx5TX0DlYg3MZyc6SG0mVA6iVKn\nPs9UyvBInwdWCy/0GjNbbIhX3oWEE93lAxh3VlxazJ394LhXGur+WYf1pbpi\nxDoqlwDIi23T6EBAtg9SgjTcU1vkym3uqT5lqUQL1ZWUuHQqJYP97lxB6wke\nF9ineiWPzkzPCETQ33Jn88kxJ1mLENbyo3Oo6bqLOI8ZiKWcGnXRyCy08vD1\nFc9xXaWTAj1VRyo1WenCAE37Rqw6YgfQTDQqahise+2Ct9ztXHBYWsVLPU/2\nxTuM06EbJPk2RrvIlvFKCxReqwXVwKKEXSZxBZeBEwFPsAqh3caoDJqbVRA0\npVLJaWLfxnmu9LpaxBksvaB8kVi9wDDyM0EdbP2JSAAAM88R053ND3GzjBWk\ncuBijdFn3OFzrR2lTk70nBymPCtZpoyj4b4YBjzGRQek+/XjR6RLP3mIrQSM\nIacm\r\n=rm7Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-785b5c-kb0nv9zl_1591268012243_0.27561734777523217","host":"s3://npm-registry-packages"}},"1.0.0-feature-b8ca28-kb0t38c6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-b8ca28-kb0t38c6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-b8ca28-kb0t38c6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b73d956a275e4fcfc4f4e1410b9763f89d3d673d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-b8ca28-kb0t38c6.tgz","fileCount":304,"integrity":"sha512-vCU+RE+grx/6W1ls9ydwyRGzxYJPxRJY5VgH4kPYR91Nlnt3D7V6VHjFZ59J0Kb5bgvHuMVOT2JesOkSaGfOBw==","signatures":[{"sig":"MEYCIQCEWPcTIavenL74227JCK7iDlCZtJEr3vKLCwTZurTU4QIhAI2zr/mStJUDx862RsibsUJst4cp4JX1GyN44AC9EEmB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2PTqCRA9TVsSAnZWagAAMNoP/26YT4RsGrJzN/8Jzj8c\n9EsfxhuvW+GoqHZok7O5g+ShoErKdH2S1Kj29Etx7ULXKtBgoBu8sazCPbuA\nMHyFMN6v2x8r0/1v79mtoawCmYazAlLmhqq6buyTta4gWnd7K0464+CRE1Kx\nsRtfHZg4y/quPHs9SewlnD+xfy+f5hu4zBCpjYrk/Eg/OuMjcUyrKA/VSoFZ\nCuaKEpZoikaHeAdH83jIjLOe9cay1UTbCQV27xrAQE0v+JVzYcIPyDjRUSPd\n1ZO83OzqAIpegwTg/+HgAjXNDqoB8HxG5u+pK94yeGvMROv6NU3522manodq\nDtxJBwWPyumO+OFc1EgM2SB4MUybN1oglRisjO08J1psueXQAUXeSRhpOY4J\nRHXoS0N9DK2iTnYthuim1Dfy8dAGNGAe9RlNE7igKOzWspw5/EQyUMC/s4rb\nEtKrpJ0oZw6T2+qgOzZOSKvRpkRzZqxkHsOYuPs+MRxXv2mBdSVNBYXzuk0L\nrXVkvp3COtyDTttpBMhXlypb182333GGwoTLpB5xj47biWnRWIZRRJak5QmH\n4WV2t4oyfZA8zW20NdEvHdW5J66Dx1GR1kHiDKuLV0D73X5jq+Fsv04VWGHW\nIPLk1ndKOGilTiwJ9JZvH4eXc7UYGog8fWxKolmDpVO5Xr3wdGgoVwXmf5Za\npouX\r\n=jGlI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~add_claim_list","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-b8ca28-kb0t38c6_1591276777981_0.3546458959532788","host":"s3://npm-registry-packages"}},"1.0.0-feature-eeb34b-kb24zk9t":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-eeb34b-kb24zk9t","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-eeb34b-kb24zk9t","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d1dfbcd421f97f257cd019e8b5713174164c0d89","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-eeb34b-kb24zk9t.tgz","fileCount":304,"integrity":"sha512-DAmZ5OJ9FL/xqeuV89yxJu5BMLnmgoPlS7nzIkqQz6WrbaB62CqUyGaZ9TjVasm/3Iu3Q2IDna2CTasKueWyMA==","signatures":[{"sig":"MEQCIFxP/GYNni3O7r6wJ8VAsV96X0LXOkgrqLIM5F9Qf6s3AiB6i2mGKvaX642ocKNoEBN38GvkXG9ZRkSHAb+KXFZKGA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2i8xCRA9TVsSAnZWagAAgEsP/RzsA1oa2qSvOiYlsdgq\n9iGHWIObrYLdRamocWDvWnt66o8/RnWYSmZMLjNQPcCpy8L9tUf+h57Zr0m6\ns9jUcSiJChWw39kW7hFoArwfM6wxACbVeDZXl6cmsoQQQeNHebcAkdohvLGz\nzgUwi5l07rTuCRshLTEOqDm/X0paZDw224UR4XcGznITE1OIWGieb8/cbX6M\nCJsXAIuf9jtOaRnRQJNa3JZ9Q65SP7Wfad77EAqSe+GlKSc42HhUtEiGLnP+\nDQxrS9jdhFFd4qFC9G97f3upUObyf35vgT4hyeK8pto811OOVi8RMNdbiFTH\nTupMc10I2fe/OFB9dmujKdf2WiMa9zGhFfmMr2ReVwnVByerBn+ujw6qPxjQ\n9hfxUMp8VjDzilTNX03/5Q2C/nwYiqMWkcRZyYJU+f9ob4SRNDVjsiBoUIof\nMVbXtHlgxOOM//RO0TdL5CMnZgPWx1/xKVqlkB8egyGSC7K8MD+5oxGZZzaS\nDlfdUAHct2fjkJtEX0IXaD0/qm5cXKRObM+9WPNFmydrerT6ttyIE/XYrZo1\nE4OznYnbUUoAcrC3A9dVa0p/d1uRRt+yQKahRrZrTzOF2RdcJW3r3pswWKqG\nQyt82sOHJuT+5ImYsSzuyk0eWsXE68ZjqhiORvwA+jBy9cTiS/533eRep+Rd\n4baZ\r\n=w773\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~add_claim_list","@atlas-engine/process_model":"feature~add_claim_list","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_claim_list"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-eeb34b-kb24zk9t_1591357232015_0.6479874789419202","host":"s3://npm-registry-packages"}},"1.0.0-feature-270f6f-kb253pct":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-270f6f-kb253pct","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-270f6f-kb253pct","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"864ac79aa899bdb3372c21d2b455883484541f78","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-270f6f-kb253pct.tgz","fileCount":304,"integrity":"sha512-U6icDBezm1bxcJucb74oDp43/JcgwuMBWNI8snKiarSWBXb+vc+3K7rTP20l+6Qxm0zjSfc2J9SV7QgNqfszWg==","signatures":[{"sig":"MEUCIQCNXZcJw6zc08H3a7oXXqpz371TcwAjC+/9+HLudpahcQIgIpmN+qgqVKcjCnDPjTikNYXWRu2BCNNtBquAiQxtDjc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2i/tCRA9TVsSAnZWagAAlKEP/1nE4fGz18rsd5POuBHj\nD6sdQqts4jd8GzEYwOwL6tjAkkQyKnmk8mBl/CIc2uITX8/4X+xihxiRKOFR\nhC/TUYAeRh/KchBg6KtahdSwE0HZWRW0ZRo+xgZN0P745H8v2lVXisejC2pV\ne8p+fRrMR5KcjTkk+5t4X7Rqbol1l1EMMENaLYo5wqiUeHJS6GJTGsSeGtbL\nBbYp94tSpbLIHHpVhq5OzPS0RStm1OIuPno59P46YspH9b8N7b4TKfMERbOZ\nL3weqa6TUoGuXvFczZQQ+1xB+8qTSNhpbj5iPjxdelVrP/57p1G+B0A63S5C\npRPcESzhAW3fSy4oppAnAqvQWP1yIT7/Tg/3cM5e1zmDUwqrCBAVrupwShlS\nkMSY8Um412s2n4phm8+X2JGRiSJi93aW8x41TOUjNurS2WyDYtgayqAvuh7j\ngl4tQ+eZK7o8sm7okjJ1KZzACcdwZ6r+/HkpGcArTJ7c0Y9qTiRJyjlf/ZEr\nITLYIBvwpJ7YMUabRglNVPwV8nUVcsDk//R3VXQXk5kEXgFWjKmp2BEmWIIq\nYk2GXMh2U8Rp4USEDWO77XU2RKFx6QMZL4DKmATnxhE2+VHc1omEd/SDMs4P\n89/HNllAgxGDHrmbpz+sYEwLM6RJsTaBH/QrAuC/qP8eBsQUXsdku5Rccga1\nxNV0\r\n=LDMs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~add_claim_list","@atlas-engine/process_model":"feature~add_claim_list","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_claim_list"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-270f6f-kb253pct_1591357421012_0.1085476021286802","host":"s3://npm-registry-packages"}},"1.0.0-alpha.42":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.42","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.42","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0a632fa4a8a58422dfeaf3f1d9700f2ec2bbee87","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.42.tgz","fileCount":299,"integrity":"sha512-2FtMQaJ+1h683Ezf0xzkeAiWRqsXqC8iZE7TuZDirFapN1s+ys6j9cZteEl1ZmxOgAxOsxtfb++nXpYYjW1jAw==","signatures":[{"sig":"MEQCIEFn2goUzo7u7/hswwXOGd3xGBhna5rhFOdU+yFSR4w0AiBygvAADzkStRDLksVb8wWyZvZawll97SmGK8Fn7kzJaw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2jo1CRA9TVsSAnZWagAAtvkQAIAc84yJ514lQttqPy/B\nEj3Y6dgrcZHkFFlI9pFY6a+wvWDvjxSsrZSdX6oU3+mAcmOjyaivYN5pW23P\nQQbpd3n+vmjAUt667UOBZDBYKCLeJkPJy18/EulCcH5shpBBcbgElK7mBJZm\n/NRO0J/3wkKoZY5MuPjc1XqoElIBv6ssGVeGKWcMJ5H/LrPd48e7FkgPAUGV\nfjDtLKyqr8ipJIYcVaa4MkbMaR6oy71QXBSG37+99i1Oh6xBMzAjTMNNFDrA\nsBQdpvVqGwFyjwl3gRcGPMHJgJES5sB1FtHe5jQZqQ+UhUK3er7KaVIbAzA/\nXaYInVxpPF7iLySSHPrAsMdDfjAhSen8WwHT6tU3dA04rBP1vHaaB/r8VqTy\n4aj/GXno67K7ytY6Ll4zywmGKvhYGjUssDUaUN9aCcwZvLj3y94Bi+UyHmJo\nDKBXKTkzf92rA62fpCavrJeOb0ed8TlpEqUBCqzoJKH0ulIS7hAO3vxP4PCq\nTwsY60P+DtjZGjrSRDcmHPZ9krfdcedkH0MF1+dzor9iR5QYFltOdV01DAX7\nErel5LKg/aLMez+nJ2fIjZ8CN0gdTUD+wrLYc0niObWLitUJmZp740IITDy6\nqgA48HAR0EneUTnMZ9ZDMPpCSR1Z1ApEGnbXceHSN/fgKv+Nlv09oNWRJ0vj\nyhxP\r\n=qrMj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.42_1591360053204_0.9823036440560851","host":"s3://npm-registry-packages"}},"1.0.0-alpha.43":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.43","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.43","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"19c0e72d98f6e1369e6be5c7fa7ff8252d70f51f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.43.tgz","fileCount":299,"integrity":"sha512-MXTlpSukkuEJ8NKmmSe29nwTYVrRN2/HF6IR6toN1yPkGbr7nWPqvKnriJJw3S1jKSdV2rt7h+oitWszqK21rw==","signatures":[{"sig":"MEUCIAWDEulqkn1+R8YGbgRM/OeJm7qxCij7VLHh1WQPvF6yAiEA6CWVhvLmUn6Tms+2WclRt+FKif0zKxbVDG68+Yvb5II=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3foeCRA9TVsSAnZWagAA6QEQAJUO3YUZbt8GjLc/Mq31\nx47u39oEyziQp0efrzZpMHQwoSHho4s5iDoS3tLfAjse1MaOUWTG/2C5ove4\na+ENaQRR/m62+CQI52lJ226yhLjzYLoCJPy+ZljgEdhrG4qO1h6Ie+CSj3Yv\nqusIR2x9+GvdwL6MTf1JCrtSS8soPjeejWMF4XE+ArB6thphCITaKdXgE2Fs\nTuSzXQRMqpPMRh/TjW28Y6Fp2S5hrBtJJR6EWZvnXvv+m6+3z3yOFjHrREvk\nmD7Jn/v2807uRNUsGEJx2kmppx2Df1/dPdo18kz5zX048lJozYNgz9w/itP/\nQ/w6p/iTWarAJIA/VzCWIpW94OCwi9CWMAjEk+Dv1gQ0ULfO3lfAAShsQU6s\n+WoZEUI/KQQzMFGhyEm+ezdc8zSDIhVlDoRBJXbQQI0XfubJScjNOy7eS4jb\nHuLgoAOnUOSKbOtRKe5a38Fx6gkUrzFjrY4nia52VPgYyiG2nSeAme+eDzWs\nTSqzLrFie6grF9Rig28LI2ZvzQL+Qn2yG2LDvs1HlHDWoNOtlpc69jiX5BYo\nHu8IrZyrsrbzzAqyj/N75VA7IRd5leU0rA1ITMLDqdgAKRcip3Yjj79BWrwN\nHzA2IXMxgceUjP7+9vxU/SONbkZMQeokrWKgPLjKm0avs3mKH1kVXb22pT4j\n7sHN\r\n=TG9a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.43_1591605790384_0.5619745944141457","host":"s3://npm-registry-packages"}},"1.0.0-feature-e4e989-kb6j3cdy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e4e989-kb6j3cdy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e4e989-kb6j3cdy","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cb6ce5a51140409b20291188a14d5e2dae51bfd1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e4e989-kb6j3cdy.tgz","fileCount":299,"integrity":"sha512-y6AicP8xhxFsPqN++uPFyd+BjJPVvT4Ym+Ers6HM4O5Gq8dQfeP3vmuyusLrJS8Q4lOe2KyEiMQJ0TkAOPfmyA==","signatures":[{"sig":"MEQCID5lLTy5MT1gL33horh4OFujmbLFTsPx9WqZBBF+J5oAAiASYMli27aiHUwFEha83KrpMd2OWtsjBQpkLF0AV2Ss2w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3jyDCRA9TVsSAnZWagAA/vUP/17mULK9GnXTiVV102nt\nWpg8Sy1fCG43LjUU6WkNGk1ZT1wEwwrH7NNynp8nYjKH8EqA6S4ddKaL/cgw\nyXEEPph8xxySkb1CXGzFeynepBD68ezUgEY7ptEr548ijPV+ERcUK5yyes3G\nvaWcCnNG3o8gfxdihS90JyYfukLKvxBt6Dlg9EeUafLs0L9A3jY45RybMtX8\nVtjWIi4Qy9xErRWElA2uLJzSq6F5LI1exdjttCqAu54kiqb3wH7pRnKiCySX\nt+UAhCJaARH5dQvvROO9+/Em4Ik78rbp/orj5YLPsckGrM1SiT5skFJRxUTd\n4CMqQ2HH3d9l13CYSLeo2FfipyUr/EhJi94Jn72yUmsa3HIh2nFNNxVSHMZs\n+84dFcyLsTJuiWJqImzXmjAmLF2FzV3JF/Ed16xqs06OcI5SbXEX9jzfSuNq\nMQ+eKytsfvijokFJh43oFeOHDjlRuwKMznFW1vVoPtYu4qVqFw5WkQgLucdC\nJa1KAv4KEezfw2HABi/yOhxXI+DazNwngKnxmjpo3WaG+lo4PMcCPPdnBAmN\n3UhCE1kmQsMMJAnxgkYjFGOLLQ1AqEApGEYzrHl91Wzc2d4IVWc1TMVuCR0Y\nyfdxbF5KH1TL9S5hPspV4k5Kbvu7VmAdaMSiqY8YpZHoSeKnc6k7EQRiFP2O\nMo5J\r\n=X3O0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.0.2-alpha.2","@atlas-engine/process_model":"1.0.5-alpha.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e4e989-kb6j3cdy_1591622786564_0.3972130314602669","host":"s3://npm-registry-packages"}},"1.0.0-alpha.44":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.44","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.44","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"df583ea06bff023900aa51b15dcead990872fee1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.44.tgz","fileCount":299,"integrity":"sha512-ajCO3zERg5KjUEjtju/pQ7ymEaamjhS1sRTLn0CVRM202ruVkY21ORptkwuUDpWlqESjTLsE2Rg32shTZMwbSg==","signatures":[{"sig":"MEUCIEv3mFZXkwBx+vaigeZad6Ymy4IKjfHrs1YlP07pd+KdAiEA4YuMaa77KBdrRXAQHrBksVqtf0SDwaVNUtcsJKxcsLI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3kFCCRA9TVsSAnZWagAA//sQAIIdFBYUCPIL2qxvN8I0\nCgG6/C0W+mlZwHN7xzPzGnKsngFS5DE+WVJILANlgSGhHsyymIsXxDcPHkY7\n0Y1K45U284QbnyhZVNnW2UkcI3UDqCp7eHEalEnh3sG9GV94CwZ9rHj0X1eE\nUhD/BWLNiDmhdk91f7ODXIzbyaR9uGJRQfoEJHOt/mcHxSFS9T5MHni/Wk5g\nuLMHf2ifWmxYWtC9+j80Gie76TyaCnQhOblj2SiGba0QYXDl/WQgCIT3yvtR\n1+1Ogjn+xAee6r1GHPcs2m3rhsLm31svaMH+RZaj2TvAJq5f2XJzY6Jk1Wkd\ntp2I6jsHhBn7nQwPnkDYNsOuh/0RRHcDHE9gpO+E3xrFlOG+nvKL130I7clD\n9GItPuIVGgtSvMxLFWT3p981c1NfP573UeaVPn6OMyif7OVPixrvhNBT0gdp\nNr4355oV35wcSOa0E4Sw4AQeIdCo3P8aot5TbkB9Hsltxa8O3Bp6HSHLNjd/\n81PRmQJJeqgHf2433i+ym40DIx68G/eGwpiK8HLUy4LwXyRRW8+kS/5PfVam\nG2uog0DiUwBXDlbqgxxLv42euTYuOlzAn/LCSbqMN4NWQsNUS2EPGVGmp4jS\nj6KRaJPUZ1imYPz0xwbgBlqGg8d9O59Tl9/fSyvhH8ARYkZID3ilYMXf3bzM\nvJRz\r\n=If67\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.0.2-alpha.2","@atlas-engine/process_model":"1.0.5-alpha.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.44_1591624001554_0.5062021806444226","host":"s3://npm-registry-packages"}},"1.0.0-beta.13":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.13","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.13","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c3ce1703cee548f08d08a16a1c179ceef52074d9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.13.tgz","fileCount":299,"integrity":"sha512-z6f+WsX3G7Xj3jgMyaMOjC3EsTyrBFfl5Y9qAMAzyrrWC0I2q94FMZxuwK3Nld3YuwZSdslrcV6VOXFHFQpMqA==","signatures":[{"sig":"MEQCIBuu9uhA1gqkU2aC1qnUcIXSnkf3g7eGgOrhtOqqD1DlAiBiMFZKVCOQ7NBSzwEOEZh+hj8SttOfmuBvR/1p8+snZQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504772,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3z+PCRA9TVsSAnZWagAAzw0P/jsOgdqf3WwxGvrUSZaH\nqaui5wuTjTfWJUZm7fDsC6FnU7GY6jADqdn+ehht0IRVjEbz4ZdibHtmgNWK\nTElA8iFjRj8WLvFA7RgyOD7ef7bT2+GljdX9fMzG74BfVw23CMQAtPlulJ4w\neruplfD32AW6QBgZDgaaUCPQppWSomBz1U1uwC+bdbNdhRfj5sVsFb3YPcni\nxrjp4YRY3HRfsFgz8iOv4B7U6RHkPLYcImdJyYAixAN1sETVEhQP3ic6ktwQ\n1vDrF9xyvEMPVrLa2ZzSVpUhnHDW/v7+L5NWKvYAq6CC00BdRVOC2x9tK59v\nsZv+Urhv3qslir/ILQhF2Xwy6Xa1fDeDb3FWVAHwC8rnXC+czAvDvkYvMaqr\nUs0/+RuyRZNHj9nybuWKOqxXvragkflr58ngjIzhWrFAemlyZhYtr2LNI2a6\npf/SOZZsnEbP9f1/5pDCT0k+o9/OfgaTDHin6rKJBHDF7ZVlgWYSdh2sNwn3\nN5BWVXGpDmBPKmopaR4Qnr/QnQkqt0eibUwZ3jjyUaR/jAcYBZQZMQwUj2QI\nQr5kBnglKNMPJbZHwpr7RLhmKWUvpDWHvzvD0cQJqJOQ063r0xRNODUVBqy2\nOCAMPsElx+k+HqSzH2cHexNLKn/erdo2EOrEsmETwHHM3KTGcUVBn38MOncV\nSxRE\r\n=ev1B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.13_1591689102907_0.27691838332179275","host":"s3://npm-registry-packages"}},"1.0.0-alpha.45":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.45","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.45","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ca0395e9012dbf333ed63051108a93d519865a9c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.45.tgz","fileCount":299,"integrity":"sha512-Kh8/wgT5Gv2rnaaye4oZrY3q6O2BvmsdDOmU3OZgLaslrlGscRgN31s2+a2HAMhQlmMvZs2qL5JEwyw/4AFZFg==","signatures":[{"sig":"MEUCIHTcS3+k1bZV56YAluHCJfgEDExmnzgVSCAVR6cv0KpZAiEApclOQ9I/YwGdxByARnGIHCGCfatgPI8WxIHLayWfDK0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe30F+CRA9TVsSAnZWagAAaygQAJIMdccDdJVNWjggudE1\nkOZzw6VHKe4W3HcIVDzik3TEpOj3sdGZE980sQgno7tPZlYJTnZHm78pCN+h\ndGMgeMjNGz1CryBqMxztvZ6JhDkJDAQpHidu/fdStYshY9YFtdqQVT5fKPb6\nRyfFgWrt/zjKiJ1/H5oAL+1gEJ5/EwjH2rrOahrfulhd+qtwvj2R7rTyoRff\ntXDThvt8p8nwd7z5/52tZibf/St0Gk9uoi1ROjNIJUmUFNJVXEHR+jWdNdIM\n7thgc12jIlCkt+NGyWpG0kE0ck59V9pIP43noO4RKTn8f2puUa8+TjN5Q0k2\na1ZlsBaMa3hOk+0r7SiEPJC3jfoLlcaqUYVlZbpwrxIg+L47DYTFx8yFZtVD\nCUyMbfad6xCnC9U2xRfkrz0UYRXi+oAHlGlrIaTSIdnVLLxVNvZPYfcdqcrZ\nxbq9Jgo81Ge8GvTUp3okX3leW43AON1HzKiXF0SbIxcnWheWH4a7uglJ4qkB\nMfl4WU1smvyXh3/Uz2hOGmzFpWtgzP1sOmZlcUEFzpKskPN/3/6tzJNv0RlF\n0h8CweTJ33jEbPbkEXoeQk8Ik1rt3L1qQanSX/5gNXVdxdyjztd6YxDuO7zC\nyneYtExczTMFxgfYUOqKUipe5MfaGNHm1+tPIu/sRMMpn3E8v9KzyaKIoB8F\nM7pA\r\n=xSnj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.45_1591689598401_0.35528083393963494","host":"s3://npm-registry-packages"}},"1.0.0-feature-77c8fb-kb7ya9to":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-77c8fb-kb7ya9to","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-77c8fb-kb7ya9to","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a7bb0606565dce435602f491cd8e6bf89161f461","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-77c8fb-kb7ya9to.tgz","fileCount":299,"integrity":"sha512-JuEq5bAYeK3YFHDxpLmoUlVUDAVORUzLYlnH9Fik4oP4z2HV8eKn4xA4HNmNXAWNKyZpLUhCn72euvO0dCBoaQ==","signatures":[{"sig":"MEUCIEMcwscgFO9+BEiR+Vnu/OF6oiCriKvwmkpRPg9N27r4AiEAsSmkFBLA9rNposbWUNnK/bYMAzY6EIO+U7wWmSSYa+c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1506217,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe34xfCRA9TVsSAnZWagAAN7sP/36b6UKWlG5UWqeu2rk3\nzgkFt9NYYtTD32ZayJNZPN6fjLwRHWlAPaBtPIPUeUXASobo9Mm2ahRTirfT\np2pyS9zh2vwSzK7J/ZQSSJy4U3uoY32dqbQD82EF0ThW9jiGZxJsEEiCWSB4\nFx3YgjayLya5NlpP3wuLNLGPIdvd+8NR9nEKid/cwG8JNsHhnUbvreL2/lf9\nJQtMqYtxlf6HF4vCzbqCMaAW8UEPLQQ8MIIovf+SJ0FkoHEQEZvLzRxZlghY\nh2a+x9MJelEWIXCFKlJK3zNgNQ9qSZ8Q39vIshfQBVYgwgmGufP9kLvl86eI\n7y2QNM+l+RCEGkpKh4zkqjEyt+no8jDFFRJyZXWqlxLQZX+7FnxEI/umnWHY\nTuitnmKdbgd4qm+Yr9Nj7G+PnfVIDhT2W9y4JOs7/ibmwjXVx+NAY+lW1feL\noer27jVivf1B3oDUtsoVxhKkPpe60ICoL+LFHlx/UbCx0BUmYNNuWUVJc1TX\nYzRpCQ+4jcFowlfYlL7lJwC3g/ELaBfBbxzik9sjcs2xWHOCSRP5Xn6wdn0d\nrmK13jg4aQH5cc4mLsSxORysR1FB+zBLEElvVHJdayEgEEzHY8ukIY8au6K+\nc3ZxCAKb//MXHhd0tidd2fPnigUkaDxQ9XaWqwfkOMXOaZcD+W2zwAUAWwaB\ntIt5\r\n=WPKi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-77c8fb-kb7ya9to_1591708766964_0.0563213594850096","host":"s3://npm-registry-packages"}},"1.0.0-feature-2715aa-kb80y2kf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-2715aa-kb80y2kf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-2715aa-kb80y2kf","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"34078a4fa5c9d75a135ace863d96e2878382d963","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-2715aa-kb80y2kf.tgz","fileCount":299,"integrity":"sha512-pidSiibOWA+gbnlf+MiQj4nBE+RBLHtkRM/09duYooGrrSQd12ha+APA7LHH3oRkEfgCj+uXAlELTZF++W2UVA==","signatures":[{"sig":"MEQCID7TzUzEApU2KU5X3/q3kstcRBiLv3HPIGie4hSn66dLAiBZ+v+5jsVLOLQwhBhZ1Myq85Sdb3iZOd842271pu2+TQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe353PCRA9TVsSAnZWagAAQ5IP/28xL7QxYfNBD0dcuQvY\n625cEvkMnifZHngI0nQJeZiwTiityBmx861apG9Ysi/8y07RF4JkCjf5P39x\nDL0bKmue/o1wUCN61fphLaCHl668/JarVwT9JVLd3Nk/NndS7dXm9Mu4LEr2\nKNy69tnFCvSoEiA+TXpznhpN9jlzwL4f6YafoUuz47SJli13E5C1PtrnjZg+\n5cRdawuqsSco1Yj/z8h+thkg3bgF2bma68dz4irkUbsYMbsN8EO5UE3eg5O7\nwbViHCreglENbxHuRe1EzUxw7I/w+AUKC3g1e+NtmlXSolGZ27OEa2tFKzmr\nidb0bXVOHoCuFys36KwAA3h3CTiywSV/WmWccPoEb4f3GVDpQGLvrQcIFbPZ\nhxI2da2LnHySqos/SRx5sUqyHgipbNxytPHsReeIBUDsUKBwR3jTazioqpMQ\nZpFw649CWJoa6nI9Jo7Yd2jSZv6YipgksRO+mx3JUB21Hf1FkiR300wIVgPW\n3VN5NlXMUnJLFAPHeBvv5kUuHQV8txDS/uzGLR6JCMXax+kMWVUN+EBcUPwz\ny6NAORJ5/ZNxNKZa/wlL/0taD8PQLICADuaiwR7z61QdqfoI0DIqFTUvNsll\n8H0ITXFBSJJ7QH+kPMcgUESSt9FeklGy6X4wHuP5vQo0xD0HozTi33hFT09k\nsw0i\r\n=lpHv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-2715aa-kb80y2kf_1591713230871_0.282732514004173","host":"s3://npm-registry-packages"}},"1.0.0-feature-18917b-kb8ztkzn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-18917b-kb8ztkzn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-18917b-kb8ztkzn","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"defbc2c21a29aa5138e082aae3f3fd47a17cb138","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-18917b-kb8ztkzn.tgz","fileCount":299,"integrity":"sha512-0t+yiPoX3rjW4GVcSG0G/1DBTcg3FXwALxrrwi3fEvpBXxwrr//FeQWOrtAgU/q0i5cWFC9gmXzKaGMaMNWtzA==","signatures":[{"sig":"MEYCIQCq8EFSOAOxeluUxYY957cj1lTMJhVa+4dLkAQ1bKXdtgIhAM33pja9BdDTu0ui+Uri/EfrXZXYrD0rhekXEam0R7xF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504853,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4IKkCRA9TVsSAnZWagAAJLAP/iuWQAguyATZEdmG0LLh\n5ioqc+AUAsAXkxpW4p6m2E1QuMchR49F4+islKiK2KFkbfj/57zDeoO5XK7m\nI+IPbEZRbohOGgA0EfL/csHVAtluAOTHxr1zQ1JMTptVzRzNPscYsiNso7DP\niuMTzNnc9ee9mN/wfaT9vJZAdNyjdKhaNVwdNRkH5pZKORtgyg0be3vDZGc7\nVnkEfY2hXg+Hy+Jb08QCuhJZdpg/DcHlIqCY6kbpiaGbhbz/LvlZMmEXUiz1\nCG2LoafKvvUEbp7O+qZSHDEeqk0m10D5ekGKmoZVTMYp1gSDqBE4loMFKfha\ngzKfCtzOGwvcWbmhFoQjM7IY1+I75jhdlqiJJPDofTecodtec9aNAGYsizsn\nzM5vLgqRL1p0lp51asHWkFyKkIEj3YsQsmbs8JjaKonMtgleio/8NTnOsCbK\nCRk5CF1AUH47ywy4wb0np+GdO9w0zMpkDV5l2AnzZ/hpKcitlL8es1QSTW7b\naqtQfxOVqewqMJINWSly9Ocov/K4rtieYc73U2PGXGDXc06iVNWToN0BP1J7\nRL8Ap9cNGgYpBkfNXC/1wvAjxFRJJ8Zpae1OZ99M6fUzeZ6INq5UsDSUn9qS\nv827fUdSK2isVKKoZ4k53FvZeDQC13k7vAXyCZKpWPBnygBY/mBiE/wFlNHk\nt8Ez\r\n=IxG4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~move_ioc_packages_to_peer_dependencies","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_ioc_from_process_model"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-18917b-kb8ztkzn_1591771812527_0.302233487543323","host":"s3://npm-registry-packages"}},"1.0.0-feature-c0951d-kb90tj9x":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-c0951d-kb90tj9x","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-c0951d-kb90tj9x","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"403ae2e925820d4429d4ebe1c642aaa6f5497ab3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-c0951d-kb90tj9x.tgz","fileCount":299,"integrity":"sha512-PDHUQE7zZDJM4AnUHXWCE9Ru2HdYBOuWDx3O7ZuaFsVct9Gf/QoliFt280/W0TnWSh24pQVPcxKo77CmHc/umw==","signatures":[{"sig":"MEUCIQC0rZABxcPQasOT2/oddQt61ngz+xjWU2JM5875HHL75wIgF7JxjCfhbA0U2l+g85Okn84doczsmhvIfYV+pvdatAc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1507246,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4IkvCRA9TVsSAnZWagAAruQP/2rtU71qQLeiQ2GSUjcV\nVKV6wAY6dZ99C1Ol5Fvgc6B7Pd6sdQ2QTrzVky7icNV7hMqEZNcnQ9LZAAwJ\nkdUNkFSd7PRtZO14861De04V9asRz9PeoJr477NoosLmgFG4cZ3Gym14PDZb\nCLGXet+AGvhyR7JWYAc+upQIlxZL3hW8Hevrew1dBKb2LXOm27qO38/yEBA5\nAYZlxj3BkMcoq0gDol715q7pUk87AnRTxMfQG9s5zngJavM6xKV7y4sn22Ak\nDpivL+oLi/J7LQr4iUd7Ct8JW5MPCU+LJWtz55chI5LxQ8gMnLjmdQutVOuG\nW7f1zetRQ3gqq7UOivQXFFuik7KkxeEiTknF+fZXQbkg+JkswgXGTgygyi9i\ncpnGLoP2Y0skPqkgJ3juZ2YqjsnIT3h22u0+SqPHPwE/w+Atr67+Dx4Y0Fd/\nftIkPvbpJViHDaF7x99hfFQPO4hca0/HnR9SGOKXxGHk5NL15DpvZcuAi6Db\nUrGWqLoiTo014rqrMy7goIayYRwVGuqjvkbXjkDDNq8OfhixIZL5AmRxmLHS\njL2gYHOKHvthVLXa/JNySRfhnBNiJyZnd0KP1hYZjCSSt07/W0DULqUw+n65\nuo/gGiInI7Hk+RwnkOY9jORP4hfL1rM+HD+BiSTyf2kYoPmT4s3dviZKw77K\nwHcI\r\n=+kns\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-c0951d-kb90tj9x_1591773486411_0.03169814897806966","host":"s3://npm-registry-packages"}},"1.0.0-feature-d9a584-kb97v9jm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d9a584-kb97v9jm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d9a584-kb97v9jm","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"edeaf2289585269c0bb3dbbe1ef19792bd89b1bc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d9a584-kb97v9jm.tgz","fileCount":299,"integrity":"sha512-4iFsLI0hErTMtEWv+dwKbGMhk6DmHcEKGboC6F4FcecMSUWa3QYTLR8gafnWr4sBwjw5QiaG9PP7GjJ6TvoLQw==","signatures":[{"sig":"MEUCIELHB1rg3Ytji4GLR3ZG28rUUbhdoJTAKADL9aXYZ+72AiEA4seh6g5yaUDgU/6wwEjQ77Karz8ei9fqmjzV46Ld9RM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1507440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4LdyCRA9TVsSAnZWagAAxusP/RWHdsR1MXD04rXwov9p\ntrfnP7pG76/KWdPrYIrvEgpvk1/T6w6HUo2+zuqGbI1Cw41ay0YGLFMshi16\nKL227NWxBPddX0knIjCyh/WzjUK652E8pJXuMY3IZu4Lun5w4U9zxp7TBOc4\nM0uCS6yjmt+DgAALgWJGJfA3/1Hu9bbN32Im8GTuhUNlaEhN1S9/dIKQ7OPI\nzrV7RcixXRNGtcO3OFSlxCg68taFXzyhQ3WecKaWcUE0u0H17Qjl0p6TNt7B\ncOMejVXX+fL1/beZgqTDHnVb5E6qkByNLmK1rvmKQAYPZwx8GOUtOeLQdm45\nxSDyPprvjMpv1hSQsv1Tn9Dmp9KaxKEf/Bsivkp1qAhXssVjX7LbbSJaAoNZ\nfc6WG/NZuUgdvXgPDy8MKIKfkzw4jU/CJexwG/B67pB/MkErRVp0IuzaGUVQ\nibTLIlKKzEvVZnLcSrvL8oFgG/7I8bZqZUf/Y0KX7VYQPnl9fuC65qrg9hA+\nRhmzcIJbRDxd2R2gNGf76Q+jeEZ6X53+VRwdUD2nsL9nvpd/VhoLPffFhXge\npAeL4TLJrEXXsE9qIbOkvY1druYcPzXR2Gw7SmlduKlo5E32QpM8nqdn/yh4\n0alu5GxM4ihMIyqMTuEq7jcMjVr3bI6gL85l5o7CDamWRStXp6A4wZDap/GU\nRsXB\r\n=yJBJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d9a584-kb97v9jm_1591785329968_0.9782337841370334","host":"s3://npm-registry-packages"}},"1.0.0-feature-743b3e-kb997f8c":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-743b3e-kb997f8c","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-743b3e-kb997f8c","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4cbc4242ebab1393faa292fe3f2548fd698f972d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-743b3e-kb997f8c.tgz","fileCount":299,"integrity":"sha512-JPwZU+otfpr0uIhb0iPWbLl36mqFBpTfhEop7VBxOWErJOwtrI3/VnvkbnOIWzqVXry9HfC8v3A1yKHHfm0EBA==","signatures":[{"sig":"MEUCIQD82/5zq35UFDMnGf727tTazLR4LAYNlJGwmtbaoVaGxwIgFxov78B+gD8cG8N1hpQN3I1guOchyJlxnqqTgsl0m3I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1509041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4MAzCRA9TVsSAnZWagAA8oUP/3Y5g2qQpmoTfpq7StFr\n1GU6Z8cnLYLQoHsoY4z771YS8aHbmTLx/XWEGiey1PXOOWm8yoXhKvQf3SI/\nvRQH1QA8stn/vE5VJxRmkkszID6C4rmjn+bNk9hIB2Jeni8QYTySZi9FIxnN\nOpOlgRTI8m4cLCAsgdneEepZ1U5tOwLE5Gulmp9yZeok5j6uP3LpelxUEuaO\n83UC9hObY+Eqi3nPPIs3cKUIOk8vN4NMuo6yrVMNjj8zHEO9PI1qEBZlW5Xj\nTHSZVp/faM+EAp8+2kLOWZZIDhxZJHptkqU1ZSJ6BNX5SGBA7t5YFK9Fnl2S\nrbDozU6+yyoDx2QsTr9ooyxJ/0moSsRKDzr/STL/Kx43mD579h1lXCLmcN0l\nPa4cZ2elhNEAEeZXTsX13SzM8DKVol7BjrWHOCbgv91gLb6sCaL7VDqQfi29\nKFCgkpe9NEiVOLjo1BIl8POKZ1/Bkr+h8il7mf1w0ILxjvTgL4lf59CQgad7\nvUs1yVwUSU02WKObLlwSon5CL2Zm+K+RYelTZOIyH7SrTnEXw8wsSKRrJJE3\nlYZFcE/mCKhtx7urlSHQzPVRBA+agIv3OrNLHixmIJR1YLZwn+jXLTO8D24P\nqlhH8eHa7jr4woL7dcq0+tUrDX1VA/i1j6wXkAb+rkH/0zxg6CgbWClLuJwa\nGc32\r\n=05Sn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-743b3e-kb997f8c_1591787570956_0.6153318487368293","host":"s3://npm-registry-packages"}},"1.0.0-feature-4fe961-kb9euupn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-4fe961-kb9euupn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-4fe961-kb9euupn","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f5d20a8f408bcf83574216aa80249a734440cda5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-4fe961-kb9euupn.tgz","fileCount":299,"integrity":"sha512-+S1Cu0gntXlpn44oAppE7KRVAjTOL2iBr0L+UUjX9167uXIY/y6AdpCCKKWykKe0wRFG6LTeS+evxWdxbItmeQ==","signatures":[{"sig":"MEQCIEJHYyT+OJ10x1doySH0n/iJLeJkzWEBcvY8bP9ZjydcAiBvXLjc07lSL1N2Ougs8duNXDXktk2DmGoZN2O95y1Qww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4OVJCRA9TVsSAnZWagAApFoQAJmAXRNGcMmehTpeJJ/6\n306IuZ+tjIZWHFhs1CxcXYnTNbQ06z0wnntjr+LtRpRQpFhVyTtpWuUGbagA\nVXGyieD8mcMjBkuklftg7fN/gd3ZYcnJ/wH3wLObq8DrdVWtcsVoXPKnhXhW\nxECYLwMAj6/EjUC+LZe8UVrJZqm3aD3tdBPGygoHedDOxpOvGXcwcGOTfopJ\nF5HpJ4pG4BqYoAY1aW49a52uk5ikLZCXLYx1ADD5lp3yakSX7QFgHI7EOY9X\nULmwWggvlf7n3M8WzQidnAilDjiolIz57bVNs4M15HkbOus8+pxt0vdchh1I\n7ANj8FPkUVXZneOToT7AO8AuypDIaw/11fXOKthgXuApuXDXPDZVPtA5UPV+\nRwadBSxf1dig9kQ5Cqh4q+CblqufIm3rYfkD+Kudz1aCpQoFTXCke+0bp86L\n9zpquge+QL6AQ9pbj772IeoHJKuVxGOOEgBssBq9waAJnb4W6V04xZKEWmz7\nHBNgESq0CWv+SMmPeu51Pkgqa08uvly9Q4BQ/0I+NyGAAyNaMemSssOjMf0r\nxxeia1p71dYo7eRFuFc5swrNYjWHnVMWzl2ZVJaPSr2ZHlxMbt0Ru+BLtDcu\nC5qyQVr0NzdhpOUTsSSJf+F8npjWt1S+QN1vHCAbiRzPxlrGgXmBjpl+pOPh\nNd5z\r\n=EXZB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-4fe961-kb9euupn_1591797064660_0.6891575904829377","host":"s3://npm-registry-packages"}},"1.0.0-feature-84f3bf-kb9evhny":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-84f3bf-kb9evhny","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-84f3bf-kb9evhny","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"e42bcce3d055ba947bbe1a4376b0a06273d3812c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-84f3bf-kb9evhny.tgz","fileCount":299,"integrity":"sha512-JiR5Egje2tA73mMONr9FmVS3RC5u8IYXCK8I/vKXV+WoqG5Csdef/tTc625zFClHtOZG5V0ptHk4RKPLM2RbLw==","signatures":[{"sig":"MEUCIQCu+mtXiBejAfKGcnE7dJqzqiZpIfjfo1nwwWew9DRekQIgdURZDJv2dKWMCUe4x5GZT65mB4TWq9Ka3XnWKa7HnaU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1509041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4OVrCRA9TVsSAnZWagAA+/8QAIS+YMbQsHF3FOFf8TGy\nBpLu6D+mai/+o+id5uuZ4X/boGgf6ouj8e2g8zNHOe1wc3o6Q7KvX9+ELDHG\noAKKjCXUrTjdB1Cd3IvjIEBrZMIMHmh6Q5BVz0ZzVZbZloq8v/XwVV8LtJHJ\n9wLnRSttU1ZvqIaAhgfqJLBVyXtBVwZUgrcuH8m4kmFWyZHfFGJSKJmk070H\nMKq2ZaRUp6sm51kvdbzWBC9dlgQoWtZdfR9mjcVRygEdkuB4qhcTSVtHb0Lv\nBtEsIxWJoHb7FLd6DNmeZLi16Dj7Uz2JUYvpvT19WayE77+DuyLoLMPh0Hlq\n3wvWXmuI62Mz4STn9qdWf9u/LdO5xkbob6ApNqnhNfGCuLbJKBO1npPOfa7m\nrLEUsEZg0nfU9iO1pxpMSdGtuCOifHRD8pI0tpGy2VUBp9+F5Qw6f2GuAqw6\naMRFp9QXW1G/Srbo9S+bJBk2B75wy4KDDR/KnSmSbOq0/yWWgvu+U5llIyTA\nASemLwYSOEJ+ORZ70cOFJS4sKW2lLzplnenG9E0Eh2vhbgycjZc/prTrNROU\nVqkj/cRMOMYPj/w3JtTCX+c2VmwZuLqly9uMPbhO50bITgP+/6wivqg5/iWB\nl8cF7jfohX5HFIWe3QtA78TwCrCAUOPq+m/L+cabNurTjr5qn/CRtXWTRfXY\nR67X\r\n=Ou8t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-84f3bf-kb9evhny_1591797099410_0.24251818112770307","host":"s3://npm-registry-packages"}},"1.0.0-alpha.46":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.46","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.46","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d758f374b57d563e85c4c87d5686d90ce08914f2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.46.tgz","fileCount":299,"integrity":"sha512-uBf3X1zrROWq5pV/OgBVJpw7syVH67Tj/Kqiteu9cppG3bHasX6qrKHf53dvHMF9/Sm1Yek5bFgPzIuFIbAN9A==","signatures":[{"sig":"MEYCIQCzsobkbvhT/1seccIGqlau4UkQHTcxgsy+ujzbPlNJEQIhAIV2s5C0TC281R4/7g8IcxckH29IGPKMLuK001IeEvOb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4OYzCRA9TVsSAnZWagAAXM0P/AlRpeJAB5a8/fK2oqMK\nM1GaKABcLHssMzmD61OxNI0NAWQ2CPtprVIgBxgCLNBG0Wfun9syGYoY3Bh8\n8hXicW2qnESrWpeeQLNS2e8o5KuqdjlJHcWWeLGHk/gVKcblL9DTlgsIJvmD\nOKm4RbAY7Yn282J6yMPTp7asRCC/TUpSoA8bdMV52+n0K+NHTK8lEO5fkutA\nRDQJFeS8mbxSOloGeUMYfiJvProrW71K2tQArXwqe3CSi959R8Xeuo2EjJ+1\ny//0BEHfAtr6HxCmtMPXvoXdXbXzbVhPHzn5DQa4nKkJTLmD6Hs8dLunMkfp\nYauUYMhjlBttf3I6+5IRHnaWF7NBhMtxF/M+tjdA2rj8WXYdDLabv659ouqG\nPl09fpMvMhReSMbcfFowVGPAYnX1yaKX29lX7dh/HgAdi/eeYnTvwcQTWDve\nZbcXU/vKxXhH8/ZUpyODxdP0uZz+szFKnJiUMT8RSu/KMyFH7KWMJiwrSkj4\n9IdTKcWa+Ew6ReO8fHijfQQRjIBjqEMY+4Z7RjwiCHY38mYyXWlNPlXN6IDj\nKv2vsYJHlIhMI3hDW/WuN8xTzrv9VypT1l8mYmwBYv3QWbjwv1S1++Crnio3\nMK9THdvIobKc05V6B5rJCkPHu9pqKq5IflbpTxQ0sTEc7+LUi1Doe3g+4TYM\nzi/2\r\n=Kvfi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.46_1591797298672_0.6068793740437375","host":"s3://npm-registry-packages"}},"1.0.0-alpha.47":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.47","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.47","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"031466dbe048ce02aabb4c6c21d814534d31837c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.47.tgz","fileCount":299,"integrity":"sha512-954bM8YMyvU0IhsBkLg/1BgF6I3RqX9lxYFsdvm6HcO0hYNg/vAU5NlqXVjpvCI0ZAgm0/0LGHT1bwxNuS44WA==","signatures":[{"sig":"MEUCIQC1zI7w93GgKuyOCvwugBNcHNfK9wCbXBzgx17NIaOwPQIgR+fY8JSOlYlAb9/rOD1aktMV6vrl4/nTBF34H8W+iJM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1509028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe5xVqCRA9TVsSAnZWagAAIB0P/0O78tVLrryUvIOYj3nd\nYnEWI+IXFXliZ1psvTcXdhTue9BsmXA8LabPxqYDGMOWK4NNGT3eNYQNYlpT\nlwf0wquSWVQOoQaZEqj8OtziuB8ovgfVVmLfXMKDGDFoq8rU2ZVa8e2nCvl1\n6lt4mfkA1i74bhSKur/ZxGf7/I/VoDZGXug+TwBfO4g3XYfehDblpDfoxHhS\nJrT/97NQiTGZrWBsFz6OsvttkKxx/mV2XyO0jpw4rWoz5S+lQTkKEH8YbCt0\nMznKzI54Hcm2oZk4nMZnQ0bF4z5Z42EGJAX/UiwDFVtPFqoTTCzim/v17gbB\na83vY7vKk3i0APWvyvS+E/ueodBDLRRkbApELaVNPqIKoB4xCD9P/hDzuiUD\n0EYx0hKa94+xUr/wy4+D6QMK3lWQYn0N/Kp1R4ZwV9+p7jAqn+RnY5R9Tfe4\nARdbX0/KmW6UBWA6BE1Wja8KLm9yUkPELmyWqP0V2CmyxVaTzFnW/yeLmpRb\ndfrT3U9x0cIUxW6F/rhDAStoFiNCLZY9+PRxTNci2UA67VGgxnOB/iB8CNmC\n0a7EMCIYRnEKEU2l5g6dt8lBFR97gDj+BSSKfGq4M1rNXVMhNTx+XlhZwiBI\n42/ywOX1nZMa370Mdazx3l9clNqtw57paTbF+Q2GxCFexTzxSLsJkM2BNKTC\nARXL\r\n=x6ut\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.47_1592202601460_0.6690888005172639","host":"s3://npm-registry-packages"}},"1.0.0-beta.14":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.14","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.14","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d224709950d448f3e50cd6cf31ffbd447c2cfe77","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.14.tgz","fileCount":299,"integrity":"sha512-AHsdGrCIoWjyZ8/HVdry1+IXHTw1McRGl+Y5UAzODxj16nJ3zQ+QiX46aJOgCd2JPu5HfWFbKcslcqOJI+WKEQ==","signatures":[{"sig":"MEUCIQDw1J2k/sGe8/CPsHP8K/reD/w9GKjStQI06Y0SokucAwIgRGJz8ehvnk9T4fUAuf4PdyG79csSmb8IAdA2TQSgbeY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1509025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6Gi/CRA9TVsSAnZWagAA5hEP/3yMGz3qRa41ml/8lTKJ\nmNF3Mb5FHQtpnrLcFrJwJIP6g2wmwZmJ004BIGAu7Ymo79Xeg6QbczI+FZUg\no2i/2eg82O24zEzMMg6e68ANJc2BdcTd0QgUttoKXBq3Ps5V81Ku8Y5/GGTa\noxKMni4fz8wdEhJ7dr7C5AcSiljE1MF8mCeHR3CaaNfe/tO9Op09yBZD5c4w\npPML0PYiMq6gWb7Na9yAFHvtjQRpY9bw5fsgf6cXHYz6vWPMY3+0Diw9KYW4\n2xE/u/7gkCboMFNwjj1pCZpRYrtUMjRe7gptrayMYfjHljnUIBhFR1+XOZA0\n8ipdi1oUE6HPPeNe1Tkw9ZRaG0iZMwAMKqulvKHusLP8dTUp8Gn+ylC0bT+i\nCLBGjVZI+NczF63Z0CdlKZJRki6sIKIHrWjoRrR+YmjSxz16WmH8D/UmwZrM\nzUQ4WPQXJ5VjPVjwZWs/Bh7YtlUpzCgJOSW+4xKmKnpYopGNxRSJzR+sMVok\nh9km42wm3kbnDjH4CRIIsOI2GWVmMIUM6ahOSWtA4YUj409cxtZIFxCIa8hb\n1i8WgM/auIT8TUzer1ZCzx90WYorN19wL79meK2+i5G7Jv0Y+z2xYGuJDERS\nQd8WDGX1GCQh5nyrMxeLdHu7GdIDITcavwhAn5jMNPqbjymxa6nYPwrF03IN\n/CIY\r\n=Qanq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.14_1592289470647_0.3852799967106373","host":"s3://npm-registry-packages"}},"1.0.0-alpha.48":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.48","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.48","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"113fc6dd3c926d4b8d6bf8e7e67d04aed89552ac","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.48.tgz","fileCount":299,"integrity":"sha512-EdfYzExZ34C2hU2AhtnCVIdFnmXJz9GJqaWBO33q4OhVbgFnjD6Lad30t47uZq4573zqGpKMajr34d1TqaU93w==","signatures":[{"sig":"MEUCIQDajMDuzrrURS5Lb8j8SA1uj5vuczS7NnF7JwaWEiGffQIgXPWPBqv3EULm2FRHRDO/uTxyB8DID3oCxNblrQkA56M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1509026,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6GnICRA9TVsSAnZWagAA6+IP+wROJ2NwgxZUjjpftKol\nw+DcVWxWGs5VaxoyRH8GpVcW+4I4x0ShddI542OIsL1CtsHX89iyMTTIKXJe\nzaKbWGSPUWH7I79Yjyt+94dLdA44ZhS2RYMYEZuvvyDfVGwxxv/q5nnN8EJS\n6c+wYQ42d+SjYAVIA1kMGyWE7abzRcvQVNAHTYLncmGMLmhBRRAngcjeXeaW\ngIDa39xLUkXTt33w276+5g9FMrZJTl6gbALTdNApx8GNeLzurCbvKOvqhZ1K\njz9P5ykTNfQJ6v4ZpcdZARitN8iluA6/fc/ng6+BQhwMQTiXtBVjdWonTYfU\na/67Poiy9H0AnL71Sy7G6ywn3Cu4D3YiMUsKRAoSAEu16YBMSyK2eYxbWkYq\nnsD7iV69xjVUmGwK5esBrj4RIPNY43AlLKpCP5MeCy28Z8bN1eYKRGVezS1L\nQObVxx/8WwAa4mW5uThhyY9gH4fUnBvYpGtAHC/5AfSf2wzduzIGmRDAjNMb\n0+4z2TI36j7wxAMI77ibM18mdKjz3DSl+PKzNdGAajO87XXFWqIzojA/0Cog\nFdH9z+WP07SS/5sVki8tgCEfYsl8rijuzVj2CC0j1Jpgn93K7XyfJc9B7zFL\nPDSWVJHGtVUBIq5s+Rp2mCk0KbRqsm3IA8rgB3jkSm5BW1LuXZl81xLMd3DW\nXrX0\r\n=hq2V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.48_1592289735488_0.527246068181028","host":"s3://npm-registry-packages"}},"1.0.0-feature-bfb9dd-kbjbqhbi":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-bfb9dd-kbjbqhbi","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-bfb9dd-kbjbqhbi","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f2adfc96297da7a81d2c3cfbd1ddce88ba15bc65","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-bfb9dd-kbjbqhbi.tgz","fileCount":299,"integrity":"sha512-iPNwkgJdOIdv54XRQ1d+85/ywFLWSRI5r74CKqrMQZMa7oRQAK0NpHxpze6b1lEaY/+BQsYGgRpGdGYTYwaN/w==","signatures":[{"sig":"MEQCIFbmHIQQtnsPFtEyuHZpSt6RdtIaIA8vBvmb3es0x6HbAiATPEefBgTLu558A7CUzxrvSm3SVrz8qf2hAbEAVoTFuA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1509041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6grCCRA9TVsSAnZWagAA5f0P/ir880T1gC2TOMP/h8wt\npPA4pv126mr/5HVjP1LU0HwF6jFsZ7XmYMUAHuXm8/wTnDA6FZR0SEloK5I1\n2XUBOXXxEcMCke4lAVS60OikZ2RBWTaQ6czSlf+6ILlpOO8OmOs+84QI8U9e\nqrI46dOCItaA0zLl4EmppQSt4teRu+Hrp5OKBLWfXI4XI4H1BZmFSjSMmUnM\n8OU3HQf0yf+4Ah1Dci/vynD+2k260/DCkPRPbTxri7F9VFAdP0h+z6r4DPHc\nb3b6YItwwjLokKyvPgloOYJ3xAwgZ841D2LhQXTbJNFzgznF8wV317bf/UM+\neXgQbnLZ3tIW2ZUONGgcQgykCVU2a2rtUGNELI1yCzCGC1MNCUaYs0kLv46R\nQFFiE794Kcr9q5tq7m7qMh0eTEtXnGg/VSgX0sidgwQLgtkRFIfRjme4o9iq\nuKdFoGwhjvssVOiDQzX4qm3D4bzMhylz9npTqtxEHJeKNJBr3z87fhXfyR9T\n0fgxeK2h6VUlXU6nb2cMzmfoh9mJVgFYSqnUZVCtw+OA9qhcxXQPW7N0I4Af\nNuCqaSG9t6WCxY5sExvMEyXAmHmQiNAGoLX0XI4Zam/eyTpgAn+hfzK8A+d/\n5EVr0vmdk12PQ0uVWnP7K+MCVJLC0Aqibd9RjNmnJimTuDEmgc84CbzBUV+9\n0UJC\r\n=cMoZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-bfb9dd-kbjbqhbi_1592396482130_0.8434820179964944","host":"s3://npm-registry-packages"}},"1.0.0-feature-999a0a-kbjdjbfa":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-999a0a-kbjdjbfa","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-999a0a-kbjdjbfa","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5bbcb08ccc22e60b1851cd457442a600c6922427","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-999a0a-kbjdjbfa.tgz","fileCount":299,"integrity":"sha512-CFo+Ckx/EmI5QjPNF4xnU2JA84GuXyYosgLeLw2+Rysg/7BmgFOcWUk2pfJkE3/XhpJZsowLOpAm37QbsQyv3A==","signatures":[{"sig":"MEYCIQDPyqsasz+w/rFgzg5RgJDRUgWOI6/hja+V4KDc2LCiqwIhAOqF2p+lEBqJ7Uci0I7lQhniRM1pSnYizZ1LwXNXGgHU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1508970,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6haSCRA9TVsSAnZWagAAgPwP/Aq1QXWWjzaiouw2Ea8r\nrJFc7llPAGuB/AHCHgqMzV1xU/+gYQNmha+hvd+jGAI6EcKXNDAxxNGHdcxx\nCctpgW1PTvLgoBftu0vD+OFD4ik9B50xBUYFP7hJIEYOpUOcaHE1F7m2pt3L\nUoH4C5c2ZFe7SOe0M+aNbCiPo1q7023lsNDOqJald5bZwHxVz+sGs4ghrGoa\n2Yn16jwLIO31alnkGuICVZGsTfGv8fE6hwTJvnVHJ9Q8VZ0zB8YqknC2yaKM\nBOe8Zi1H+pc/6aF9AslfzJkWS+sJXNrmU/o1D8feXt8EP4oz2lifsavxEpc5\nIRO3pEHPvkjwY1yZISyFp0C6//CVZqs1CBJ4gjPPwxJMCakn+weduLUuSzaA\nRWTh0G1tJwlWB5qW+80YbHFzDjmmNhlK008XpNFl6B2xMMKUlYVtQMOUssZN\nTvKQsH98o1/fxi2AUcIIb4fiB3VkqYg/dyyzwneEYfCIVEDGqnwtOjIq1nHp\n/S2ebfdtuIkIVNyqRhw202v8YnDTfQqnlfBI6kRcYswyMTn94CYwKjdaQAsO\n/v/828ukkdFBO6d8B+uwjW55kbNVPofnKRcF+g2B4Et38oT3suhdnsywo/UB\ntSzi7FkRl9BcrbTTXx9ePKgFqWdDTeS/EZkM3uNu06/SQXBC9E14L9DMWnk9\nVWTh\r\n=U6HV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_payload_from_signal-events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-999a0a-kbjdjbfa_1592399506052_0.537407015153758","host":"s3://npm-registry-packages"}},"1.0.0-feature-1d1562-kbjgvhrc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-1d1562-kbjgvhrc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-1d1562-kbjgvhrc","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"05cf202cd818109ec522a504df34e9e5edc4e5f9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-1d1562-kbjgvhrc.tgz","fileCount":299,"integrity":"sha512-3R0sm0hyvvtH2VM6intmaHJJc/TDMQzXJfLOMxKq1It2bf1f6z6Lk6MHFclS1ZB/h/ruxvKYc9xhxncKW5IMXQ==","signatures":[{"sig":"MEUCICMxRJxNItubpgSPfoRIM9AlyMoWppIgSi1dbDS81gF+AiEA/fp9BlH0qjF706oQoSTTIMKrs7sOQCyFv+Mc7Ubpw/c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6iyDCRA9TVsSAnZWagAA8ggQAJ0Fu2WZnmB+7Cjgo/IE\nITuYLt0u9X0czzs8oxjNejEainfH4bClgFdtWRjKMbX0kJV2O9MJk/WHFxI0\nHilEGPhSIHd8+fQ+3e+ELAqOOVHy1GYkHsiA4FqI/1dHzLiIh8X//6NZncaW\nEmnVWLAdZ46zF8MC39EAV93MiYaSTx+/mv/O2CIWvriDt9SoYsg62ukrDiLv\nLXZBKAZs+Ge7CPMEZupzbo8XdJ7M/Tr2WIQilnMA5HeIAhCHPAJgjM6E+hyJ\nuoWHEGbN/RZxqTptWPYr6zWEYBjovlWMmiIT6b723O/LFPN+dqbevgFgQojo\n8e6Dc8bN3j7L52lBaUz/nmaTFmudkEmrfGCcsHXd1ZhfHElafYYIUsRGhGg9\nfHB0pk37uqMt8qrKjWSydSiuy5nppgt0uryz2KXW7OBqlVNrBrbaJxl6CHhz\nPCsWua5ywdvhCInObfN1WdYebRoCSIrdWu1y7rvx38sJg/s6CG0M2K+ePIGa\nb/p7W/dco92DK+G/ewehnd0s/ajYJaMqYFrKnJjizSMXTKN7zWbhoazokdKB\nyawwq4xWZs3kvjniFKgiueU1JI4/nKEYXdZhOwVSwvxUtKfoae4+/8j5kPqC\nQtG/QGoFA8BqR+iKQe+rr63Isp7fh55ZR2rUfl5CopCZtEkwknk1LO/Jgl3K\nglsI\r\n=OBZE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_payload_from_signal-events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-1d1562-kbjgvhrc_1592405117551_0.17852656019030655","host":"s3://npm-registry-packages"}},"1.0.0-feature-eb829d-kbkp7gia":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-eb829d-kbkp7gia","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-eb829d-kbkp7gia","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0015591c998c173a26213802598a77a673eb3f66","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-eb829d-kbkp7gia.tgz","fileCount":299,"integrity":"sha512-7RIR9ZOSTOqfguZFIShwLR01egS8boYcFdZ26QN1pFRhjDAUruvQzTY73scLz39BCE7D8adK4N2259gr+FLI4Q==","signatures":[{"sig":"MEYCIQDcUJtVNS/fQUG/xXlLSqitjQMtc1wTRAAuE4bErBKBuAIhAMFlUkWlFIwa6SV9RoPVYS1B/kpO1wxye4FpfoGP/w7B","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe609YCRA9TVsSAnZWagAAnT4QAKQbrPL31Ia0tmNEwV0v\ntq2fGpvGaJuAQyhqwPK44FGlCWjMExAJ8rl5dSI57B1E0VjGdrVnm6bET5k/\n/qmqDnpZyrPLWLZbHkfTl1NMxLteeEiKjPBvb1yIKleZIQkFrruj0vXH6k8S\nPM9jH/98f+5pxR6TqKxFvvSAuYJDCGyoNpOGyX8YlrluVPGoUKl4UBR/pcNY\n1S3BucMoIf/yx1yhUegOjTugEuoE7Gp5Q8UF0zc8naboFqLQq5dMfYj0jV9h\nquDDK6w1bxH49jqL8NYPqv71bC2kqeAY2Jpa9sgEDaMTdjv8SSczXmaf84aA\nD2QyRvw79E2XgEIq3kDjJMy9vcXB5wQ4seSzhAN0hrVuW0ZGbZK2IbrR2nHy\n5b0irXqlDXtmkuOa40jw9LJR6aEY6lOoNflxnOLqehjkkPu50Bmd/OeJhnnk\nNJowc7gy412vCbxqtuJBbUovHOBKbag9M1sZrfvY1ltIvf3PEHc/BuBdIvfJ\nbbvqU45FyrggvbTlnAQomol7ghcE9fSIOpgfyi4M1x2D9vpp6W9JSUrqokc0\nKGP7DiMOTeO2BT1W3yn1f+U6P2a+fgc7dEPkE2IRCruXBwHhFk/fGKzjfaBH\nHsW7uwXBMNclzsYmyO/H9fL4YtvbZd5HbfY58q+lequ03+1FaSljNgc3tGX/\nF0Mg\r\n=RrnG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_payload_from_signal-events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-eb829d-kbkp7gia_1592479576031_0.5312743414817513","host":"s3://npm-registry-packages"}},"1.0.0-feature-7fc3e1-kbkpqmdl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-7fc3e1-kbkpqmdl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-7fc3e1-kbkpqmdl","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4aa452b1b5d1dd62a2dbf91357011bd326481e7c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-7fc3e1-kbkpqmdl.tgz","fileCount":299,"integrity":"sha512-hgtf5Ur9K9uwSpHjumsjG+qoWBnBHihVMEpQgYVu3wG2hrRGSqDmZ2tGe6GMl4QNGIEzKABlh65NE+fL/w2xzQ==","signatures":[{"sig":"MEUCIESu5tVsmQf3klQDvoFRL3mPfc870GG/qyAfiRi70CGpAiEAqfgVKWJ6ad2X+5AQvfcwMJL7+4k8bMyKY0tKfHS8TKw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe61LeCRA9TVsSAnZWagAADssQAINMwQS6JOo9INBAQYH8\ny1WUZumF+QaSnbT1sDUJMjhZBI1doZenEcGL5JmgJqdsTvD8r5dcMOeiF0rP\nwVO5yHUUxRfuEJThk1DH6oGSygb+3eHCLwje+36lIUB4ls2WycS7Ntq8qhxt\nEm/zQ3apgO4QfEbJygf+uSKxjI/qXLMIIo+DiSRD2/UNMcWJtJHXEVAGRSnR\n4MXvUyr6vrpQHPDVpN/kJpw6zyuw5w/q1is7O3Un3Cy520ilhnx8FVbKkl+j\n3Lqx83sBLMgNobVxG3dspBQE2s55cgzLVOBeeJoe0e8TXbeJtruQWUtyZ48I\nNjAl8ATRQAcTpPnYOyVrGufTvhX117w5hOPam7CYfPSS1z0SxCTvVwDOxxqs\n0jG5vN7c0rC8oGZWeFWWrq32rmSkJIUC9dGq5427uVcjlszLFlBnjLkRykm3\npPsKEyXxJB0dY1aE6/pprhcy+Wta6vixDWvsZ9oFPXzQLDQqTYcSBi/NNJjc\n+vl2a9SwhyFUAD8Uz4jKOdSq5FH8s+AQlKiPq+B1IlhF/1KV9m4q4tVV6lfS\ne8eDrDYS9r8GhIYwHwxctU0ugGsycOrNBP1IGrgiSBwUJrRX/Iqp4dwdwa6i\n/6BhAbZZwGX6/O6eeDCoQ95YGD3XtVjY2r4mbEFZYD0kownHXTISlJyEvoct\nzYq6\r\n=PTKC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_payload_from_signal-events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-7fc3e1-kbkpqmdl_1592480478204_0.1642481840111929","host":"s3://npm-registry-packages"}},"1.0.0-feature-e41905-kbktdfne":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e41905-kbktdfne","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e41905-kbktdfne","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1a78d282b55d4d9b519f799790bfc0d30ca0bcd4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e41905-kbktdfne.tgz","fileCount":299,"integrity":"sha512-h0SIZwPYgBiBMD2I5msHldqIVJic+wimCO8eGppD/B4e5PerAxGmySoNR9InAyDoPGltBsfybopD31xqLYRSsw==","signatures":[{"sig":"MEUCIQDUGOajUWC+yQRR5XjOnGyKa3cqhxSJPUUtF1impb6rLgIgGb2DXkkkNG524XiTsMlrjBxlL4KeU0WnkKZUlmADw/Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1510393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe62qsCRA9TVsSAnZWagAAiGsP/AvGA3b9F1DMaNyxGq8U\n1yFFESc1f6OND4dUwvxxa7wdejvzD9YkatRLyd4Cc8XevHYta1hKsu4rQ9Uy\ng4cfDRZTa90jv4tENVJCDP08IUGxsOeaG3O6q0ws+7g+jdP10DeID6GWq/uE\nw/Env57iinXlqP33a7dJGz9w8kxOFMmWGDqKFYI7Lye+RnlGH8GAnQ1AHk7J\nTREbGOoliqFLbpf4TCnQ2DJGD+yIj59/RxndSO0NbypW6p3efgHsHxvkIN/U\nEUZsQrMm+yNFxb+141q9xRy01lgCqYgo+UXS7yEeBtxu5Ecw+Oq6CF/h21JY\nvBDwZxhnwqlYFMNWfaxG+syavP8I4IO4vjGSMpKxrJkCUQNG4pALCWVp56/p\nH7vJ40fsppBHEb5HoN8LOf1m/PCPb+q6VbvuhOK1rz727zbWClLDxdCHTnl0\nvV2eyRUS6pI9jlQoTsStHFSPVnHESxUzcI53Ea6jGEIU7fszfVc+vRg6fZSg\nhL+sqppyTkDFWwJjBxduSM660G3+hxupVY5L4RMWi2BTqZnVUEU1YUmDKnev\n6vOvPQMl4TrLrZL8IuH+Kfr0HlixENuiiJ7xkIjr6mp3FD3qQcBM8ZPXVnuw\n4A2dUj3Fef2pJGZV9e3v/EGBy5VTYnwqerL3Rt+L/jKD0vyLUfHYTShl01jb\nZT/g\r\n=/JLD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e41905-kbktdfne_1592486571229_0.9035231896782163","host":"s3://npm-registry-packages"}},"1.0.0-feature-52d2fb-kbkvx6po":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-52d2fb-kbkvx6po","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-52d2fb-kbkvx6po","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"60576bff4edfbcc06afc348757fed6e2f886b660","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-52d2fb-kbkvx6po.tgz","fileCount":299,"integrity":"sha512-uxFGFfaEKDvNHyO5PfFRwYAD/VOln+ZSHGsDxy4ykYGCjtwkdYsBiDjXq3OwlDq7+6g3yOAAJ15+G1BzTegrMQ==","signatures":[{"sig":"MEYCIQCqFNcOq5tJH3l758UfQc4h4t3EpgSBe9w+izu9k6P/jQIhAKkER1uOKBQ/s9/6hL36i/6/88vRAFPdALnoxDacdmyf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1510493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe63tqCRA9TVsSAnZWagAAp4wP/jnPVZRZEk+nh9mFxqi4\nw00xPwjKDzR8aVqfYlINGw+o+hLUFfjcgteykOLdilXQISQlaBIfRegCAevI\n/Y9Kr5XrnQ6E7eoE2io8XV5SIEqiJ/qgdNKAeE7UYV3fCvS7G32L4NXt6Jjc\nmd5dGHwQ1fMg+et506KmiejaqNrd+5NX4lrclS6oIayZ7KdF4AvXxv4bkxXN\nksgfCz7D6lcg+4H9bEQLHiBX4yQP+gAF8do3vdBBONb+rauhREZGAUOP/NXw\nMr9Yh2Ne2hUwuIxTpyGDenTASOJHfJB4V5mhDmSM8sJXuWU6fJBVBOgD7FC4\nHNb2G5CkWofs7+tkHeasVR2LWEGvWrMvcSbh4pELn90BFgGr5f/4k2F8jWaT\nysSUn6AkvA8+U/FBIlL+jI1LWxsf5IWSfN9bxoU+dVWMdfwygL+8fy0Nuybh\n9hRqn/KN67RpuBqC/XyWdQuPtlgyNiuRx60kvO4zJuWWGTbFeInEgoc/JY+2\nseFU7mxh870+p3iA7cXug6/nOy3KQcK+t3YNIkcsOXCh19uCgJHBfOwdcJ1d\ngIUpYTK+qTeTjMGrsjWoMlA6XeiDdm0qRkHn3vCnT7tycf+lya+OPJE5F62T\nvAJltH/Pg10nalyhbwMwUbpgzBzQlnBA46hUbJkCLvee1CUH9Oc/sRT6G8hy\nbH05\r\n=xXYa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-52d2fb-kbkvx6po_1592490858004_0.7861883414834507","host":"s3://npm-registry-packages"}},"1.0.0-feature-2b4d6a-kblz9864":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-2b4d6a-kblz9864","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-2b4d6a-kblz9864","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9368d75f2517c03a46ce294d82c2885010e25682","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-2b4d6a-kblz9864.tgz","fileCount":299,"integrity":"sha512-f7VQwhOjBZLBdUTBppFzUUEU8OyFaZFjiJgw7w9GynVvilUsuFNRch+Sm6GnJFWE2Xsua2NWD8oymy4sgzEqtg==","signatures":[{"sig":"MEUCIGc5yN2+AmRISo+BZuemlR7x7T7Uu/XEU5AD1Go/IfBpAiEAoi4gwCP8tTuOErTB5xHusDWKy0wdssqayONSkXOEJsU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1511257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7H18CRA9TVsSAnZWagAA7lQP/iEGciDH+8l3nlvCtHzE\n/u3XrF6pKYkzZPwuKGN5X1FjtfiDwbKjj4m1GqTuIVUGF5RBvK9Kw0Fbq+Vf\ny3oTl8rQXxjeX4vD0tHT1NnqgSTSoApeE8SnJFjHr4RcaCgTvly04Kp+fGYO\npfgG9EvqjhFMkiguEOqZf6xb5uqHC5nvX7wwcr0cbQX1MYgJOSVtnjj+nyPr\nBzup8Qzw484eVDgtvjt1mnwUrANKJWhnYhpygkmdocgc/tKHLwp+6rT5YL0J\nnZk8C38+NT3f6qpWCGpToIhMRptpeDy/bAWwds5BE0bLU+JgwXE5JeZkLrW2\nAOCvgbbXkxI2cHxpiBYFuyrqqWNhOQuMLS36QyX1gNEdIjAVveAHZ2MvqGcW\nrxd9G+XOB1TDowUXLFvXdEHh6WgFfUHxwRJSaDXlXrXjZmUWdJJkRsOlq63g\nettjNmWN/CpGM+XaIPmO+bW3JRJ0Co1LinpYTgOFaMdNnETm+QZzyc8mLkvw\nJ7BsyTHT3yhWNlZjLX7owraBT6q4l7GsBvxvTl8GSZ8k4WaK0O1eZl2bzQAQ\nBFmkm6JJbq22CQEyFbs+razG/zfJP0blV63DfX9m+fcgWo8sxML8tkDF6oub\nlQ9aAGmFTVFU7JLnHR9XOKwQcbkiiZCp7re9MKLWLT+tQxl4vPlWof99pCY7\nv9Ay\r\n=HFTw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-2b4d6a-kblz9864_1592556923909_0.9968899595323273","host":"s3://npm-registry-packages"}},"1.0.0-feature-d3911f-kbq5xmwt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d3911f-kbq5xmwt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d3911f-kbq5xmwt","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a1aaaf608fa0d0a91b002849fce5d02ddad5edd1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d3911f-kbq5xmwt.tgz","fileCount":299,"integrity":"sha512-EACQXJfMpQaunGwJv2+pGBXhABR4y+grzDVUpJgA2nJbzROIKRRfUavGLcwPvPXKWv2bqZJchBLMNWvwCwhVEA==","signatures":[{"sig":"MEYCIQCo5ac40DQT+d+8kv18vr5V18KTtsfaj+05M6WkPbDa7QIhAPKWF2KjkKnEiOjobu6XiyvDWW6N9quVHPICUYjLRiSI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1511293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8FoVCRA9TVsSAnZWagAAJecQAKEkYaGaAphnCoWZBJsa\nLBUwJ4MMgfN9QlArcDVWfMNTXHw6XJPRRcP42K11+Nr7Cqj5EW5s77GqNDjP\nVnMnVIEPXs7h71oSmxUR6YGyt2Zoo+mZ4rXmiJx+bwkJPLaO1t8m6V2JuvmL\nzcVk07NA2grf6cicQwjzU7WIu784GIXMU4oMDm9B0NxUCAP5dZORtppEBhWu\n63FlPBf4bX/FIFBdHLaByVD92dQs2r3kD3YfLZh8Baz19xKwzhlPZLEij+rF\np6DZj6/vXy+QznmRYbN2Cyaii21Ly/98tKrw/DhimF5Ld8jPcQh4CCFwWqw9\n3YDl/Twp4/4dEaLq3zntALdds5BZ1GnYZDYCeaNjthkVc6Wy9VY0HWeVtyeC\n/8u5Mzq6+OClY+jKMkfKTwwHwL4rPXmFdV+Zds1kvue1E+W9gAbnOvQ2/1TQ\nkjoSSZ0CtSIJWCRAcM6RyDKRk1bYsdwawnlwylitMUHQMTjMVZ098qGF4uTi\ntkHVNDFXS/4pbztiF4DTpexMUJWytpMi2+PKMHigNE1szaFylQZaZx4eSCWB\nJzigAcALdZzUtxw8FN6hnwFrcmtD4hv93odghI+8/QamjGZWWPY33464J1n0\njGWR84oCzo2GnvlFrQYtqcwHg0WyzYFCQqaEL37kUWdzzHlYpAOnUX9/oW1b\neLod\r\n=z1DJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d3911f-kbq5xmwt_1592810004841_0.2980943184160718","host":"s3://npm-registry-packages"}},"1.0.0-feature-14e9c9-kbq5z6hg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-14e9c9-kbq5z6hg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-14e9c9-kbq5z6hg","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"15346ab025754aae17d8aa97f73d883aa85c1899","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-14e9c9-kbq5z6hg.tgz","fileCount":299,"integrity":"sha512-xPvwm9yaCHLe3LsJ0XjghSFuuwOJUH5AG7YL8nAAZJ4eqcm+VrbSJxO0zQITnKmfnDyrAp3Bj30Dn80Y4VJHcA==","signatures":[{"sig":"MEQCIGg5FLP9I5BciXgqwLnSgtbBleebYywSKvjBSZaTcJ5SAiBdXSW59qKtKki8QMxwKwUyJVoepemUY0QI4FO9KJez/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1511297,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8FpZCRA9TVsSAnZWagAAO14P/37HQurkSc+PIFTVPiH/\nIr9OiRzALz9hwF6Q1peXeX/vEc3owhPb3fW+roiKPLVePXXZLetUDu+N0Rnv\nKjGW2HD+E8L8F+gjaYVWMFPAbaU0uaht97st9KWtakqOJRsDLTEPd/FO1NXQ\nQO/zQcEJRgCb3D5U1ATV1HNG10F6BnO3ABdNOId4u1a4GXSk1wO1vz6a6uYA\nRLqPsYTpTWSr9S6SlS9Dre5NBsuaC1ISrNNRlhgkaaXAeTGdzVqonEaCTNip\nVzA9GeiFbLp1GuOewgX+WcVZAfmgLTiee6IzHH/h291E18u3FRvUJZJ0exI8\ngIUvlVsuqI4RpZ/IVGMw/k/aa/810+5ZTfi4KyuaZtUwwqmB2G2CbtUoopHR\ng/RTsEBXWDe6fuIWo/N+5Q1Y5HUmbuLqMZqlDgevJJNChvrmyHzhtVurl0jr\nul1iGIGc/pS7mXy89WN1rxTC0ie5Qk9IHD7ffRX3s9+nmMKtMHTgme8QHgpk\n86rZDwxvV0f7YfiGRp64HEQKp8FlBsgxkLArYxzYu+zfiZ47grirnUthflaX\n4SQEf0HDd8gUSM+qEYubaQP9tciKCj6TUbcE0vqK6CJxolqASP35dWTNTmJo\npYACwswpugdFKN7iauhyo5xA0xU5iI/krW30g0e6PqT9NfKFGnZisrPhh5Oc\nNgJW\r\n=phxu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-14e9c9-kbq5z6hg_1592810072546_0.3249923289529064","host":"s3://npm-registry-packages"}},"1.0.0-feature-aaa302-kbq6ik4f":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-aaa302-kbq6ik4f","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-aaa302-kbq6ik4f","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cabc8112d3a88ef12553425f4bb36de84733266e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-aaa302-kbq6ik4f.tgz","fileCount":299,"integrity":"sha512-f+DbhXqFbSCvs5cMf5pyWPVQLAhcOLgWWLErzbUEePhaRDBuZFhI/ZR1OhfQ2BqK6aSDcDE5OJGut7NU4OnNCQ==","signatures":[{"sig":"MEQCIDCQk91L0OE/t6xff+1kjsd4xjbG5BpaMpBaD4oSI2kqAiBgrzNzXrNT1Moq58hGvX8XeA40O2KOjAQ2/EcV2f1nbw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1511535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8F3fCRA9TVsSAnZWagAAU+UP+QDYGDaobzXGha8o6OZq\nDsmz16a7AMsfDerkKeAOWE/95vXbZ9Nw2/ZMZNT83XwAvSwS1exvfU5evElG\nNun0nA9wES+Xu4OAdH05YRGCBAsL52djlWxGBsB8zDhrylfSn78OVr/jQO49\nF2qy9eBy4yZtbntluLKMkGYeQ/duILKNtT8Qcw/xamCFT9F9evLY8Nk4/lU6\nwWQEpFiS8uZvF8vezIUDs9/P38o/JmJbNI6VlKeVkjc6eGpd7jsTe5pDLepo\n3LOO9UR0JZplKy132K6mQGR1XXWIjug0xl4BoyAy0hgibXDvjhUBRjkcbCq7\nZzRfE7i9b3UBQfoU8uPKjao++JRD1TcdurkHMirwiR03u+janomfCIowv34y\n3ybSjAiiMmUmBpp14Shh06sHtsa8ESBNiVrH+BBRO2q7lbWGyWixqzlL/t5q\nw1QPh8Rvf4Pp7wwgwzu0ZJNmJlAItX3PH2Tob6xNks3CHGorx5Ff9XkU5Rqm\noJ+xWz6MHrEiJuoXmU3zAmxxRnMDgq83aly519hqJQ4K8sGCDcFxUBRLtR0e\nLe6YiLfAIWW9hpIgvcJGq26z/h5o9P9GUchnUTJTArw9AXOgEjKZ6+Yf4i+W\nElDL8gAQV2G5J5NI3RzPcv9lOj40SnhJe3iRaTBZ61OMTU5OjfGKqdKxSnAg\nIHtS\r\n=qIY4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-aaa302-kbq6ik4f_1592810975076_0.8170642218790745","host":"s3://npm-registry-packages"}},"1.0.0-alpha.49":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.49","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.49","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a821fa5a044dd7ff6dbeada453d77bcc6f868e90","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.49.tgz","fileCount":299,"integrity":"sha512-L9vVe6JNCP6hVV1FND5AA5hAwHCfMq8XEOX9zKuyWnSYT+ERSp+TygtnCarM+fkKnJRN9qHy+E5bNOe1A0J4SQ==","signatures":[{"sig":"MEUCIQDLqP3Dudr1K5uRXDuy8BxT5L+wZig94obR9l5l8t4AsQIgYcw30rcRVfxd09B6KGZYmmYl3JUQ8aYfchkxq2OOipI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1511520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8IuhCRA9TVsSAnZWagAASaoP/0cQJPgkVE0shbQBLv8Q\n4XOGcp7Bb+07VuzFqPhGJon4BYAxcSnTIJujfJPkBWp8ix9v3jAi9qhLPNvk\ncxSneU3AKSkKH2fk+h/3m6DaIi2sABki+tmPPharDnnTSAJzfWEc3jOAsVax\nb+k+0XCZaJFe3NvQUL4BjgRJqS+yR+SrVigqTU2g8T9usjTgCwczRIwWtMi7\nVLK0ZoZuziXNEnIrd+h866HExS67F0SaC8FYzGv7DOHFUzQ7Q3wWG0OdNMAE\njBw+YQrVkul609uOD+/8GEHslHCmiu1jOXPi1d8urS3ypZGtzqI8QOrOb8vG\nIyZ2jUQm+4K0tjRobw9y0pLF9Nhv1DS902vKcYcezp+tRENJtg5saDkdb/8X\n95r8VG4mLxRXpMPWYP8fu1E9J1J3o2fIlTnWS3TuxD+jwX8vjxxm4JdBizW+\nbjKpt5tSyGUqaSNdMP5j2IWJODuIRyq58BwvLEFOvouyLT8XYxaRYVdtyr+H\nSTf5CcBDRfVuxK2vJQH38s122ChiBm+p/7szuxImwf62DBCXIb+MRBQzs9tw\nvRhb7NeS3dSslSRJawRTRfwY0OEacP/BCStYp0dkOE4oWls7g1qBr+F7kNWo\nQuDWHTWXV7/Hy4pOApU/8e/EuvvNn49Wat8pW8BTdaqs3EMGU8pECRoLK3ib\nQgiK\r\n=BV6y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.49_1592822688719_0.8178356630182142","host":"s3://npm-registry-packages"}},"1.0.0-beta.15":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.15","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.15","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d817d403284ef3294695d2745131184812e7cd20","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.15.tgz","fileCount":299,"integrity":"sha512-AcLqV/yhu3hbF6cnSy9u77oldbwcj1xPUqnvc80mC51y8c4GwKkYyoY/ftZlhBT1DEYuYuWP/wCR5qzAQ6sjiw==","signatures":[{"sig":"MEUCIHYm+P4wz5VZUJ9GV/2x9qWYRfuqlx2LPUImBm6G6R+MAiEAsc5IeKuhCUlbQqBUcCTsBNvY/kRFFgOufQivLo9vP9w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1511519,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8aZnCRA9TVsSAnZWagAAt1MP/jB7h3sSiCsm2BG5Wr1t\nQhCeSxpp181D0pSSGoO4tQKTaRXSfWw1YmpyRzkLQIB/6g4NPmosUv9Xby24\ntnwd9vNaBMSvcnoG6mf/qkMCfQLF2v/MwWkhL0k3dqWNejz5hYkgLk2zEruu\nWqorfN2sYShhOMLpk8zh8PWVH16Zj49ra/AuWSO9NqxYo8oTkClGfxZ/BeOm\nRhQepDb1BkxHEg+2oKCCKnHRLxRtrjcawI2zbvy7WSGFVL8Yq4ASi91Ry9t7\n4ito9bW0amSwCwi2vFO8D7JMG1ki/XYKiRfcZ4C9waVJELNwuX6nzNZlC6La\nuLFO7T50bC/V4GdZekZFFvaSHAYl8DXPRh0QKoT9s/qbEC2KVIUjf/y90wjN\nUaw/FNNAS4gBeH0K8YKgKI96lNwFGaQrAjZ3WqMV3kAxaiZ4yJsqS1euCO3u\n8P+UTTNOrN66ah5EOk+iZv5izQyxHBzt7puZMs4XYuTaeGs9NN0MeZAyq1XZ\n4s/J1LgD4lWIpUP8WBqCe0pLszsPnMRqDgd8fi//ajI5k6laWlRAYlRqKwCd\nhaRHxRi5NV5ywWrI56iaR0QMyuGJcIo1V3loRuuQ9UzELTLn7hJBn4k+f8YK\nUYbho9jQE/k91XhAcU7lX7LAtjjPFRFPFDuBgN3wdJV/XcOVGCt24WjlyTgH\n4LQw\r\n=i3FO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.4","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.0","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.15_1592895079348_0.6406157738026652","host":"s3://npm-registry-packages"}},"1.0.0-feature-902f6c-kbtckiwe":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-902f6c-kbtckiwe","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-902f6c-kbtckiwe","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4a77879c36fdd8dfb2020d74ec797dbe8efa3e8b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-902f6c-kbtckiwe.tgz","fileCount":294,"integrity":"sha512-Njbwsruh3UrNU16rhF1AuGb5Vqf2JHq0TTDid/4Ymmgno2/lx4FSg5VZrtUoQzVAm3D3sRFuGHn4irFLE2lrqg==","signatures":[{"sig":"MEUCIQDU89Os1+aRGMbLiTuVwnaUQi3+zXx9nBX5xXeNAhQ4hgIgIwlmLP53wjrSHu5qCukD6Lg+OxDDen8l8XPOUFH2t2Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1443337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe80ouCRA9TVsSAnZWagAAaecP/2KcVHRIFk8Gw/aDQyKJ\nX9SAjBPf7TB3e0DVpbnYZqIbgeBx3LobVVjH55TvFS9oqBAFRb40T9uDqVHH\nYlIylOqUKM3GUeaMSgtWXRhENfwgPNUL1Zw/oYckyB3yl5iecoAXQPOB6Xv7\nIwekKYMP2dMRx6nDwuzrIljBE9vET1rTEFdwmPl7LBXUVGcRzeBYKTrbZI24\nopjsezUry45E8JMG/zpE+iocoDbE7CKj1F3TXAgB5HxFZX7/fPwcnLTeyI63\nCigq8LCQ2jE0z6UXuAVzgo1ox1fECW2Hug/cyl9gP9XkUl2dU6JVWnG0VvUl\n2weejkp+Leoi76bqPjJKwxA+6+4ORFgTdApovjRRXLVme/Ky/wfvylmqXDUV\nvs2r6Xj1HwhQqaycqYgoy4ZSW0p5OWBMaJP1sMxzMwvLJkXxT7I9hh0B1ZGE\n8+w2MwmagmWT47Pl+gC3Dh8EZMieYljYjxtXmipj7852fDUmjHxr0nSSaXYn\nS2IoMtrVbuDI018yVlCytlscnDh5ySGW6sfYV6Cawo6GiVjEzpAXF/Dh/z5i\nWpg2QfE/UFf5TcMIbpEMpr/vmr2d8efyTI8V5+f+pO6zJvbAEo+2L5HhOK4Z\n6MaIrmYFh9iYaPPDls5fTO2rKtyjATLX6Lpj9sf9NLBiyVZNhAfejuWk3zWq\nVuP+\r\n=/KA+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-902f6c-kbtckiwe_1593002541489_0.543261422676907","host":"s3://npm-registry-packages"}},"1.0.0-feature-e6431c-kbtd2vux":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e6431c-kbtd2vux","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e6431c-kbtd2vux","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"65a8dcd229ee3e321bc97b9f13f8270f8a9ac2c6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e6431c-kbtd2vux.tgz","fileCount":294,"integrity":"sha512-JyVF1UQq6szLuioOqhTbFyuTHGv5c5kpAtlqH6FefQhGGaycloyizYgHQVjxJo9UHDMRmSA5S5+Sw9Bz4i6+sQ==","signatures":[{"sig":"MEYCIQCD7z97jmrqIDuFRn7KH5My0auMIPFwVpXYi1nI8GZP7AIhANeSqGUcan1SpA9xAxv5oa5r7fedIEb+h+/fzR/EIgpA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1443337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe802ICRA9TVsSAnZWagAA1UUP/iyxZWyHNTX0/KDuSnHX\nQAR4XZ2gHK6S/OUAqBUXfyT305TnLCt6evI0YNJFVsvr8uYBRAhM6y5gObae\nxSab+YvhaUuEWxqxmDtQmnhmsGANRDts/zccEUo0/u9nOgU42/Ewsrreku9C\nTF8OQiCxzj/IbGP+iw8rRNZ+5beNm1VDxLJDTDMG+xZFa2njEuHp9BfsuVdr\neEKOU9mxrCfbMxxz6K+cZoAkwnRFd0z6nSpUEtMRZ7RNeXwqKuV6qFMeDi47\nO0cD5AATXaARBEt/CdtR2eabVDwQxBXxn5lnUd45lQIQa6dCO24uOSHdRl/7\nuMpvbH/PVbI9YWwdzO6jBBxzsEahgPpbpH+hJZckYDDHhpbps7wiL41eVD+U\nX9gE80L/dtOlvbNcD1AYHBEajvIgaK9yyvftadg07P4VwkhqEapfOBRL5+YI\n6iv5YUmZhbfWGMJbhZEZ7jdS3reOC6x273guSFnfNmBAU7A9RGZYlcHVRO3C\nrhz0KWnpN7KpNrqtdspZorBTtQMQ3MDp/miPLX1Z64PkuztsmBzmY4uRUCfD\nK9iGe1rvQBEtmzWt0oqFhD94qK9s9ceoFi9u+wD+nxmaRzpiHnpBfExit0Cq\nq6U6OlKlchGALCfZx7LO3lO8ZtjOsN8L1BJmRv13mx4aScc9dXfHWiYW21n3\nIErN\r\n=QvkH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e6431c-kbtd2vux_1593003400041_0.5201296550223486","host":"s3://npm-registry-packages"}},"1.0.0-feature-5ec0fa-kbtf53qu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-5ec0fa-kbtf53qu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-5ec0fa-kbtf53qu","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5f63bfd7b728193d86510a3e736055e0385c4b2a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-5ec0fa-kbtf53qu.tgz","fileCount":294,"integrity":"sha512-vLmBTdXO60KYtsEc65LMqO7NCoZv4J6IlaILR51pj18BH3rxhdu9obksRDLFo7dTJbm8L7PMbl68vva2S2oi6g==","signatures":[{"sig":"MEUCIQDzdrA8nnoCedQXh6TDq0C2C097FHdhtFV+ZJMX9hjJ9wIgbuBiVeODtNLtxajziQmOUvOHbhMoeAoiIF3R+blQan8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442328,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe81sRCRA9TVsSAnZWagAAGT4P/0YboqSvrFHKi66XlwRz\nlB2iKek2C9gyzqI08TQX0CAhapmC/Eng1I8bsTUPYhdnBs8d7PUc6hknuYo2\nrMYzWvuABWQuS7ykRWHh5ugdA4kUZwLr0FGpp1hitvQ5ep1y0hDEq0y6+hax\nGrtQ0y3DaNLpsw4KgWYTASFERiu9MbnA+nr/cZbQ5OOgR19inJz8okYFmKY9\nSv0i89xJ3Zt8V4WjFkto55LvdpjdjZRnvJIJ9E8WfLR2YOP6LG3H8x5IZDJB\nKrP7EWXTSgulzWcb8g6h9LhhpDcTNkqTMPM/jM7u0hNC97MrfgV5CAFn882Q\nd5QwxZyJggnLd3WFgYpiejXwgFCaEV7p01KxnbtCsR1ZfyQ1Bz1R04mEb83s\nvXJdBmBCX1kcWNFGLRWOwGls4qH0A3u2UIm6ZW89k3zgEDw1C9YCuX7xWNek\nXbG2vp/SPC6mRXrHcJUCywkxdpdlMokQ8Ao+HiaLBlYvVDMVQiAqMV3SQtH1\nURD3larxQbd/g1OACfpEhlIp7F1DTwZZQkwZPtod9WzfQqtoxVMEDa+mbfcm\n1bQktEuM9i/JLv5BaFoANeK+lQpxCao4oS7XHrq/Y8Ti33tmlz+y6vQ2A7ys\nByZCiUaMiAMrpErFW0z4N2D9SoZvb9v8bK6mnQWvLsSDspH0a9YcqfwryVaB\nWXmS\r\n=41X5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-5ec0fa-kbtf53qu_1593006864642_0.867805473524581","host":"s3://npm-registry-packages"}},"1.0.0-feature-1335e8-kbtg44dj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-1335e8-kbtg44dj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-1335e8-kbtg44dj","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bc9950dcf02bfa0f3a07e6337143d6d958d728c8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-1335e8-kbtg44dj.tgz","fileCount":294,"integrity":"sha512-/x+JmgpIWSr1H/Vjk36Jyw4TEei3jvY5HwGRqd3JG445QAOODBf9Ns/s4mCp3fBTT6qrO3Ama0pES0zErRfGFA==","signatures":[{"sig":"MEUCIB8wcro+SE6O0OXtXWD0g2wfos8Q+LGLKokWcApll023AiEAjc9AysGYuLRV1AHlLgPV3EKb3IzIhreqtgnFocQIIRE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe82FxCRA9TVsSAnZWagAA8O0P/0ZOv0Jf2TolPzpQtDoh\nFuxIlzVLkq1niw3WUsAKvKXpJSe2ZXwUF5ImBntqRLU8KdzHMWwSp/0tNGIG\nb4VCRw6gcrlV4/SnLbhl6RvsS/YsdHvvBNoJMczoqrbnIQxc54Sqs4OnWR2i\nm+/M9B0YK5Vu3QCOeNLHbI2G1xfeSawnU8788p6J8zK+G1PeEXLgV64wT0l0\nTvvutB32k4Ci/oDVEGT2PatuB0p3ZsjiYO6Fj9dvB/PrNfpDPCLKKlfkOWbW\nsGVhxjTcURVoP4fn2H3599t1O8BDO5D63K1+qPHMaeeW7cEGho6yyEhN4PYD\nguWMXCGuA9OgM20FMwJVU67FE5/gJEhNdiLUyeebUBgbbOuFXsSPIZJn7zTQ\nzc+NjkGoBeT8Cjt7TOiVLaILEy/vD9I2v/YGN9T3gTWtVbvdKZE3V2liHOvy\naFSRSVT1dtFyWHIL6kSSCdjhPEbnbIhJhDeBLV1+Fu/7Jaai8DXulahsBA4+\nvEvbb5fIvz1YGcQoH3msS+3TxBHUZJop8f3cfLWomPFhpVqgR0lmWLmeBpl3\ncbAIZ0+OkTjfKCzXIZNFVHnZ3MHyKdpljjVPC0z51f9wYfXkVMK54Ot5g/BL\n3JBJcqViWnXF9J9bZ+gwZbDWuPVkRJ4PT4oIEkDdvBND2YYfTRq2K7AEruEI\npzna\r\n=dAM2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-1335e8-kbtg44dj_1593008496709_0.26353117764581824","host":"s3://npm-registry-packages"}},"1.0.0-feature-a795ee-kbtgfn4o":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a795ee-kbtgfn4o","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a795ee-kbtgfn4o","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0231deea8211fc0170e06c0f186a8713de1dc681","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a795ee-kbtgfn4o.tgz","fileCount":294,"integrity":"sha512-2HxpfGRYHr15y7NOoWcAnYA+fcC/zkOkW2/EtUbY2rk2te0Pv22PFij3FnkJWScuoYB+8qU7cT8RT8vQxrkc2w==","signatures":[{"sig":"MEYCIQCzQ3tPmJd/yg5GqLEq/Oz5MNgMqio0sQ30FM0W4Kx1kwIhAKHPmh7mO8FknVoV6jE1RyJCV3YiOYsuFDBhU+V7OTgh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe82OMCRA9TVsSAnZWagAA4fkQAIkmwVVm+rTMjw1ctP+q\np5g0kKIa037JTBWD+FU1TWFmi1AUZcZIcM4e/fqqbiQ1S4c+1AlLQrPOJO4R\nDtmLc0MlGl/p+C1oLhfbsSc3YlRpxSBZVGmQFfX8Z+JZI1AXhWu6+6abmFfJ\naLOpOKA9ijaex2tKfMO3CsrECXy/Wz0NAApOtKEvE5xjMpYz2PGcXQ5p3TqJ\nkSxYZDd3Nvkqsr1fU1EK8ZwwJDXJOP1Cl4met6cn/NW2eybxzBiLPA7uMGUL\n+DHUAMq5YE6TCn/20qx2MZ+I6sqMIwHGLhQvVtrxaFxTDBZppzR/+KkyHXDv\na5bfRpAzEN7xYEbWH1ndyH6K4/edNt5FbTCNmSVnmCUFmqea3zSH8OXVxiSZ\nLxAruu2SDMTzXUEA+JU9zqUp3kcM9B7Uv5fPRnZ75Byt0DaAru4VX2qmVy8v\njP0EOm1rkLoGhNWgIru9KHkE9j2ulsXMV0IXI7laO3jst7f5ueljUKYYyNfG\nb8JmEKQVeFGVBVAUTMcerrGJj5zhaGXf64AJqX1WuenNunZTevXlB/3DvjGo\ny5SJGdXQMSpebQs2x4nQbEu5kpk0/IYHbGWes5Iy6f8tYQLCX+BwIjm9t3oK\n0YbZKkiY4MVLjURBs/zHzztmch3cjnYJNDvlCtIUesot5UtrIPuwGX2NCCcG\ncf0/\r\n=05/B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a795ee-kbtgfn4o_1593009036334_0.7201414921466747","host":"s3://npm-registry-packages"}},"1.0.0-feature-4c83d4-kbtgu5m5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-4c83d4-kbtgu5m5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-4c83d4-kbtgu5m5","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"993493d6f260a1f414047fe11943d9fbe170304f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-4c83d4-kbtgu5m5.tgz","fileCount":294,"integrity":"sha512-rzog1LG2v+HHaKXMUaimr+hTX/kjU/oxeK4tFC0Tv0n4wC95iHCJG17T0vZ2phIK6TmfMHhYCBizjJDpiNjzow==","signatures":[{"sig":"MEUCIQCBvb2MITQpSlSY4cjqGG9YKmZhetQgKKg5445+dyIQTgIgauzD7S5Lqmn/llSEmXerRibR6aEiVBHHkbWEmJNxOgw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1443539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe82YyCRA9TVsSAnZWagAA6qgP/3YllJ79kqYw9O223Gh3\ngKXmefSqnDg/3DdAEmrtOnoONE+7oWtiGyCCTBLCMapx6YyycPbwhCRdCM/x\n60dkBHPqawjcE3LbocQEW7kTeuXAUvR8zs60AuDAnZ2SA0iB+6x3h10IIKoy\n0UohdKE3NDIR2nHZdEpeXmr7nmo580C2XESuah5jQA5OdiyapxYhqY81/tXQ\nBlHCbsJXrrRWJQq4SR6/Z+R+d6XfcpJzcMELn6Qdko51Il1Z5HAJSkWfOKJr\nQaw0LmWjPY9HPc5epbYDRT6qsAe8vij/mhJnsdzH3EzgrXd6dVd2d7KcHms7\nAY6EpKjaMwe/fpGRB+IGXN5RocX5IJatZAP2ENFBat8ibOQC6Q7FsFpcM44J\nDkbb1Zz75QtZr7ZYWQLTC3tYr0gknMn4xaziyZpj5kU5Br/z1h5AogxiLhA0\n/anB+B/xsW4C8k561w74FM62BeryKVQGQSasDPYHiqIjlivgPTnjA/jzmcMw\nJoSJRUleB6Fw7yw66/qvxEnDsMoCzs/m57LKNih+6dYi/5n45sAE3uk5mZ2M\niiF1glod1cZcDNMpvY9gl7PaL1Fit/CZqD1Q/04wKVpfEmpF9ELM0nuk8DQC\nI2nl4NafwKl/d6iQ4KQDwew6tGOhFlwWqBoymOZgj7umQKJoy8J7NAOnOTxp\nPgIq\r\n=5/MG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-4c83d4-kbtgu5m5_1593009711631_0.14522678910042597","host":"s3://npm-registry-packages"}},"1.0.0-feature-197307-kbtjjja5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-197307-kbtjjja5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-197307-kbtjjja5","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c3beda46497ae6a672e9e5370fab2cf3a09df75a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-197307-kbtjjja5.tgz","fileCount":294,"integrity":"sha512-/b3lQsdc9S+d8VHVTnhEtr/hxVpJ6JkfrfLh2XwgxC+GvQVdX17EJcXfsLoR9lNObCJ2RjtjJEcWKpHk4SqegQ==","signatures":[{"sig":"MEQCIC6z6aCIMW0dr20tKu7ul8IO8+6GwkI8aHxPk/3b9cBnAiBxLNZr9iyZZleO4C/pKrtakqglUfMsphdDVDhXVu4lkg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1443422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe83ftCRA9TVsSAnZWagAAHWYQAI5MSNiLNuuHFznfi6l8\nZKuwIYnD3LZVxLgoM92OzlZUi4jNjsBZb5aMoFGYVgsFiRBDVqFJF3DqAT2f\noVqFHyvjkP24I4f28l5a25LrFqtaXNCB8G92SeUiz4iQ5BDHo+oA8lF9fnlh\n/jBtQnUsEF6NtRkDsHhEMlKetBjSbJQZd7IDeBPBFb1xhQZ/IEiJW0onGl0C\nOnAIvTESzcNFWamAnSUwjVyaOfiBSI2fe6B2SmZqD4ziJATDRICYIHgYLL4H\nLuRnbWnTsZ4RIppjH0L8Ng6921zgF6+mbjnDr6r1LY/stGp3k1lA7WDVGdzW\nhYBsxGRy/oeoGbW5HSEB0zjq42ymdIUOyuJUw7GmUlvUzNFDg5UjSNihJKGz\nb1yt3Q4DGJ0jI16arprCwGn202+X0+Sagn+eHmaweRlC5gqK7AiORT91qt89\nbUSEXh5fcy1r4590FrF/oFT6QHcwLYWxTPlNGjla/XJ4gsuqMePNmCG1DI4+\nqkhZKIUKKo6nOFkFcp41EX8dOE7IsYpopdpFN0fl2DZ6XafF4bFr5sqdZq3H\nc39KJ41560Z4xcb9X8ETkRFXS5nOU87XvRVMNeY9ND8POrFrX1H6HjjvmPZ4\neoBzQd2L+4wLkYNTnl9y2RwgAiwxHoIfE+U8R4V+4DkOCnOxvVWm2AOqmSI+\nJwK5\r\n=KwxC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-197307-kbtjjja5_1593014252980_0.5255594001304358","host":"s3://npm-registry-packages"}},"1.0.0-feature-a5aea7-kbtjntju":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a5aea7-kbtjntju","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a5aea7-kbtjntju","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d5b12353b75ff886b45854a17f162b8dda6e8b47","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a5aea7-kbtjntju.tgz","fileCount":294,"integrity":"sha512-Dz8Zny/fFy/QqF4qaNu/DvJR2mM/AxHUch/vG/XNx2x/mzXQrZsnyBpiSdA4Yz4O7IGit8fIqGQx31Nb1LAkcQ==","signatures":[{"sig":"MEYCIQD9cV+yQkmbpSU5ymsO+CUBmqixVTotfB0mOSQSZrigdwIhAICFSK61Lsed1ImS5R/1g4weo1zYLOexpRJoKRporZ2Y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1444213,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe83i4CRA9TVsSAnZWagAAyUYP/AnG2ZKw+DZGihkw8PI6\n91Yke/iN+gicEQWi4pV5jgV7HkD/TO2KI7BG3kh5uQfLt4vhx84W6j8pe1j5\nqav9O4MHJxdDKhhCyY5cHC7+yjjM6qwFitPBQnrZn37DK0HxjkJOd1iGsfAT\n3hpEiBG7qnKcHK5LoepNVOFlrGvBw59FfPmTVzFSF7iuporlN91DdkxGwAz/\nuaAFSTRbNkVEYPvWV6NjRvL9SScWAKtoHRdzjQXbM/QelkXJnfjVOZxacLeV\n1MptrKXp4RMOv46o5G4eYH1GyWjxCz6EHbp/FGe8nvVAf56erX+3Hh75ouIg\netf0NP01cCqYC0yg/XFvu4wtR8RqKmGeZDrJxVUcjbHrUyE/DpDsdloVUCNQ\nWt/XA9gZwpC5S7xMGkvrrSIfboVXx+djDHiHr6tnIcn7i01sYD+IMH89gxaf\ngjl3fxm5l1/onyzz3OEf1b3LHGF1jfsoaTXyx8zKw7skpv0pFLZ7tQtOHBDA\ncnW61GXPcOuqqb5xXkeclec818X0CYAEHW0eXYBu6iExNKrJY8HZ7NzODjiT\nUZZj4USHg947pvqCzqOzqi2cQbQdnlQoRi7FOLo56PEgohA/JPBSppmuQ1/r\nc9jSWKLCppk96nP1PKi6knVhSNG4ui7wM6mOcHBG7vTDTD6FtnFjXgEyCh1u\nGnWr\r\n=tAhu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a5aea7-kbtjntju_1593014455593_0.6819373573582919","host":"s3://npm-registry-packages"}},"1.0.0-feature-cd6c2c-kbtk87gt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-cd6c2c-kbtk87gt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-cd6c2c-kbtk87gt","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"194c52e62ddf9600f67e1ac197c0264ce0f193df","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-cd6c2c-kbtk87gt.tgz","fileCount":294,"integrity":"sha512-A40mwYitLWZhxBybHa9iNkzCjzCxxkcnqGXpyK3fjKOzIS75w54gb8W5jTDP2aZHLHtcZP8JjNXPwrGUoSIbaA==","signatures":[{"sig":"MEQCIF54jDfqXkNhQ9lEycCoU0yuu5/jV6vTek5mvzZm+yPXAiBUezemi1ShNhK5i2HM0bCtdxw8f8gDKIxbOKp0uw+hYg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1444674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe83x2CRA9TVsSAnZWagAAC3MP+QE7ghKPpJh5BATJwuR8\nzxCeUnvayXvopWJuAnazdZ4aKvxjOAQzBIFGCGnXW8PasQsOTEaiCTIHcwhf\nx/hUkNS3mrkANhUU2zahOJ3AwG+VPFMFdpKzN0c6UBdVKrcCfZRWO1h0AGPS\nQYI9/+iti1aojwryIAAMxddGa/jL+uolr2EGsMwoQBpZdoj9kuYYl6cs4lyC\nG92i4mDLGb48vlzYVhVNcjn+E0+FHlFu18f8TKA8Ds5iLZi08lR5X2Fbz89d\nduG366orSxsx79FQhyHMqKys9OstGgjyr9JtIZ41jEugoitnDySSxgZWViAe\nWPYk8DfLZplK2YcjlK610Xle8I3SypjDJQ5X1beCYYWYssw8WmOhHscNg+si\nhgIdUEORpBLUTiDDd/e0q0OcX4tBd/QWMJEPwH3IZPNszgk69kdJZrZzCZ1M\nfVHLbJW555Lvs6rYOLsR4Pc2VFCcoul378uwgmGWrH4eKbaM6y5D8B6/4rxt\nppA4rdlomuB7Lohwgq5rqIB/y64RpsruUVm9TdM5Aud1TXqW63IUz9SiWggc\n5U4+/+pneuFLDfHStI7RRPvWsDKQ7XLkxanAaVu+vqdThR2c0CkxHKfRclg0\ndNRRdEU3f20U/9oGAz4zUNBGKmgZP+8g9RRyJr89J3lEnPVaTCWIJcOXDBRb\n4VAX\r\n=qJb6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-cd6c2c-kbtk87gt_1593015413381_0.686586299746057","host":"s3://npm-registry-packages"}},"1.0.0-feature-172dcc-kc07lrmp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-172dcc-kc07lrmp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-172dcc-kc07lrmp","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a844574a7ede0e4bcb7bb1e8c147f93ed6d8b74b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-172dcc-kc07lrmp.tgz","fileCount":294,"integrity":"sha512-LRx6swih1EPBxQCT39Iw3sYaW72E89dwW53WtmZXxpV6K2TZetph7ymA0q8aAijd4lezkrRF6eljCEhFK9lp0A==","signatures":[{"sig":"MEUCIQDQpYhIW6wboJfaEKFwiVdcxK9kpw/skvpfuZwIjU4nhgIgLoSdxzq/dUhtYKxioT1bP9nCCYhSm5Og1qfGCv918f8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1446889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+Z77CRA9TVsSAnZWagAA1CcP/1Vi5MCPq89wSsqwNlZS\nAyDH2OTPSAXAzU/n5MuaCBE5v+8rgmh/VFCilkP57sKjQrlaEPyhPjtTmWEB\nD3TPPVNLn8ZqU6jbBbHb+tuszAhSOt2toszXH6zoKoty/ioXMq3Yxp/L8eMN\nDnewWAf9Ri/l4OHmUPMKDmh6pNUfvWiY/V2uiYhwS3Qp+OFlDUFfWc7hLF//\n80inQ72mDDzBmU/B9Lg2Qu4MMdvb/NlIca6FBYehH+5pqFGs9AVgF9dETIgM\n13WRr3S7mMD+ulzrH1vy2j2BSBJEeGO86Az/15d+F89c39GdieIVLpyhtHIB\nb0gLTAurwxShDYRy+84qEUWhl5z0wILcmn7I59CEYGocks9GKjaGyuielFa1\nO6xEt3u8sn2I5inxI8mai6j8SAJcZk6N63QRWV6ZIbfBH8rxwTMNobaEcbIT\nbCRkhCLHtRpte+Hix/1ro3i212zhcund9MgHLJHuRWnkVPnU+dD/uxZmk+cq\n13zlR3c9HIyOXyRQf2RiObGlCwem+HKyEY/oiYa1sNuLyj8PZJxgauD0C7NC\neKFB401OOCzvPbjDKkGXafDjqIU3u5jioEm8D4GUxKg+51ZqjIHCP5r9drFT\n8DbV4XheSp4m8nS3KKbYaITyF4xYQgtzyfTaWTH3W1M+m0PF1crc2a9+Z2K7\n0loW\r\n=5Oc9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-172dcc-kc07lrmp_1593417467195_0.6173251023115123","host":"s3://npm-registry-packages"}},"1.0.0-feature-3de560-kc0846gt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-3de560-kc0846gt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-3de560-kc0846gt","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"144751b6f0d0c11f3d6125f3835b712bc57d3ac1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-3de560-kc0846gt.tgz","fileCount":294,"integrity":"sha512-1CA6XPSbyGrtxTo6Y4sWBg/jdbqT0U//HVtJWce8y3Gbru+E2NDWtNyKYn+L2vLFLykIl3aZ0FXYf+pcf07p3w==","signatures":[{"sig":"MEUCIQCbrxcLGhyd+taPVfkCCOV6neqOAHA4g/aYDulkoWvsoAIgQ3e/7vFeutYX+0gCiJqygaZW2nybxtxUx3tKhZixroA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1447211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+aJUCRA9TVsSAnZWagAAL+8P/RI0XjooLewkWnPKEmOR\n4kO1t2e12kDxW/WLyeW9Z65MZ+si4rmrKo3dsSlNUjjUsV3OU4pXRO5hHhak\nz9S8XoWZ0fn4clrFt8OBgpSkrtxHNaZPqjQtU1884IwlXjs/I7ryrQWeRYGO\nto/f3LpcrppCx3xwkNNWGiUYCUw2mIOV6ErWpo7j5pMZkp2EPNOa35eqSKmz\n/xRrox2KzM9Lg6uGRDK1tjnCrW92TZt2C0m4jRoCv6oIkWMmJicqqEbzDMFS\nbdpZ38OccFr8dOqf/EzHm1Abjxxy1Sg/94fDhrEZj6GI0NEA6o8MsKi+5WI1\nSx2tMkqb9vUCdcMESU58jZSNMjAq8oRleZJBv79H16emMxn5/PrJdYMTcbfk\n+nNNM0RImvxMmpzJHBsuthnWcRFvX25Z24gsdTqCud2NlsjBLvKmJsa6ifQF\nclLDXHmD9gd873rg9njUmM9zzRLI6nyASp/4MlIIwQnO3yuL9Ez9DncPrTfq\nfNyB/YVPAD8JVOKJm+WnXNQKzbr3GRKa7mHY8x8p952bpjYXLvgPLiSWzMLQ\n3sCY3KEXeMOSJMxDh4GiQI9fdavZOd9kYajeJe+66A8PBUOzlD+vlb6zwN6f\npKoJAh0PDeLFsmTXwaNDOiawOEGUyUYboWzRDqBNRa8fhvuS1VmQoY0VWx53\nl3Ag\r\n=Amhm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-3de560-kc0846gt_1593418323774_0.6742460259380108","host":"s3://npm-registry-packages"}},"1.0.0-feature-cfbf73-kc09wgt4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-cfbf73-kc09wgt4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-cfbf73-kc09wgt4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4ec9ab745237288eb0d3c3b6a656cc48b1a93725","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-cfbf73-kc09wgt4.tgz","fileCount":294,"integrity":"sha512-9hu8cLOWF3yi7BDBfMjiD1HWMytj+EjkUpdAZA/73H+peckXZXxqtCtBg4n0ds2Vgx3EMj2nHfK226kuXicPfA==","signatures":[{"sig":"MEYCIQCbkt7GFsqNPcG3sxpKjE2Ibow0FoG+jPCeWYq1fak3lgIhAKmOH2giuWrJ0m6zK4smGkESsL9Seic8GYSe8cXwFuZc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1447353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+a4OCRA9TVsSAnZWagAAjT4P/A3XO7qeFhJDnapJmboD\n/vAeWlIjgF4C41bo8MJuRtf2V6DqJXLafylDqNeWUFHi49c+z938efmYK2n+\nAmNGRgfxButQpJFi0xnQdjtt13Ntt1LWU3144FM/tRz6Lm67Cd7wDfzsm63k\nesHsFuwwdTJMQBjdcisLYgImEr+KXqYLcNSkzOUfT4QTtU40ceJhhG4moIV4\nnSLuUM1eNbbYLfgcvIFqoAQlb/cE0JVc3xqpAsTpTPOWdlbPi4dHDyz4P/4o\n/Rnclp4vXgzVcApLDQ5yq8FlrBx3wPAcMaWw/r0P0svHh+SkJpufXCpxwU/B\nDYMrca3oPGuiIeFgpdeXOvldA2eNJRbzeWfgiJEAoLAfhscSEhwOqBKhr57M\nSvQh4GJi8vWqzllyyyJbdzU7hdsuY2IcvP+1jiBYSJrpdxxcsPHZ+H2oEIxU\nf2Joc6lbscljhhlmY6xwm9/k6GZ8cI/ttLAo6bo4yF01Xf8vDcO2kPcJ2Edy\nmFgvXa+FovF5XrUn18hqLnY79jY87uJG8SoMVpEAYQJR7CnnA9wn8BWom+zp\naRGltrPwIPmKf5Tl7i5e65RXp5QJtNsZ+upJ0qJW03hjuY7Dspi48bEUVmCU\n704yz++Fe9d3ecl2Nxbm5wdnUGzHDAGV4KIK/KAekuSb9qa+vM/MvIYUaGdz\npCjd\r\n=k6sV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-cfbf73-kc09wgt4_1593421326053_0.389581353374004","host":"s3://npm-registry-packages"}},"1.0.0-feature-776601-kc0gz6kb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-776601-kc0gz6kb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-776601-kc0gz6kb","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"02f05bd33866127f40c005d3f1d373f8523776c5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-776601-kc0gz6kb.tgz","fileCount":294,"integrity":"sha512-2t+2KoAPHvrkyVFjFuS5kKOXTy+6vpmuKYpMcFvlcm64duQrUoUTGzhOKOB030sXtkW3hOTOQc6mkPhEb6EPzw==","signatures":[{"sig":"MEUCIQCaArFC7nb+2j+24ta4f1Q0CRzQ1J/hSykx6IAM3CIiuQIgN+1S8ksIeXhJKPkDyrOt2+4H0kvRX8j826K4qEidgqE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1447244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+dx5CRA9TVsSAnZWagAAM9IP/jV54RkIqgmIg2lzLrPy\nWR3Vw7Jfn+HhYWb2ErU5nJcrxqUZaWMcugLnbcHrOfW7wMmmHd8uPHo8Rnt/\n03DjP5R8td8eR6TOGF4HCbRXv0kEAAFNoiUvGj+K0N5lmqmnsSZJtnpvh3fG\nt4oFFgn2BFvFCM8tKA4V4gijpyMJtiLinsRPdnuXnkIE80bZd0CxRus11Caw\nb6/zdjZCYn4ksRaTfhLlhVfwHlitwrixZJToFItNuPkUFUnTdCZD9AL8+CSD\ntPK8Tgpg4rnEmoZsKhjqKbtR1NwHgeaA8xRRhk88pWFOhk7fUjyQqPA+Bq7j\nA4MprJl4XbBS8QuyeVY5vyxKp0OnRnRBADmwTztd8hWm/w0GuPnDIoYXq+WM\nWTbvs3AbYKhQqMvv0D9C1tyOhZwcDHHvgtyQG/p84EWwqdjLaJf8dFB4EqNv\nkVDYHg/6EiHCSNV+zREwDpaKelPpBZOq2p/0CPJHc9BgiQ0n51itAJiBzJuC\ncDL5WTAY9dqBUum0xVYdm4MPl/OM9I4Vsiz8LKQom3gXpU9mON1k+eExRvY7\nzx7QpW6+MU1/xkKHt4UQYODYck5foNn1oiu2Gf+Qt5tLUDGGGt3VYQV7I+yK\nFZN8Txpo4PlJb+MfpO53VKUpAv0a4vuHsdjnfh+QJU1HaiBPbipUD9x7z46d\nkeiY\r\n=Dqv6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-776601-kc0gz6kb_1593433209331_0.22397017789482088","host":"s3://npm-registry-packages"}},"1.0.0-feature-b591f3-kc0k57fv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-b591f3-kc0k57fv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-b591f3-kc0k57fv","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ac218e9558ddf15487209f097db98720544e871f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-b591f3-kc0k57fv.tgz","fileCount":294,"integrity":"sha512-KkJ+5yrbxeMENCT70u3T/nQcxFhYb/26EL91GsSx7An4tzPZ2+Rq41dZ/xgo4gE6UX5r1ATM03Ob0okkvkdd6w==","signatures":[{"sig":"MEQCIEflo/61dHmCRZInq3Fr8td9snMt1gRVktf60ZpESLMdAiAxky70/FkpiIsxrnav+QCBxOgMS4oJck4qXaSDqK0epQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1445391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+fFDCRA9TVsSAnZWagAARiQP/RB/+Ez049nWc+oWLY7A\nTNWWQYHQwsQcK2dA65+Ja6CaeJrU+kdaHa1iL83UeuHUCLNm3EyVG8loKGR5\nG7wg6A0TDNtcMC2OssQoM6cUMTn58ICeVWwSPyc2U4iUvPDV7Kt138o++TZ7\nynHr3/JtPhYHV/5ukcR+sxQS1c0UjFDiDAhGykUReZ0BnJFmLo8l4vQe1sPY\nspQ5dzMUIk3DDP6RpvMg/btiIaTD+n5ikP1FKrsnPdcFlKZ10szExSgLkEah\nIlbG6i/mSlc205O3+hE5RpyTjCD9NzsXhMB6qmnJgRAwuzXpFELNB/ocJ4dX\nV6EM3caLF4tdD2/AwU/Ed2bwoiZX3WFWjAmX//OtXpi9VgAI0tgH/lAaNxzd\nnYr7Lo64DjuPUBVljz5cV3fPCiPCq9Qi9X7FFGa/2KQjxC2Ji+vlKMRuobhk\nNWE60/TkbsOWkJZXRiLtpY/VkAuDpxDvd/8cHh4eBI4yPZUS+Dx5N2yGly/Z\nJ69NTn8C+S/OterlpRkdoyH911huuW8WoKRQVviSxe/Nrr4ZMp0SRS6bCaAl\nowO6WQSntcG823kky9J5PEm5Hu4hQjAxlThm8p4//3XG3FM+pcur3zZq+ZFe\nuQubdKjTrEUxy+NkvIVtsgG4O3JVJf6a4obkqtEbJ2jHsHLfqXyPIfZTssBv\npYit\r\n=23oj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-b591f3-kc0k57fv_1593438530409_0.6284804724238713","host":"s3://npm-registry-packages"}},"1.0.0-feature-606513-kc0laf6o":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-606513-kc0laf6o","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-606513-kc0laf6o","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3f849ed01ff481917b36e14411a3b2fb1a15b3bd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-606513-kc0laf6o.tgz","fileCount":294,"integrity":"sha512-oOqR3GX5HAlr/E5EQ/Thk0dJu/9pRL+SyXk8dJEJtFPU96DWzsJI5pUw7X4uxf+MVBM+zES5lgfqeQKyUZCCaA==","signatures":[{"sig":"MEYCIQDPncFpNv5KUCt97Biyn4R8VllBX4dUVC3r8w0D2MHuZQIhAK53dA2Omx8eRjX/AXs21tNfBLLE6wltDzYcreWyMr+g","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1443505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+fjJCRA9TVsSAnZWagAAhT4P/A8xW6bbZXXeqeRxHiVX\nyJbPGp/3eyElvP9XCbg1RlF48aGCj7UfMA9qOjVHFuMHoP+WB88WiI/RbrRA\n9dX50VEgjaf2dglueYLaCs8JOJor1P37MMpIMjj3Q9UbRzLPyab5iGTfjEPm\nnLLE91RP2d30ut7TFfdTGD8fAZ5UX2L35BICrQpQjpsahAJD6obvs4wFyhrr\nw06fIO3+R8nD873uEfSzDHWT6uE9TAO2l5zx3Wa0MbuSeWMy5f6QJng3PVy+\nBx+h8ind1l/L4mk+bxZz/KMGh04u7n1UDUAV3vGTQ1rxas/XtK9o08gebH2N\n6aTbZu2b19nB/ZWDSLsAd2FZRFKYv5m8457oKFbno4MKVrReIDolNyvpjAYO\nTA0Iu5bYWoccFiVg4vBO3FKQayKUWdKKc3Ch6hclhnrKtfkMJDKFPghgFPuT\njJrwZP6DxvPrIuBR/T4/TW4dj5dBHQSXA+G2nx182/Xoashr12lD2V8PxCZg\nnSKQPsu1WQ3kgbDAvpk39vi6m3DdG84zppu0wACLiT7UyQoKoSYvvGtMLIuw\nSy7k5dFK05p5nvbS/g62BMZrhZcpmfIfHJsNCpndWkqSH4pIPmpv3MgPKdFC\nNYcQziXEcBniaturE8AuwLGLnFHmKRVsebKTO9xnKdlfVx0gMRp1NNsXGa1x\nqvPy\r\n=8YD/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-606513-kc0laf6o_1593440456306_0.34603459824176497","host":"s3://npm-registry-packages"}},"1.0.0-feature-85846f-kc0lm092":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-85846f-kc0lm092","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-85846f-kc0lm092","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8d4806fe9732e8e8ade9c26193cb34da9fc5ee18","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-85846f-kc0lm092.tgz","fileCount":294,"integrity":"sha512-T87TD0oaXrqZJbRr/sz9WqKtoD5p8cQhrDR+2enRIdVNkqDXBOdHBomBJ8o1oSCxEZBlge18I3mYeMS8gVYiMg==","signatures":[{"sig":"MEUCIHrbcrm5/phbAgi5H7WoduHzvsft4CtOK3iP6FH+t6b3AiEAzKlDMkJWsRXajw68p/HFhnQpvlkSVO9ek065izwp480=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1443505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+frhCRA9TVsSAnZWagAAaAoP/iipvcoQC5cdi5vkTmhx\nsQcw3uz2TS5XflNu4TAVWbtK8U5Q0F2npjgKIZEWOiwVI5CtDX5Hq+Ja7SyG\nprShPUpUBM9LabamiiI7+LZL1MhkQXeUk4EzPScfABMlldGK0t5Mpfsk3KfA\n9N7VGWxlkRpuhHl6Ae51G4Tp7C8oiisWHGz29Ifm0i5F304HRxs+XyiqC5Hh\nPTnpoRKtQ0aG6ssvZEiY7Ywbt5IVrgYL0G9/x0C35qGn2OOtDREn6mtAUXBm\n8gy1x2dowbzsYDuwf3/7UnmtR1YBgNdsmbKn7zGqrEc+PYWX4s4KsbtPKLrp\n+kiF9uAGnbnllGFOcdqpHF32ELfAMqSIzPYdaRcJEXFca3B1j/kv9lpDUpk7\nGVeRzdeDE8s8D6PSsBTxrZsNFf7GNoTZOd5Yn+a/HJalV8CXm0IkJIVQlbXA\nDNkYnZ2ptKs4IrE0livg3LmDys3PTF2FZY21h+kRtGQVqOaRvsp95/qCnVMn\nSCdjDKF8GMWJdLzWPBagKtMgg5qji2zHmehBb8f53gb4wKhAWkHWq5kw0ZL6\nj07ySh2YpkcI8xPSQsWmD3PBksftOAbmG9L62oYqJRMcV6eXI5c9R38On7Py\nL86ZGFJN78IAyZpIaojMTvRENfbld69rYHql26KgiwIrT+KqcUdsOZp0WRyu\nLV9y\r\n=SKC9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-85846f-kc0lm092_1593440992942_0.7589135701398304","host":"s3://npm-registry-packages"}},"1.0.0-feature-078632-kc1lz0o6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-078632-kc1lz0o6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-078632-kc1lz0o6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"acc6fd04b815af1f9308786c3b7f064f0eae2d18","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-078632-kc1lz0o6.tgz","fileCount":294,"integrity":"sha512-J8wOYuEIR28wCYudGwDOU4VZy+ttFqmLd0+f4BVUSOSgQfPXvS9NP9ne9+WCJoG4TMNqDFFfb2Qilrnix6DYQQ==","signatures":[{"sig":"MEQCIBoFByyGAH0S28coMEI8R7zrGagAuR6EditlkTXY2xOdAiBAk+lOON2ger6SoqiJlMUYOy4eWok5LHEviu5QYASNSQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1443782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+ul3CRA9TVsSAnZWagAAigEP/ilIX8CfgXOT28Yh3yjy\ni6/Ll13WKrXnWu6gVvSp4BB3F0GZblYtmn9cYSYlpOSk2doSBdoMtsv0fUUh\n85NtO4TiHV1eGuti/JNOTD7dLm11UfWL4X2z2EvG3Ox8OtwwuoA7vjE5PfDu\nPCi6/NCxjO6NQMrj/xq/ZEIgPOyg1oC+ZfchaLzPr3iv8Tv0AofG6HBUPvKb\noHma0jUyy0x2IDfs8d84cx+LcdTp8dal3x4cZQFh4VBYwGSnp8+JHRG9OIJI\nPEqUyzTiYj9RCOq5M35SEfP3AFPgoypzDjM2lZ4kOq5bjMkWSsq06aWmxXgc\nYYHqRF8VCzhlBz/xOQ4YmMV4Zh8MIzs5ZZAeuOVAgwA7z9KxnbmdBJtOvevn\nDqCwgSz535A9xfhUaCqldBePBoZv4VhHemBoPo77wIRsnFLACcvuuUWi0QAv\nt7L9ZOThpocI5Hn5fPRapl6pfnKHkNRQkI4xZ3p0PbVVhPYcHXSXNHiMwxo8\nGc+RX4WlzKyIpGcN6BUATHsemEqLtMryldXldZA6wqD9wTqrnthGPlK1cMU/\nRpivZSgc261Xb2k2CbE++LunmbvZUEqvkEAuIjRos/9JHDdqCUcsYSJ6IKMa\nKTXWQDUVWBIfseYAiRRJfBfbZFQ24WcQZj0+Enk/3RoLeaZJ2EfY9xW7KeB1\n2wPG\r\n=Oo5K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-078632-kc1lz0o6_1593502071085_0.45658235706621264","host":"s3://npm-registry-packages"}},"1.0.0-feature-bed27e-kc1nri4r":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-bed27e-kc1nri4r","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-bed27e-kc1nri4r","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"32a57092fa6576640a0b6aef7cd8c03e57a1a758","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-bed27e-kc1nri4r.tgz","fileCount":294,"integrity":"sha512-HRjMVQcxwEZOTkc3eFgN0lQtNM0VZKuDHjlWRv09WLnzmhbIeQCW/pgNFY2ODzMnqiZcPAOxmH6kyovqOZ03dA==","signatures":[{"sig":"MEUCIB0Cu1KWwOYLRoPy+Zdf1sSmLCim8sxZyLi8A0ysImEGAiEAvkzRHzt6JbYSFSKI7Q/9mDrVSKSNU2SoNCEOAD1YBRE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+vU3CRA9TVsSAnZWagAAuOAP/0R5rmQ9HF21oAA2jS/1\niGrKXie893tIjREfkY7pBzkrDk+rKGRSn28IM4wLg3zawqXkEAWhu8dMKBah\n4C32keySapc6PyPDX6Ro6KC3FztOQH9qVT+nivooYPn1cUT0OI0uP99hyhnf\njXxWuq/17EetdbxU1Q0QAraX9D1fxej9jK92C7oQDQ0MmnL7vvDEL2fmyU+2\neiPHBrnDTSRuKH5i9XdN/8nTTinba+DE+v2s6DKvYxCe5v3AfzZKkkoJsqrN\ny90dW05ZD+kzD9k8Jp5ATbu+YSQ9UoDTaxxZZDPR9svpcphlA0A1eW3uOerk\nY2iNJqtBEAP43dm82X58txWcVOzGSK+rQFT2+faV4RsNnEsQyPytZthVRPod\nGCDcaHLYkRJSPY8GvcbJ9y4R8EmzwY7gk+u9IYtJeraMtERtBMaXMYiS5Xac\nL8VlUY/HMQDApFmK3LWLhwniW+RTHhsmZnRO04CDhFy+bxe3HM2C4rsmnPuI\nIdOcW0Wc+u//4NHjAj5I1k5IRGujWxJooevtr+V9+xnTZiKGZh4OdS60ZMkg\nqCtNPXmMH+UUNzok7o5cdmHLpUJH/iSOEBydckfy1d+YSdJw+rugiTKNeLN4\nl4C5s1wISr7qYBm+YP/YzuuRkqncTwS0WLgpMqQ2Ehxt/qKZB5XZ+4+Mnedb\nIAzc\r\n=U3E1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-bed27e-kc1nri4r_1593505078937_0.4537457727431462","host":"s3://npm-registry-packages"}},"1.0.0-feature-b322a3-kc1rl992":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-b322a3-kc1rl992","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-b322a3-kc1rl992","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d6dc6ce00fc54aede6a0053787464ae340b71334","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-b322a3-kc1rl992.tgz","fileCount":294,"integrity":"sha512-7684A5TJ0OJiAAMKdNba8xhCRvjESZ0SDjfkvHoWSaDSEj3CQfIe+oaFL4tcJkppfJcL1twY3e3otlxbuk4h9A==","signatures":[{"sig":"MEUCIQDbF9iK4L7fnR4XWRThrYVRKWYveAUKW6ZofTir8A0P4QIgX0msBPMgND1UkLqy3Gc5nGwg90yMQTvEn3PQKXJuUWQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+w5QCRA9TVsSAnZWagAAcOUP/1gWYFphFLUQvL94uxGT\nrbfldxApyeXtDdjjJ6GrEpHYuDAuAewTArCQL5MNqomaRLyhhIhFIQ1nl/V+\npoLhEchSLa+SbmdFut0YNbm12AZJx6i29pRAZkzbiBK983sztlq75lnUm6sF\nwwXUeKUvwICEbRcOirnvATXw228qXQzH18HpmjsnpGpXv15sxLs1Uoz6+Pvv\nsnQB1XOmwEFP3Um+NzMl9CzI0yCT1O2V0p9gQ0olJV6ye1CL4nvP7+5WB4Wc\nEP/x8NcZRllYmPNFu7OFcFNvCaCqrhFZ0so6QGA+acpKHfpDa122+yr9OBR+\n+Grmwg2pUmU83au3cVUvZh7VdvxcUx8fxGFWu8FGOdirVaE8LRGWy1WfIKkj\nZYG78ugpSZ4NWXLcdN15xy5TrDZCygx8wRWNDDsU68pqQeATtPPtaZc2G5Jv\n9X2LapTzMSZ9cAFlLAMfeMqro1C4DABTuOOC8ZfG1HrBIAYivqu11ZmGlj81\nOEbO6MhTqojb6WO1r1x+TIy82abdIQREA/Ot4mQM4QM8DxE8w+lqFNfaI+53\nK5Gqn3CoLvCee5bMHl0iyGKln4pXsDewz5uzpdW8Tsfgle/qykJzwUz5j5vR\nz0/5AnDuw+tJIo7ebudFJOhuU/W1z+3ynRRZ9cp8dKDYUNyP5KuxjmQCrEd0\nHoBp\r\n=RPUj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-b322a3-kc1rl992_1593511503830_0.551851787367843","host":"s3://npm-registry-packages"}},"1.0.0-feature-b89996-kc1xs4f2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-b89996-kc1xs4f2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-b89996-kc1xs4f2","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"68b7f7ad25726b0327481133b54be7778f76aa38","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-b89996-kc1xs4f2.tgz","fileCount":294,"integrity":"sha512-yX+e3VqGQlYCN0qV8l0e+x1qd/geDTSRBYT1M7hpwSHb7JatypHD4/rCVuTf/RLw8wGNaAvmAr4+WOXOzmq5bA==","signatures":[{"sig":"MEUCIQDr8ks0c/ft3Yqd9uhM28TlkUW/l8DbUYaeTv9+w8wwUgIgbSywJYj567xDYERAXXtIRhk/hs+VCqLe9xsd99FLUZ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+zbpCRA9TVsSAnZWagAAId4P/2bhpY9TxS0p2RK9fo3l\nKo4sYyDO6hABG+sglBXEZBoWIRfz83SgErAvgQFYqTj4GHp1VkhC+uwlbR1+\ncAMXvoX+s1Dqhki/8oY8i63CMFt+IQo2DO/n13TxUjEC7YFxqHlcE5J3cCvg\njcpGJBfAnvkGTnrzA7Okpo011SR2uswbUVmGCNavYObD2YCdjNjkWwfIoJxy\nWYfpVhUzVSNyAbO6VT4cCjVSU/9xH+Z0NWhcrjEaw6CuipF3UhSGAX6H2faJ\ncf/dhlovoOiAad1DGT7KynQwlhsMewplUo16G6wXMBmyWvSj50oJw1CuvMKx\n4+kS0zXqbBsMPGREiEylNO2tzmncnfg3yGioI+JkoEXWfCa3MOTmtYc4TMz+\nINZ1hmmNvtwzpv91CJBev3fHQaD2JdlovWpUzC2nJGGK4relhx+xCGJ3kgeP\nsKHLTne+kmsBhTOgw3INs2R5U7vpVuOw2Bi+kXf7lI+ZKj5MoyqrcGuxnqI+\nAgp9x8PHNK95lHSkPdiSB7wqJcPjRjvpv0dWNKuItlr86b+qBnNgxWYqgi6k\nRpyoPqa0q3T7Pi52RVPcBVmeLVTFyv+6O7oYElxShZ9igyBJyu7vgue8Mhhm\naRKp98kX/kUvkR37/fSjO2+xbr44cVVibRnC9PHbkkuc1M9HOuA6eKTRkEvW\n/41T\r\n=1JHM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-b89996-kc1xs4f2_1593521896897_0.2456667216348818","host":"s3://npm-registry-packages"}},"1.0.0-feature-d17735-kc1zyyus":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d17735-kc1zyyus","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d17735-kc1zyyus","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"61db24a2b3e519f1a11aab58542e6e3ba821c2d9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d17735-kc1zyyus.tgz","fileCount":294,"integrity":"sha512-Cvauk0nzuR1uWN9LCQrS4zDCHkpKEGvkp4Gy99xP6IZe1qBbGJkLm0Q1CyO8tgNhbyMa+loFMA3Au89/+A048w==","signatures":[{"sig":"MEYCIQCCjThPt3Jxj9Y7HYjIDrF/yuCqCH5J39yMKZ8QgNEEDAIhAKBBLHBuy+M+wrSz4CvLb5T0BtAx1lkB9Lwl6rYHXuhA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+0VRCRA9TVsSAnZWagAA7JcP/i/esZNLRULAC/kfOe0g\nOiRKxlovENWH6Lobo71Jf9+UKhTxvfRkjcP7QZcLhngW9HFpjiVDvi0tTzwd\ncEz/Y4VooVJVIYuH2S3MAAtf7xhufg9AeOtYeYk4Ye5qRgsekNuyGyGO2G/v\nrfh5GdD+1oKEubI3RXgZmgb9DKJN2v48IznhPhhfSLVBKpA1zS38EBw1LnEp\nsblfI3LzOeZaw7DWvG8j2tQatbHy9B38Sgd0k8mbFCdN78LmmsBhKBNDxq13\nWduUnXTJE8Q+EvzJo/eje8IqoSPSZ957hh4E8QLzA+1ULsubJSYnZzMzQSwG\n5hsto3gEvfnURWHm+R/q2LTHKI3S5xO5IhaaqxwvtBVlNm/isJ1kO+aU6gWI\nsp3LarKa7MCRC57sGeJ13WZkTBZ3miuu5y7MqgFAQbLrNf19lUvOvDuFDmnW\nKZAOTt7fuVzE3J0ya/B6Jp91ayP9ZT9Ta2veVSd4OrrofboCGdnT7jHJpLlF\nYKatBeQa3ueeHbdDEH12sjys9mEwH1OkiirmsBTxxiiK7i9ixiiw5n4qS7jY\nEvn/tI8bVY6CVGqC6XQvMibMqh72DxqZfgAdEdhnupl4eVbWGergr0x28aiE\nzHvGzWwA1AA8WJqsh5YnNkR9CpxVpIq7hQgxSUZcetIY8PdnG4gH5IfpDad7\n6WFB\r\n=HCgj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d17735-kc1zyyus_1593525584824_0.2994566437133872","host":"s3://npm-registry-packages"}},"1.0.0-feature-d17735-kc20b90i":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d17735-kc20b90i","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d17735-kc20b90i","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6edeec95d7982b4cfced37aa0c84bc5748e00c30","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d17735-kc20b90i.tgz","fileCount":294,"integrity":"sha512-Zh1HYGbJtEF1vi7mKqzjy0eHBfH3Q4juIOoxMcTlH8RJ4OLFd+s46Wfm+aJPu5VEC1KjeTTNLIxD9zfjG1OyeA==","signatures":[{"sig":"MEYCIQDqQb7huGA5kTYUNvl9IJfYC/wzMUmKRqXnQ+Y9JmXZ/AIhAK8NjxlSsbiMyBK2zUzt7syAYESNIDzfoJKtoGwmb3OX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+0eLCRA9TVsSAnZWagAALvEQAIhBmuvvLd0Tr7CjSmv0\nwGz8OKr66XedHt0J7Vfmc8KUYw+ilzOgXfqnu7U7SkDlq7996i48JGgTm9Wf\nFrPS05NeaSZxQspmRNCwqRtAesFLIVBL5AQRT+dbCGioC0a8l3v2V2Fy6hrT\nwylXAnEjZiW0bZWg5zqQQVwJU/VpKVeHmdCSlROl0Ocz57XfvbHE5GXgjAlL\naX065gV6uS3yqqKDnBsPAMveaFeA4IAo88R5QGsdhO8mnooJTKeOlDZLWLUN\nezt8xB7xbhTHIVWZGyfZHjtevJ9LfoWnH9t0RlLSaw2mhHJppf01jieKMDiW\nAr0ivHnuyU8eozUybiHNI7UcUbDg2rjKqcAQTtwINz8hbzkjKsYpC4YEga10\n4u3rJRN6mvyMHLZ0M/w/CnTlSPrV1yKlWkSeoOBZnsgpuYCjfC3iZnzNHzvR\nlun4iynxpv6/N/tbA1mLwMNt0oZ5fh969mtaMRwRoSPbmGryWJXVcj7ML7Wk\nQHCosh9niVtb6AFl+Xsg0vG7ixpQVXgCQQMtvGjb0bjCj3oGi7OC+X04u88n\nkmnGvAoWdHSAWTBX+q6GDD+eGlp4CZSWzHPDc8Zv9nJcwfwWQvgNXTrScvSa\nlXrLT2DroeiyFTPHCyMl3/iGrJVFMChB1cCILXTOWR4fmTKzXozbCTVENCGR\nUEWR\r\n=6eip\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d17735-kc20b90i_1593526154623_0.06760327334754979","host":"s3://npm-registry-packages"}},"1.0.0-feature-4d8fa2-kc233fzx":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-4d8fa2-kc233fzx","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-4d8fa2-kc233fzx","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"084a83a4ead081d1ef9f3a653038e42e92454335","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-4d8fa2-kc233fzx.tgz","fileCount":294,"integrity":"sha512-v5cQb5Hs0ZqCHgv8jyRwdamioWibfHiTkoasyxmGW3P4DncA/uyn/jqaIldTaaP1MnQ8wRtZN30CktHr+FHF3A==","signatures":[{"sig":"MEYCIQDujOMs0kl8OFzaa2KnUp0zHlHuF88J6Noew/H1D3r49AIhAI9X6SG+mnqVzSWouOoEwCc+5Jx8oGoA3T5YiNEzqUaS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+1nLCRA9TVsSAnZWagAAMH4P/iX4kEuGM1DDgblIaj9O\nGjFW28VPbMKXJd1I1DFdvUfiBIYkZVfV49L4P/JSBxNK/yPZzN4mbtWD9cr7\n3+Fsr0665LK4d0Vcmg2yNOe29/mpreG4sv1IZMv+zQda1MlMa1cCjMGJqynX\nPxlLB8SQooiy3EER+dmwIBVX8jMj7TIbbCXA4srDWbZ8IuMnaNzUBhcB7m7U\nQj0M0wQHjFiN3vxqW0KsM2Q8EM1ynBvcrVt8WYCphFDY68btHcR6VNQpKQ3/\n/7WrfJgKdMTb2QDsXT/grK2TiwCiaIjwxJJLfsiUvYl5OwDL+/1fZT8h5thr\nG9Ay77pjPWBYSUSgLq29j+QpDPAD7L5VeCov2I/QkM2H43W59vKLCX0qKe2w\nBn5fP3dIKZ+TrMrrLXVEZ9brgI9+SG06JoKbw4VxJe55yFy51krjSARi7ctP\n6GOybY5bemZsdJk1VWKT0o46JDqBDvq048baiqwH5nIYTtuoI4Zjl76CfZu5\nOeFzIO8CtJPalHEZpuJu8siIxBiulz0r1Mk8qZO+pQa0BDHMPiHzvhc6Z2bv\ngixzJKitcHwooJvQiwDO0/1skLeon4Pfb+AsJ57ycUWYfCFP949GiqhpODcs\n0mCFKuehRDanlZoCao//6ENdr7lAUoWtogRwswo6PQK4kBfMxlVNO8x36VfF\nOmg+\r\n=Hask\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-4d8fa2-kc233fzx_1593530826757_0.5870941680604711","host":"s3://npm-registry-packages"}},"1.0.0-feature-4d8fa2-kc23ahn8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-4d8fa2-kc23ahn8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-4d8fa2-kc23ahn8","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"78e5f1024dc20b517e1408aa85486776d91cf27d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-4d8fa2-kc23ahn8.tgz","fileCount":294,"integrity":"sha512-nMFqS410QpudOY/S/teiH7FwEMXPNh7uoxR+jwJ1vVmJ4WCmHA0nTlNR/tG8fz5F77bjMD1xhe33aZVid5+png==","signatures":[{"sig":"MEQCIFm9z5F9Z0Dppp0yxe5mpPfJ3+uP7K4OyG6kuDZg+1hvAiBjRxRIoi1X1wd1KXojE1uvitcb7bwmHJHIV/jj+UZu8g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+1sWCRA9TVsSAnZWagAAB2kP/33P8W8L9zdIFsCeV6+y\nomE02yVtCah71gaD9RdxH8mSwcnEqaGf9p29vp6j8DN7fpQKVZxmVkySzWfo\nlMc1FS7biwl2bgzUA9cfC/nBOkQD9qmdubd290r0ZZ68R7B5GLhVjTVK0aYX\n6AZwNwIi0H2CIBi76uAnb+qU5J38h+a3AYxqFfaTgD+t7u7ixgKEEKCYgPiZ\nm04SfDr3a+b6EOtG4uH79FngPjr0cRqvNC/+s9IPBQpHyz1rG03+O8ELC4b1\nI3d1cN/4g6I1UF8ZXCrMmZJluYMxHRjS1bB/NWuGZTvfzqgkmh8tiusJHvx1\n23VGcmaRUfk9/oR9/dRulFTan+sBFGCmmD8cpVH4kMIFL3InIef4vlRQ3lc/\n2oSlwc+x7D53j6F1Hmp5RL7/0U2uJ+4vlhDIMvXjwADOrcxLgMeqvPPUn1g7\n/d+wgt3p8+NXzBi7R2R9g5Pn0CMcoYrQ9VtNkU/cNqM+HYugxrMzTx1phbWc\ncHe196sn+dp3L8s+I8E6j6yqCOpP3vJR99PZFvu1OwhN1RkZ49YsaS8KEaIz\nHWJOla8kESKuw1eCVjQfgy0g2xg/BHyyTlR65XiVFaRtAXDqkCLArEpXNh5n\n9Fsu0ttdNe6/z4bJh1/7mUnTCv9Byn5DZn57SarbPeAwI5vOUJCwjXLv7gei\n8IAJ\r\n=BtDW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-4d8fa2-kc23ahn8_1593531157714_0.7559492306861968","host":"s3://npm-registry-packages"}},"1.0.0-feature-4d8fa2-kc23mfr4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-4d8fa2-kc23mfr4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-4d8fa2-kc23mfr4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"91df60c657d6f0ac3ec53698f848cceb5d1c3592","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-4d8fa2-kc23mfr4.tgz","fileCount":294,"integrity":"sha512-RsvYGclbufuxMUgelvcz3rf4WsvABPiCICjZLHYzy3Un8qAJ9eGp/ZAVg1rYDN0Xxn8RgPEHzHzCDBLAy45BHA==","signatures":[{"sig":"MEQCIGBAjDB1BZL5iSFReTMrvsORy/46eH91aEXN45bP7wjRAiAKfHG/kdDNbdF1Hf1LI7voLzRXzRd2dWczwPsi8ilUoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+11DCRA9TVsSAnZWagAAwPcP/1eiyIH6UPobM6LpYmEv\nxDbk2SnCdkVp7fq7WpCuJdt+Kq6gLh6ZW5DlL0aDFgn7Fwo1MOXw1uycjPer\nxA0S8kI0lZMDtr94e7TfhFkZ630Lthm2iUOQvNl6loocE4oG/lpNA8cPPO+B\niJ5PgiiGeCfRdeVeanXk3INQZWAWZM8S7gJxVUjiUyi4gfPUB2FAaag/67UP\noCEzRrKaCdvkFSHTOEzORsaf9Vn1QOe5OdKUJ1RUrBwMV0OTBnBvKQ7M2L8C\nHkUWb1lzFlhYd3wBby814K5WACeGVybq2VGJD5bG1J621XKz7KhVnAtFArk8\nzj+Om+KtIYT+hKYd4MOOTa/zUbsP2w5mq/MUpeoVctjSaK/A+mXEqteCbTLU\nT4A1a02seLRumarUg5Zek1SkS6F5IVTdTuP1BFLgtHf7M+00vKsLZ0i+xy6x\nUSxeAAIAHfJALz3L+ZeK0vXI6+o484JaRpmRs4U7C7apOD/7+BFzbig0RvKM\nVV1Iay+zd2NHCkBs4/Da/g3da9KfBk/O7KMkIc5AXjRjIooXSbAFL4GUwtUZ\nMjpWB5b8StwkGLByWfabLdBmrjeVmsJkSjoO63gA+BDthXKvcgYBgrWfDzYR\n29hOohTO4vG6aNuXX6QGKeWwmHJm9Mu6djQMMvzVS12tLPFkBraH0vYlLsdS\nraV9\r\n=ikiT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-4d8fa2-kc23mfr4_1593531714790_0.05186173712106146","host":"s3://npm-registry-packages"}},"1.0.0-feature-4d8fa2-kc23ui4e":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-4d8fa2-kc23ui4e","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-4d8fa2-kc23ui4e","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ce15c2a7705ba8e2aef4c4f740c96fae6dcb09ff","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-4d8fa2-kc23ui4e.tgz","fileCount":294,"integrity":"sha512-SePk+or8eK8OZeylZR/euwUWQwsi5blJoskEO3MBVlXnvuhndEtQN4hM68UKI8xW6jNv7nNiSsAGdzXvjmptWQ==","signatures":[{"sig":"MEQCIBdmuiHP8wIIlOqv57oOZ6YtQp+d0dxVxmfwI5GHjRI8AiAfwoFtjSqeYpW5sgde/FoZ+JVhnEtEC9zfnDnUjdnT+A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+161CRA9TVsSAnZWagAALtgP/2Ucyic7glgWFWZ1ihKb\n+shS6CTHtOODI9AZG+KWnswuf3Gy5Yl/KbfXvQPzh78299eMqvS38NGKPk/J\nibO2nYgVb26+GGjHGXmqOhKahyw1PRtm8cDGuOmQOlnidcNvv/PAG0f4oaTf\n11rmMQwrmhH0UEbCZ5S7YvI59BrzldF2G5oWmtl6ys/N/QmZFMBPms/+dNyS\nddD/b5i131OoWkrzaVYKDMHgNRgCc9wvuY2Tn4kbLFOYfoZElg3yJmS8vkFr\ngiR6TKYTjNkLdxsLM6nbwaVbwfznz3Ag3swGjb9GQXiSJ/y9ZQnNl4ag4hq/\n+5UxxwxjoeqCiZ1UQyEJqnft4gmnKCGRue+9zRTU452/30zLWH1YBhbFjHJG\nkbK+oo7ZB/p1nfpjrol7mftLPPO7FvMXeWjwb8zPab/QAOWqPa+t0SMKn2W8\nzZQCc0NrzM8EhIN29YQFX+Ep+9tyaiw1JIJ+VhETUrnnQOGP98kbpSaioSoX\nreLEedXR0+aYjvOQxImntEtBI+9GoD73MInDz31295ypOLhUd5xOUF3m73Jd\nUc29OTZi/FhKH92/ynmmf7JSb8w9iUd23ovEX58OZAL9SQzWc1IsSTmVN+pk\n65GnJQVB2+ubOQWFt9Zs7Ljw9hb12mWfzutLU/sfMY7cIg9tv0ocKtJtiadM\nR+8h\r\n=K612\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-4d8fa2-kc23ui4e_1593532084766_0.3149242622317958","host":"s3://npm-registry-packages"}},"1.0.0-feature-4d8fa2-kc240z7t":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-4d8fa2-kc240z7t","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-4d8fa2-kc240z7t","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c2a789861bbe5cbe0a4e091500a1c7eaa45e6189","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-4d8fa2-kc240z7t.tgz","fileCount":294,"integrity":"sha512-FcyTYOrJ/vNKW3dEeIn3wjSF6wSkJ9ctneB4s0tirvmfSERFISF389RxvZlMOmFfnvjBhyYwuz9jY1DqzWI3lg==","signatures":[{"sig":"MEYCIQDRRNxhmQCYgrXkCwPtipO0tuXdLfkN9WCk5AMcyGtk6AIhAMk3onziDAppUXmpw8y3yX+qEdqq6EVMv4eX/R4sagVz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+1/nCRA9TVsSAnZWagAAJyUQAJA3SsJyX34Hq/MiMCqt\nhJjqXD5Y2iIaYBCALye7QA9sXT/Y9uBse25zgui0EkTi1KV1EODBwsHZhb62\n/hhS5MWFqiBkbZymeE4YhdkSsXltd+wznetMYblaP84aHanM0zpHD9V4z+Ws\npvAPWkKuFaxx2/Edc5EFw04FaHenGafVai+uXWfzcqbEA2PbWJqWWSIkLEyr\nTqhWw1pMTqACPnyxPg2/WSmSfpKz1gNR3xjJh1PF9jyDgjJq85N0flwG4YeZ\n0Xs2XFYy6mFfQQlfBTjiM7FBXXSKz7hfNx7L3QmXw2JagFic5owPNxdbtLaj\nQHKHVXFm95sSdAKQ5I2UpkqT0FfbNijTpjYrk6e5NyDyHPqjexs8LE4jjn+b\ns/7q8+dp7uTrvppAXNNQ8+McdRa3v/d5tqmpy42n5ETd/eOY6wehWYinCDRC\nUUAVnAWirBD9jIUI7XdMU3noh0WN253KhmioVgW5rnX6B+8zpQP8nINHbBAT\nrmyZ8lx0a4gskAqQ0t5V4wZw+7yMCrJeyoP2+xUVHpRhFtuoeOSjARz8TZvX\n2xfo26AKVuxcazTJ+buhof0kqPEjcevRpgU7uf8E5L8xx34lqe4sObDooojs\nuyGje7YORTCCmq7N5YmCyGLYKR1NvYXhw67va8B8FO9Kq74mYGbqB1Ez/+Za\nBwda\r\n=iNXa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-4d8fa2-kc240z7t_1593532391105_0.17834371767166335","host":"s3://npm-registry-packages"}},"1.0.0-feature-4d8fa2-kc247mkc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-4d8fa2-kc247mkc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-4d8fa2-kc247mkc","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"61387579abb1c8ae88591a11c6d249c2eca9eaf0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-4d8fa2-kc247mkc.tgz","fileCount":294,"integrity":"sha512-17ahHhTLgfohSFW4GmEdbVBJWKkRml3T9M9fyVIyXRmA6ZNexAaQZ63K+t8/+JrIz7W8F9g8qGFD5uL/iM/ULA==","signatures":[{"sig":"MEUCIQDIUVHtXVuTvKWsOOGvsCIDTrijPf4l3yv/L56sMQ0u7gIgIyHhH7xEBA9GdvpUFQUAKo7Ocr8RWshIi3SF+SbQt/U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+2EcCRA9TVsSAnZWagAArN4P/iq7A88ARn6+Q10NhuLR\nXwVUJ1vbEZGj5fc2HoHVlrR4VxmtNOvBgugJxBY/h8T+H4yMPhHgZfUvwjeV\nWZOkZEX4IfOAgmRORsUDI2XdKuMwgZBP7YPkQ2G7mW1CvNU0YD9XrQNX6x70\nHXvELdpU+tePKo4PMjvsOmuV68mhtpqGfc+TSVxvx/TTvdfgoiBqH4Y8bDhE\nANWa6PlbrVcYkjsEuU6lAOVt84MavxHnERJps4TyTkuioH9LY5LY7I08AAl5\nG/6uxRF+9SSmN/Ot3GkXLvB9hsB0xn+zq4uMBcoEBEYB30rKPXndSYl7bkcP\nd9kE6Pg6C8hBZQhH9BNiclkJ4mVjAJOsB6RIZwIMaKmJ3yvePTEO4HJoF/f1\ny6hmcgzmt0tWELRj7BBHFEcSSzveyrlIwur1ume35UbCKCIoOnaxpEddAsIU\necfAC+vTzg+cetOpDpEgPd/Bb0WDpscrnWuk4uazj28Wvu5yKnBdH+3X+WPZ\njZLX57+QNgHMs5kNjJkB32hqewU2bY1KaJgGimZE9sxwOC1X5DZm2vDfVY7u\n4cmkhLg3i2zMUkg6IHUPz2AOTWW5TeYXolU7v+U4Gn6CEr9lWohSof8WhMxe\nCOgswJvrnN+3jApvsMjYWIPosUOnSJ8wmYxIlphC9hcy5evoREXMN6epCCVs\nXLCj\r\n=ZQJ3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-4d8fa2-kc247mkc_1593532700268_0.9086202376956163","host":"s3://npm-registry-packages"}},"1.0.0-feature-4d8fa2-kc33ro9i":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-4d8fa2-kc33ro9i","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-4d8fa2-kc33ro9i","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1580d6244a43550ff29f81f08f13358a3711a5a7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-4d8fa2-kc33ro9i.tgz","fileCount":294,"integrity":"sha512-sp9ZcbGOhAd8EBDQplQnLMGBbCHlDnLL6Rikfm9gXoeV4QV1otdGCeBezeZVmqBNDCmT+RFE3otXEhi/q7Jl3w==","signatures":[{"sig":"MEQCIEhVli6X41ejHPqEdJ53g7hqdRYWw3KDnmiBG1kzrLRbAiAP7H79lQtUxT1DkXITY1ZwVL1CP+RHKpDO6xGP1vT2yA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/EptCRA9TVsSAnZWagAAvUUQAIQEfwbA98mVoPJm1tms\nBQIES84iYtcRlTc2ubvqdeeynXIb0mehSPv7wePLh/mo5mhiz2b5n4ckp8L6\nGGYgH+ZXeDLttddWYoo/Jcf8Q2UaAqEtUYfE5CwEpe5FYCbG3hcfQ5+F/t/o\noQTFOiB0U9fqL90UvcZCMXg5Tb6um2sqqXRhYvNuB2RaQP/BkSA2qoPHooIy\nPxMViZG0Q5VGRq3+Jtrwkwt9rmGOj2jzetmRtgwl7y8Hzy+/X+5i+5pbyLRk\nmeOBNAh7BD3HHKaAWcTKlAifRNAiaBxXmXcFZOUDAu/Aj60TdXqxogCAKycq\n5NeO1Bi4JczmkbRZ6DqEXx0wmAs6+tc3TsDPmrDrhcI5LM/22O4iDFhkY4VI\n8+DrOEavhhayaW4cdgIdEDtephjCEmFYGgjYiBiR9EyFVZVu0hR5lWNSsbaV\nHxsxROrPWJmHxq5iuL+T/H/MVIGseQJQrR/dmAwcKwUaCgOgiWz5rM9j1THJ\nqZfO3kBvIfEKdaSCLuNKh4071uHfVBqmkj2BAVpxubhByWC9uXi/X/pbWGqw\n7+56msNQkcsTVEwWcmMqnIri4kHIRZXh4V/enL2eUNM3Kdbdw3y2uXBK6jdO\nD5XgoqfdJ/Sbd27WxWq2mKOAT+bN7K4jWT6BipoOzFD+Il29e3UhKKxbD80S\nVM+C\r\n=r0yG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-4d8fa2-kc33ro9i_1593592428710_0.20337022118223747","host":"s3://npm-registry-packages"}},"1.0.0-feature-b89e88-kc34lmhz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-b89e88-kc34lmhz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-b89e88-kc34lmhz","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c3dd8a0faca97d173247a0ede494191fe5192334","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-b89e88-kc34lmhz.tgz","fileCount":294,"integrity":"sha512-TGk4jVfUlwuxk9yvTPeGqZhglk1nnETHKu/aAvinhHQQENwLOPnqRZRVZFjzE9Uj/LLotqJmJtEV48GW0L6TRw==","signatures":[{"sig":"MEUCIQD/OYpr8yxZ3D2nPTI2ynOyzcn2c8FRnEAOORVR+qplnAIgf1whk6dqfJuOEDOj/rJmccq08+FeUHNAMmqe9rze46s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/E/eCRA9TVsSAnZWagAAvywP/37l+OTt0vGfAmlqIDbb\ndLW4CXQ50go9ogpMUWaIzwShj2JbLRUnbmEq0UD+canYrT9EJlNYw+i+1h5W\n+ywb5lUKbUQPSw3RuHyOR5gyR5Fx/S3fI0SDvgSNqJAaCblFY11kxHntNj4g\nsnIrnB5ynkVA9bO0T3BlbJTAjKpmKTOxNzn/q2n3MBZm9oxeW72TIyzGLn+I\n53EdXIFIwInke0X6MdAU5pgTcbDvaKo4A0h99Y/woBGKpqLV/Ke3fDo9Ms4I\n/sZKdv90qVQ9lwPhAI/QJ3aNPcj7YhOK+uZju9doZztsuWUgLA4E0iP2xwcB\nTbO1LMz5FCnJyrq3MMCcafXaaKWHfKjIhyg1zfmzOdu7LBY7EBNmp4DRyKsa\nJMC8QFQdBDkpr4ZGLi/NbmNDmOjpqRNLEMFSsguLd+KbNGLa7Mf8iaxKeq3w\nZ1D1JU0jjLf0h+rMx4kyCtxmgJCn+9+8UBNO3BZD9zCtPNZ/R4ID+vqt0N7c\nYyPqeq1+z8kdKzglZOnPcvQnA23eMpb8Q8hf0/b9ocS2uuJi+OIL8Tf6aD/A\nIFGT67KinApC2R+iX+r6Jf1/e9K4gDlrzNtS7ScViZw5k5tb8SaMwAZEmdrk\n/BhW0nstvZlHMPg7+ggPFBVExj3z5KKzN2D+/C5uoIv+tsHQo1vPAM2I1bTK\nNs1E\r\n=c11x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~refresh_process_instance_owner"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-b89e88-kc34lmhz_1593593821952_0.9969090540496746","host":"s3://npm-registry-packages"}},"1.0.0-feature-f79fc2-kc370jv4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-f79fc2-kc370jv4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-f79fc2-kc370jv4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"937081182761aa4d357fdb7a6fc5bff21307c2a9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-f79fc2-kc370jv4.tgz","fileCount":294,"integrity":"sha512-VpOLZT9CqCpdYWXluzxSTMlrtnYa+fJbNORor51jLuDbKCI/WFy0hdO0q/2YFJSfB1NbIfff24NzLosQcW/8dw==","signatures":[{"sig":"MEUCIQDftmhZsTns4dj3p1FGp0Z5iQkt+2kutvprp2K4Er84NAIgFIVYwR4gpMHRPEkgPzO3Nh7AUQ7s4fugHRU4XWnBqCU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1444617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/F+1CRA9TVsSAnZWagAA73QQAJzLVQdMTO1ed4GFIiOw\n0la9Wxv8z1BwbnYG7bamMA+aQYHYWlKO7MZnTjTl+l8FnRLeVEeVcnGYEd7R\na64la8XQeLKW9CJlVctPQmvVEt4vm5v5++F3SwlxJc7nz/szUUH6al3J1RVB\nmNr7HLWfcqlBUngdGPrU9Kpsg8THhsYiBSvP5Ham4U01u8u6pd+IQwts2KE3\nRVvcZuvxRW3QQRrymKdlVuTgmNKK9gM7uX+3HU6fZAgI52soDf+gAP2/+Yrl\nizBxNrj4rjeYSzUslIMbg0oqGBnj7oV90w1YdDQix6ndPkDWr3iwJ7u0lTe7\nUGIJEO6wZVIDBn+WReNHpstM1k6NjQ5yJYYSqjUjB4Kvu0uPEfm5m3NGHnIP\nqKT5osZHwHwXF4CegDQ/GsK0VL5alIzaCHoGGcCwLAPWR0aismuNZA8BF0bv\nP3GHhIAsLCh/IrOSNYnyUWoFIA/A8nGad5am58h+EwzHSQt09ecVWqauibQ/\n6un/XsQTDdkCt4YUOhAOqS5wPtxZY1KpsPjyUioF51hyf9q7Oi9QbCgqTBcK\n2+KeD2ZLc8Uhq41Xi4LMu1DW8frgfHfR32LXHTrJitFqyXu0uBGOQj4VVOtG\nCSKlOzRCaJfcQf7KwibMP/bhPASFZ/eVzdGfU3RROa5kdZAoAjw8n9fvToSO\nxtBY\r\n=D+Ph\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~refresh_process_instance_owner"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-f79fc2-kc370jv4_1593597876986_0.12053222236366712","host":"s3://npm-registry-packages"}},"1.0.0-feature-e0776c-kc3a2m4d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e0776c-kc3a2m4d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e0776c-kc3a2m4d","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b9a25999c155b69bee8e92fd0b6f2c895140b662","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e0776c-kc3a2m4d.tgz","fileCount":299,"integrity":"sha512-m9aXeV1BcIjVNbJeVGOBmVUUrbpOpoF0E6a3FF4yQGm1x+m4VohwFDROO32b7jJCCuiJsrPDbopmICqtHGiHBA==","signatures":[{"sig":"MEQCIEGw9TUtULQYqVa5NghFrLbCJjJPAvuvyzX5KJds1BKSAiB+td1nCMgZagw1KxrTokDVeqDwfoSwZ82nQfJQ1wJeRw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1511535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/HPFCRA9TVsSAnZWagAAWnIP/2w+fRm7FZkstMC8wwtg\n+NAhuTy4gFXb/je9ZqUvw4gMKnS3gUtKUOSjnhWfontaaeew7mNW4YSGU8vs\n0hoRQAjiuFrbLg71P3jj6Mo4+oh55lGUgUefO7xHfkVBB3dJAl3D3X0iEkst\nULHDC7FNlpJ2PFA0MjE7ODSfPj7We4IdUOIKgFZpbCpKeWcX5dhyofNqTRaH\n/0XCrekHPoxXnBFwPLJCff9uqgm2CQW92tlRRa66EAoqJN0kenLEZqjAC+uT\nSgm2X7EaRokcimYtaxcnE8HyhmDCGb4mS6PY5rCHPV3o0ZsxiEOogClDQJPU\nehEW1auqYl6O0mlcTGXkRQd/k5WG+hL5ah+SbF5OX9LYrTeS8JeL5/Vm0wXC\nGxQUeURJ9zIhZytFaD0z0YCAFhIOB/8UCI+Nad40PmjABgeN8HAB3tJVIUpU\nijJibjpwY1vzEaQ/AXaBnsXOII/g2CN2Wsm1/K8eejsyoE+nFbxI0LctweMS\nQD+v2jNLEQ+u6MeMxqq7qBbEpdVgzpbD+kVDpIWJ/6epFiIRvRwJYQCiYO4X\nEfIQhw9XbwQ76rOpQiup4qf1LF4aw7SWPgqSpjTgTGN9HdYlkzh1iambyiRs\na/LnSCEmXTf2JRuM/KFtG6gKLcD6v9b65I1ivJGQe2AfIZQhXZt4lGe1Fm2L\nm12E\r\n=cqdM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e0776c-kc3a2m4d_1593603013122_0.9742681804304927","host":"s3://npm-registry-packages"}},"1.0.0-feature-e4b9ed-kc3ckudl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e4b9ed-kc3ckudl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e4b9ed-kc3ckudl","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c47ce1b24173359afe3adaee636a6acd669c691f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e4b9ed-kc3ckudl.tgz","fileCount":299,"integrity":"sha512-Ae/2xot3KlDbXcnZUDaG2A5DUV6yfTdhyGA8hEgG1FcbHt44fjy5paA/xgXcUju2m7KKehrgIskL6z93XexziQ==","signatures":[{"sig":"MEYCIQCbmWEfjQLP+hRBxrvUrsc/c2zGnW4Sw7gusedTFI+BOwIhAMAeHEkaTwZ645Rgj1lB83aFSx8/4RzhVZQgXbLjzQ2h","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/IQ3CRA9TVsSAnZWagAAfXQP/0WP+6Z65Hw1nlrhG+vu\neD2rMh2q4o612Xtqm3rJF9+uIoZLn4IC8xSgCf+/E3QIwv9forJDTdUoFkKQ\nupm+6W1aUnn+SarOgeDyuCk2j/jPkbTG6z8DtF2JBE2xZ1C1FjuOUq6wNSfE\np7K0yl1L9GAAVItp4iHWOslsCWFxz2WFELdyapOrXHAhafLOvHy5cszKWiVC\nzwFLNsYaG2DJeD+7ixBrJyB/TN/HwTALxPIfIn0MXfsCnOrVNdGDJdNgFe/X\nbpyoTDqu4XaZm7cGQQLJoGw6yGBW1KoWHdzD1Yqb3d2I0RAN9i773WprE4Kz\nJCX9Ue0WCCxJSgWsBU8DH16Pt073/vu3gQ9RnOYUkIHxnYecNcq6uDWQDPnB\nIkGk8l6dF7Zn0dKJ1LPIRdi1oJupIUITtgzNidlqkw4mdJ+Fs4SI4CLtqwW4\ncU9K6HldiMoGYBuV4dsRkG+r3/sCQZbEdqFSSCSTK1GQrisIm1qdKIx2/pEJ\nIcXfb7ErXhHUq40xKfr0i2dCa/vA69TrQuKRgCtaZUJbol5ehVwy7Q6hHA+m\nulOEvDZiyV4OH+r6ejmTNsCQc1skq7lL7PBBWguy26ANPYhAwd4os/nCIay3\n0n3B9ZgIMV8ZOln1O8dAJHIXKSNkqRG20bwxTBmWg5M7ZpfgWJILPVBr38Tk\nhnQC\r\n=lS6H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_process_model_name_to_process_instance"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e4b9ed-kc3ckudl_1593607223003_0.9449667723917032","host":"s3://npm-registry-packages"}},"1.0.0-feature-79a4f9-kc3dc3wr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-79a4f9-kc3dc3wr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-79a4f9-kc3dc3wr","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8d1b7d48c0abfb55b566160a94288d2c02946710","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-79a4f9-kc3dc3wr.tgz","fileCount":299,"integrity":"sha512-ZB2agLFYoZ78wq1vJ52q3hlLIntlfunKUcHH+RASdEMi8DXVHmammyBhzbyqlYX933njQ3b6y1teMdwFP+xEuA==","signatures":[{"sig":"MEYCIQDcZgzFiys8KNWmsuCMYn67whMMD30F/p/lTeODLS0IPQIhAIaSklWGXSl06INYA/TEC9Z872kDOsV/XP1kz6UJXVm4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1513493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/IkzCRA9TVsSAnZWagAAOJMQAINxW8Ds6YOg2p3oARUj\ntz3hJbeCzezOJwxc/aE7YPSNX6qehOyEGNCOC8I/eTrX7rILOBV9uI2t9I0z\nRZNnS1OSOobN1/ZbmxQRYQe6H0D5KtODhUyZGpOu3uKkMc2zwu0LA4NH7fQp\n0f1hQC1n0H64345nXlcS0iINsz/7fMYLS9ZJufPn0YKkIEC7IzqaETcn0TQg\nz8t/Ykl/MUzKhpnSekqoJmISzj5XIi91OjIvXkYqtpBSazSSyNHq1K/3x/LD\nWYy6mpCHt068SP5PCvt0+I1gfGOIMEyZqszrwqIAaNVk1Swx6JUCgvjAqNDP\nGEFC2NUL8t4YwrZ/o3Gsq4iP3YGC9hKHTFzRoKJmlK5eLKQmpoIaDFhfSjTV\nQGYIItKLrFj8Z2n1Bnx9+3oiSeiRIKhIIcye3MzNvgalb5UJk5Wv2eQD0pYK\nMGM5NECKeoT5mgD3c17R4TjdCqcfTfYATmwwV2xldg0kxf5zT5k12/coPMn+\ncwdpecUogktbDSwt+7+k2GSy7h9IHPTDBHUe5UbQj0iOvKx1iJ9OGpK04RBO\nDgrWlcNbS9dKmIB1Ih++yzCvERew1KDYwPoaro/Cp/oIODM6rrWy0oIO0of0\nXXtrEYVQfbXfeWqu9lJrhWe4MMaGxOSfrL5gZHFzbduB6tO/NPd8aMkRESJm\nEUiy\r\n=+bff\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_process_model_name_to_process_instance"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-79a4f9-kc3dc3wr_1593608499240_0.8266065993915359","host":"s3://npm-registry-packages"}},"1.0.0-feature-111695-kc4hw2zq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-111695-kc4hw2zq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-111695-kc4hw2zq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2f45eb97a35f028564dc949068624ada319a1304","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-111695-kc4hw2zq.tgz","fileCount":299,"integrity":"sha512-YshIWGLUFTRN7JG9Yfb2IS9Kp0itIe/RvxyzRZc0dtkrOaVzSPBRh43YyeV/hOP4KnUPpvT/7dWqTKgyJ4yN9Q==","signatures":[{"sig":"MEUCIQCTVDh4BTw4kqOnwYIIbBGE0TLgRInkztdEch7DaO02TwIgNzlEUhxrDDm1AU1wBLQobqvrQJGJZepPbXUZMCAVOiw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1510901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/ZNFCRA9TVsSAnZWagAA44IP/0HEsWQI63pYWCJzUmDU\ncxRj2Y5ce+JvAJgfOGb9rpC3HnLbSowOBoaBQobpLOdDDtJXjyF79icF9h8n\nNoXZA9tL3w7g3TchkekxmipbxeyNd0ituYap8nLCUmoyo0khEChCp7n7x+4F\n65ylUkXaub6FyFfvFTxskxPVgUlJ3woSH1mWvlxw5pjR4mgvW/z23t0u5ISk\nsncvNKQQFDRy1Hba+pNwrprKN9Ivg+r3mZYtQDJSwsMX2x/UxKjosS5IGXDW\njZgWKnJ35VqD7hsNGUTiq4PrfZaUBOaVaQPDOyv5iUl44KR4lhTqGqLYGmUY\n8coPm20CT8UZkrJnbl3ih+FQCx9fIjjvDbez6EmC8FitRt1eeanRX59AwNRj\nIeY3KvYvrRHyxU5RzUNKvNoogGS1TdH6NRrnRL05f/Qb40r88XKrWhgO5L1B\n+7XnPK/fz2zofuyXSyh480I8IEsdy1bH/Vq1sYFLNqNk9uGYa3rErlD81Xse\n07B7QutLpwF7dKrmrnDIWTnJvxtbMovpMVveoSklu8OsemKHYwX1cHB9lkAX\np6A1g513/atqHsAbwenHJwPMRuqSk5lz9tLBp3bUUUU4zNmwYmlq4t4sEykA\nD7EQ8VEPB92pCcLyT2sTBHOfGd0aa7nsk3fpPLfE1otY4VcDq3XxNv73zytv\nMLEz\r\n=iUPW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-111695-kc4hw2zq_1593676613034_0.4893335898591089","host":"s3://npm-registry-packages"}},"1.0.0-feature-1e68a8-kc4im7fe":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-1e68a8-kc4im7fe","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-1e68a8-kc4im7fe","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3c32141cdf0633cce68224afb91ff2aaf0f58748","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-1e68a8-kc4im7fe.tgz","fileCount":299,"integrity":"sha512-4DaAuO7i8UtyaWSF1NWGzSNsYaoySQH+nZTTYJQUmgK1IoGxcToQi5scgWSN5atVh5nUOuXr1eshLxqp9Sroqw==","signatures":[{"sig":"MEQCIAJd9rmb6Yc+IFr5J7zJRPpJAf3ipfOUle2Xf2Mu8lQHAiBwkfEeE0ycD9d60ee7u5tAHuF7w7RQSwdBtPLV5WJh3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1510947,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/ZgFCRA9TVsSAnZWagAAP90QAJVDF1kt+DiBklLvpux9\nlbtb7oYITa4mMpK1Nl38zpoqQna2mw5dkkJGoUVewwN5o6PQBOO8sMRHYHtW\nneLbdSyT/hzHLC/xUBgxSXlePPQb7tr2x6TsffcR7d3+x2q1vJfT33Sg/1k2\n8hq3aPzhj6dzga21Xu4nDlnM6jiuFAh2IbqPSdtBx7fkXe195lblZHuXPuey\ny4S2kNrFAjvx/G6xW8/frpRX7zgRVW3QjpGyPTqOGo9kEB5VYfIY3G34/K+J\n0EGmwrBjUuc7dc6V3SNb9nGiiYKfr0WvmteU5o7tiKj5o/2THqYR1QVaj7QY\ndEwRU11FpB8TdYDagQlmMIq8/Bu1ILAIFcXWjrpDSV8wT3dc09pam2o+TPoO\nazip3P+0vW6mzpYaIMxJzqFCHPyxjJys2ksUieHnhCLDGDGoyPN2MVEEcdIe\nuHp2DLoVSPqwEufU+FLy3VWQWDx6/ld06wSKqG8xLT49CzWwHWfJBgdfID2V\nd0vvnL9MEpwgtvdMrTFQi91IHEVZl30Fdr/1ycaQc6AikM9Ka0tyYK3gjZSq\nVLW9ALDsxCoPSw6lZYZJt6Pu49rQkxkHh+reB6t/dCpCxiJqyLCoSfn1X1hU\nEbnQKZfDQaKH4kC1fG3mTg3yEZWP5D8YPbo1UE7hUaVqyqo8zqjhFYS7D1YS\nSqUB\r\n=4Mlm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_form_field_wrapper_property_from_user_tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-1e68a8-kc4im7fe_1593677828797_0.5236504861073665","host":"s3://npm-registry-packages"}},"1.0.0-feature-818b70-kc4ljkkp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-818b70-kc4ljkkp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-818b70-kc4ljkkp","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"de7fb765668c132799b878a514ecb7386de988a5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-818b70-kc4ljkkp.tgz","fileCount":299,"integrity":"sha512-skacw1rlANNvQf+jRyASNnYW48f+j418Cg7cXNlFJW3ANZNsJJNcG+c+CSQ7/7c/pD4wmlJraAjTjHm+z7otSA==","signatures":[{"sig":"MEYCIQCKeQh087wDSOFpvBCQApTri5xbnA9mCo6vSK4xPBfeMwIhAMeAUcw0q34cUgxhmOYgbPGUiSEP3NcWnhk6BzZEUTtk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1513493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/atCCRA9TVsSAnZWagAAnc4QAIYRThUvjVlQhsFj38fP\nKbgzg7kzqnB175H7fpqlRWYdkVCVIX4qW5KLuTBK/RWoIIx3T1G6S5Ogfn51\ny2dXSRTQZt9BdUGM/NQaxunIOC5v2nIzyKE3ZUy3YXpy4zhmGj4frywHX0uE\nGDzzES1uWiYrXpbqcfSfr5NiprubyZZUZ/RbTxp69IsMG3OVe5rK/33ZDkY8\nYMvz7wAKLLgaK4VYaraymuSWUUvW6gVQD3xqHGIVqhPs6BiYtG6xGxo555IG\nacuK6eAX7tvWpXCPEfc2EWvRTyuMp28I8+cDAs0S0oIx8Gck+HPM7YKWlFSN\nsqW6cdtbF7+kvx583U3gmCHdqO/8MtCyaFa0BPe1sDSufd2GIFCgstFCVEGv\nLga+m2O6RzNmJVX/Zcck4uhvdgj0LOTmW/2GSnzFxv3wDfGyiI3FuWbN1RaA\nYM4HrQx+QEc29P/2m8XR13TkaAaS3wtYPfuM1itT6vHg7E28BlH3sRdCbVa7\nUzmxMqrbZ0rsuVAFWS93S4av9aUKzJw5lTRYR153AtrbHCVndOqnXnwDHC5Y\nsw+OKpu5kG6kvTLUbgXVGGDQbADrb6F5KY0yzZrkUUmzpQYKpIBWK7bWisD/\nddgG7BHd83Wsx5IDEOLeIjYK3OWe3F0V1VjlRl84ROcNajHWKpSEnMU3KtcZ\nC6Op\r\n=zRIA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_process_model_name_to_process_instance"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-818b70-kc4ljkkp_1593682754267_0.40556179735424824","host":"s3://npm-registry-packages"}},"1.0.0-feature-bf530c-kc4obyay":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-bf530c-kc4obyay","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-bf530c-kc4obyay","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8728501ef362b215c99306310a9d5118ea513d7a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-bf530c-kc4obyay.tgz","fileCount":299,"integrity":"sha512-AT6L5SJL5f8BFNUAco+VAoc0PEyagN2nPa8AGDcvWoRwoYodRNqi4KdJWPEvZ1ZMZCo5MVoYOkPYJ/7iGG0PWw==","signatures":[{"sig":"MEQCIBlrhDlqu35bJHpAUSr7sq43TTPFjoVATsvtKXbeAaCTAiABpNIhPlKAi6ZjdSccyadhkQ3oL3erFafEd96VIKNiwg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1513457,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/b2DCRA9TVsSAnZWagAAegYQAJr/gn21dg+hb83jRTis\nShM2IohZPgXg/0gJB4ZLoT2IXO5WXi+hM6rC8Vx5Fm6z1IRSMPKT04CFOEqL\nJfgz1VPOXsJkFFLbYceb+BpvgNC8t2Pv3uXT7otryeu0tn4t/qLYBB8Q9jzq\nvpHb8KdXp8i1+f7t2wZ42rgSHj0kNR8xs7Bv5WDk/hjBQDkE26ymUZZ0H8rt\nQRGJIMuyLhMeLFmmw0EllBNc1a2n8n3RLoQX9m72WotbiCXilJH1nhLHaSvC\nkCg/PmotI7IKFH8ep35vFP6H3ew0eCs2Dtcxs+fmFgTJ1mhCV3Ty/CUYNV90\nZTz5g+0HRerEhhYlRvfwnEAF5d/Ctk3WTapnmmj/L5ngTjz0V3FOWBFzudlE\n/aWQed+xCIvlHxTdvYl/HjaURkOFyk9b0mg4yYbl58uGxtHaoJfWr4VxmCM3\nMflgeZ3u0agf6gndAiaBjxt4g20PZ2rbXaglnrW6hCyXi8NkW5y9AkmYoBiQ\n4Qv4Zwh51gR24Iy/Xyy4lvIcDniZLXanntc23w/KRLQp8bYDbQStDk+Tg/N2\nwPrSZpMoW/8Pa6tCTsAA5qs/UZ5xwVKLMth0pheeSDT1dGDsVikygj+b5nTQ\nlTW3V8+Y1MfhKRR9smxQuUz4ro+XW2ID5Ng3d+ywW2R5dy823+suPzLMaR8I\nOqXv\r\n=I/fB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.17"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-bf530c-kc4obyay_1593687427290_0.3155543884894796","host":"s3://npm-registry-packages"}},"1.0.0-alpha.50":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.50","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.50","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"94dd8cbdbd00892d1d8cd384be966ff054122be3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.50.tgz","fileCount":299,"integrity":"sha512-Ev5dFkl6eWcbq65B/LFOMfpgPdaRjuVZHg7mtUqGmmgo5vDbetGwSq40MWOrS8D4nS3hQr4F+7WC8ZDBGb8I/Q==","signatures":[{"sig":"MEYCIQDErvny0HdvnA9j0PYRhqI3Un8XugkPQDOvrT5G4gQGewIhAOuYWLM38Jx6ebQufSSHmCf/bjYsOarPauFuOnPb06Iq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1513442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/b6+CRA9TVsSAnZWagAAXkkP/33roVWM4OE42Bw31Ta2\nplZuNcjBzMWPuVFCpn8OUXbxVOU8ElIemDl0BLBXizFSie4cZx/wJqILfc2l\n6DBWwOpVFe5bj9MrIJMOD8X7oXb3Bcp1Kfd14iXFr3HCS+DItX0q3KjGObb+\n7ApkFfiejVPjTKUxf+tu7n83XJu+vW+sHGH0iVaW2evgIrkk8vvCYYEXTUA4\nzneEOpaV11bK3NZzWjoiMF79u39ZnV+qFc0bJ4fV6c4jmU9RBo7X1oEg+pSn\nPI9cF7UiIG7cR5XdCBFKWj93cQjjtlNtRqWuAe0vumTZG30Hz/5Jk8Y730k+\nEwI4/YvMsTbOng1JzShNBHKF00OIZq6YKrGzY7XgQL7DgHLeaKZ81X3L+Ujc\n5OMSv0DYhdKWv56afyyCS5Qig/5e80w7CGMkKvX2579lJqCy4sqLHzG9TtbE\nlQjM2/kzDnfPnZ1Fl7G+8AH4LWVlvcDFRRxOwUHwelqtdq/QNCv4R4TmHUXA\n3CfzasDdn9lbkqKHMe8KIrwedG7vuldQy95UA+9hRBTnFxvW3q7d57tNMk00\n0i8jabBatWZobJAK8t1HrHE4vlcX5XANJfWS1MQNvZ9VTBe+YNkJV/8stj8e\nNK16jb/JQpe09FA1R3Bpb3HtM4kXmGj8mt5kW2HB2+m4r7p++Alhv8eH3Duy\no9za\r\n=hqPq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.17"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.50_1593687741463_0.08719387612169172","host":"s3://npm-registry-packages"}},"1.0.0-feature-9d8d15-kc4p1jfd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-9d8d15-kc4p1jfd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-9d8d15-kc4p1jfd","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1cf9e587ee1bf3e28aaf9d1ff5c832d19cc50534","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-9d8d15-kc4p1jfd.tgz","fileCount":299,"integrity":"sha512-zztgEjMb3hHujIq6iK6zGqTZ63UfHpNpz9aL3GOd9DmPQh3qnrutGeQK7VBsYV3BkOLhTsJtEbNM6gRcywocKA==","signatures":[{"sig":"MEUCIHSPqdO4Z0UFsNh4SsrCYiJwjHt4fzxBm8/uONdB0jqbAiEAwV4hIW0zXWUngTLGPBqlv0ra9N17Pk5qM/moeBiXXPU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/cIwCRA9TVsSAnZWagAAt9oP/Rvjc0VdMSnFfmAsjDxI\naG8zowuFv7UGGgneD8PbKo95xEZrXbsuXpFCVhYnIdCJdCdJzfV88ZIkoqEt\np5+j4Vg2/5+2Z807bBxynj+tBapYyspLlpHGYjHsFTfeAXt7gmcCLhFgo2gr\n1YxJtV1yFxQBS0XD8iX3w/IbJC2QUGVYb1AnlD/4hOQFq43Se+VaO384l4N1\n+mmtsHavekOsO9TfNCX/ftvOwrR9tisfY8bDk0d8Q9YXGuSgNLKI/rQ9mF+l\nha9eW1OWa/Zrwqtcxj90L3kTGxmtJlfdCshdXo3Myj531P2KoK9BPtVom8Ob\nSOitdXaDJxhFUGIUgCp3CsSrM9RQTEmx/CdWeto1H22TULY1co8hrXEAuWyR\nN3ihD0N/lPsWaeieAqtTMk8RRoqkOPSQNgG2GuzmGkNCEGBTjGjwL2xGze+z\nsO+L76JN189cuRGzmLJeP0MVQqTVR4aXfc1nYZqEj80bksTmI++G9LDG+ffT\nZ8wqxlfX98gyeoD3NcrQjMM9yrfNewwBuB5Wb0Gm1yn8/zkuEbDcJUpBiJsB\nBT/0jco08R2PaJmx1lge3WRPzBBlS4ltVo4/Nukr6nCM/37uh7R3Pra/4zXj\nNtWnK/hUF5v1SGNwfjg42mAEu64OY/GZYcleMOHWF+bxVTScUuXxe6jHCFXn\nDvRz\r\n=qtN+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix  src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.24.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_form_field_wrapper_property_from_user_tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-9d8d15-kc4p1jfd_1593688623757_0.9028440756937424","host":"s3://npm-registry-packages"}},"1.0.0-feature-d2f9dc-kc4qv51f":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d2f9dc-kc4qv51f","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d2f9dc-kc4qv51f","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b7629ff7bda1a7b912ec7f6b8af301f659f1e864","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d2f9dc-kc4qv51f.tgz","fileCount":294,"integrity":"sha512-FJV7+HbDui3fd5mQV9GBATmqAKLmbaVS5sZnkUPU5Hn1Le1eIf+vVQ0aOohjmTc0pXZv8s8ubbnOWPT6IVPdGg==","signatures":[{"sig":"MEUCIEvj93ymS+mWY0PkE3zwkTY2ucAdhzvTzEtNya9WLDXGAiEAthCWjPdUf5SzkgL+HfowGRUk5LhOnXTCOKfgSc4gd2g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1442904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/c4mCRA9TVsSAnZWagAAC60P/i+/+d2B0UYWx5Um6Yms\nBwWawQY+Vyw9gSxizbZoGxkXgtaUNESkmsX0qYltH+Lzuz4mcjmFAXhl72oO\ny7FQm5i85j8oWUUuWGWWQ6xjCWfuiRE7GLYqccxaDk55MyvAe8PZVD3kWTlN\nRy5JDlCWCant6BdAVEezMmO39SZJop8AUWR7DPZNZD8Dzc7woDtcFxjtZgZ8\nzvxf6VahyPyTZiNuuHvcZ+xROkfkEUQjPtNWK2REQPywr0PDunxEQZeLTGyI\nv0+0Vpb0srzJ782+Z7s2xCD7CJwZnIjKVfWiiq9hEJ/1gjVMhKV7Zj64nGa0\nsmKoKnfcKeKTe7fmf7II25sUNUb2Ing3LpLyslbKQ7LihIoRPnDpNKq0Z+XA\niyA8f0cfgg2UJhHN9KfhjY24WfW24a5M5RtGH6EO8XaOpzkiEO3/ulIhj9oL\nydorOUm0EPQV26pBufBpcQUDIAsuojj413N7+E1jGjbEax0Tt9xYqdaQ6WwG\nQ8fkfyxqAo1s9NAP+aEy4yseSvG8+TVl1aAE+Ly8z9dSagyjJxuHkgyqEKdV\nww2UqEOSjKlF5r7IUXUZ8B8HXrWWd563sTuo9RhBo5dOlBsVN0Alk1ysALX1\njVxG4Vy/4WwvrXOFJSsVfr6JlXkyCkUmdhr2HrW7pEtsUK4R/MfycdbKbXAU\n6agZ\r\n=UuYa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d2f9dc-kc4qv51f_1593691686138_0.6695784486997032","host":"s3://npm-registry-packages"}},"1.0.0-feature-3c1f35-kc4u8eyk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-3c1f35-kc4u8eyk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-3c1f35-kc4u8eyk","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f5040291cd35c578a6384cf9c3a482299db188ab","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-3c1f35-kc4u8eyk.tgz","fileCount":294,"integrity":"sha512-zbXVXByqpTJwn+RSeyeeQuGdQHw/kkgjPzxIPdPEGm3ABUGIwXfxjeCD9J87iTqa4PWAEbjc7AdqHK1W9YYl8w==","signatures":[{"sig":"MEUCIQCho4gYny9SCbtjGoASAgwjNGzB226//q19/dhlr4Xg6gIgQzC+SWTk+NL5sQ50iZme7sJZs9MbBnCjqTVJGZ5UElo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1451563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/eQ5CRA9TVsSAnZWagAAFGwQAKFNGLyL+viQE9nSmEtb\nIVCQHeFP4SKrYQIhK/LmybpVHoUZ9Z+cZ8GLbMOPmiRD5pbR8ZJR3Dx9lnH/\nih6EiYkLsNCQpnMPybmfSzIcFOK3C6UvyFsfGJv6N1XvlFQoSOpW5CAPXxuM\n7FPA/N4tlap5PKxlPSThwwBc8fjaV/2ntP89HfrUi8RSNCaEWiDfAM/nsv+L\nKQqvDCqSxUDD3fs/HhbvC0CVVQqvyS0DhtyMLbgSdS+j91KsyKXtlb1V0mL6\nIRa0TW5zjv+LF0xaGuEABrrUDXMztKY59ofVnxezxiSaIvYMKR5LCUS8nhft\nX/aE6COfWd6an6NQihRF90GlLwkqbeRryHhU3HVablWzPnGirLgjCRnyfCSC\n0MrHzl1sU0xFEXyehOU/SFQ13oyqvWzMBhps8AEIudIhxU1QuxUSDhCjk3N7\n9iaS6kF0Gy8gWgh0TNZuab12+XHYuef5/3bDdyY6DAXNbTS1LOTikF+WIZSD\nOvjFskgMCggnLJHEVtmo9VusoSh5kzYEpB6t2QidaBHkyXc2ZUNhZaSQlVUC\nXZqeuW41U4QP/RnjPZL6x0jzHy4h18N5uURHVByw9ufiNdUaizF97KAAOx1X\nhu6JDPYhBowA0SIZJ9VKiFYbrBBcUUojVm8PeLnoPr6WQqTreSfaRhy6JaWc\nytIs\r\n=tLkn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_context"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-3c1f35-kc4u8eyk_1593697337233_0.18080311920056857","host":"s3://npm-registry-packages"}},"1.0.0-feature-e1f786-kc5wacpr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e1f786-kc5wacpr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e1f786-kc5wacpr","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"54d026d5e4f376fabac4d00e23373cded495a422","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e1f786-kc5wacpr.tgz","fileCount":294,"integrity":"sha512-jIZBwAb+oonNbKPqKO16wAhSgGDofncZGb1IEw2rPaz5has7RLv3pTAlfLus1DhNIDw/uVLHkQVIdZep4bQOsg==","signatures":[{"sig":"MEYCIQD98iEmEuK/h/OGBlxF4W202r1dVu63zwre47KF8oToWAIhAKjrKI+r1S8rPlhIV0SVG7eTg+W25+C4cGGWFJ+J3oVZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1451545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/t3qCRA9TVsSAnZWagAA424P/Ag8Jn8W5svS1g+jvCyG\naeay+q8PPB+iMj5AotrE3807yy54TjUWTLjPheebohVrDeTjT2DmPFZKkG1b\ntg7lDlo/2SIL0OoK7CE21cCCf3u5yBDXznKDl8obribkoqg94zI2OrooFvyV\n7ek2EIlEhv5Q0EDe7pCkAMapQarqIeBNXJl36GRc+hj6wKwtjvrJKLJjNVBl\ns3hKIgIenFOjBaKGNvefqInDRYx77zj1A1OrBE6gAnIXKyw51b91eccNaII1\nR1K0dXSqSMeKS20MTB40Z2GK82DCY24TjXYzYjFWF3rFPNOKuyoO/2r/6sJK\nQJPzqScqmNTkruOqri3iHM4GshnGTrlBdzO7dI3Q0Li8V4+WVkVg7CWWeIDe\nZPT4CIqyZjol0utWIh1J1UVcUJyIc26KuvHM/9Ip0dQGUIlwE++Ga4689Y5/\nDAqxMA1pzA3NKLNxSCHKDxFGI45+cmLoYKwwIy3wOpzcuVdcoeFzhD09wBdU\nMgFRu2yFs2wy42oW06ajiI4o3W60jz98sB6km2As5DJUc2x1zMe6u+RsOjkW\nocpAizfnjvkDw08EWMxKahljlAlv4XFrdOb3Ar+1+Zn8VMbKh7tM8jCnwn1V\nCzJE/YYkBb6sSl+nzixrdXFoHQkILb3f+3xBmSqA7pJN+riU/PDPiceap3u1\n8nPr\r\n=zsi/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e1f786-kc5wacpr_1593761258209_0.3626440380569216","host":"s3://npm-registry-packages"}},"1.0.0-alpha.51":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.51","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.51","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a42adc650406e999fbd7704eb3683c01bfac3c02","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.51.tgz","fileCount":294,"integrity":"sha512-Ngfjowo8bUojCrBlKEUhFD29O3M7pet7PjpT6eznjDK58pqdVGkoci/sZFop40AaDsebnxEeihwRwSc3BUB8NQ==","signatures":[{"sig":"MEUCIQCedfL8JW/hQwANMKk1hS8bV32Hr25Xf503up3B9dOHfQIgBHhj0vuLZKqgG2Bel/YGn83TV09+h25Yqmmq+fWqsKU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1451530,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/t70CRA9TVsSAnZWagAAkVsQAJMmd6WObalbydEIKJt6\nPqWscUtHB18m0MSmqAWnQpC6NgdRbNnQq+wPoqVJFOFQU868lIlXk0AWgngo\nJ2RY0zbyJIz60GTsn9Yey6cFVzh8akyQn809rVbSIEDv2ZI06HnLLFJ49MGy\nY3pgkDFGC135DR2jkUptNmTe8g7tntntmgkHux56aKUVqDeYGYgJD1xOvShl\n20VvtuV/0xY1y5JKyDJqGh635CtOrfKdyPUqD79ZDY2ZasICvy7NQlWNbLM/\nc6LCjfSPKkViVkcLhxYmRJ0LD4P46Fa8uxtFVu9Jy8DY6zZ53UGLxF0j4gev\nRlximXwWZXFRU4FlRdm/Bc+pudeI8yrui3QTprDhBxA0WPLc8pN58UCzHKp0\ny9cHPCD4ashVoP0rL7Yuk7InvuPoChe0Y7fmTv8mXIkaKlreo0z+qVkf6tEJ\nbRd0kmYh0Zd0cO+dFyQdGD0Zpe9RMgjO06L7UtKSti8CyA/dOCFNNlwQ2jwr\nFV8igag3D5x1YOsiHEJANBOnn9AvK0l4M+ujSTFBQzQ93uVi0wU6HS2X6Bn+\nOuoEkYOa7tFP0asDFyjXCiYq/fMQNtCht7ErIVgS6y9i4PsM/T5juPm9Olym\n7W5As7O2NxcZ3ohKqHQ6M1Ap1bQUeNyDELMyzMVmBdoPxJJe0wDfhVdvWOVl\nVuir\r\n=h8kN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.51_1593761524269_0.7064610851761115","host":"s3://npm-registry-packages"}},"1.0.0-feature-e3f0d7-kc5wowsu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-e3f0d7-kc5wowsu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-e3f0d7-kc5wowsu","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9e525a86b1015767f2b01c83e5331a93204c2c5a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-e3f0d7-kc5wowsu.tgz","fileCount":294,"integrity":"sha512-6BoIb1i8MWcnS997Sau+C3yo5FGy+x/eNnfE7xg82tfn3d0KLfkAS2qqedctpy796rhF3Q5+5K+O5txmTERPyg==","signatures":[{"sig":"MEUCID4uPx0Z+yjHk87Ta2gFkwasVXoxX71tZ+rkLhhmxgpoAiEAnkpfCaLGDLKhUi1CJyYL7FhO00SdS1DPH4mqlX0EdJQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1450955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/uCRCRA9TVsSAnZWagAA8mcP/12+cxniwZwG7ZxUqPTF\nU4KQbijRcuN4VL8QoO1z6vfxqR+YSWhnCnTNwysI57FygLgaK5TIPdRmeoL4\nzqlyAza1fTIfFH8oXKRPmX+53U9rDhx97Eh+/BWPQuep6OqlOlwQPa4xSxmS\nQyrBJOSm6zUL7LfenD47jgANp6rdLJ9rzLwvz22N4ZjcBXoCd2KBMXjhzTri\nLwLSrPv23kzRXxZMzPQZX/8uB7Knep/RczwypUweaTRl/HRkRdWNf74Ivsqy\nn5ykv2yWMrfJIlfUU32Tj6L1E33dL3dwzwjYoUzpuINWmB2ne1ramDvl9usw\nOtuSnnagWQndC2U6McmTjNMb7oqjLBp0K1KH0MT2QYK5zgr4peb1rBS420CO\nIQsrYMvzVKJtRA0TejIHLba5mym6Oqz2nJZpohGGC/Nf+V8ea1h8/SR/NWIN\nX4xtbLItZQ7Krvv0yGwIArKaT96KJaBksBqjyZhjJCMP4R/5mE6An4OMTW/l\n8cllaCKwzL0YN199GwOhqwhuaIfR5wOgHPY1eMcJ/ASiWxSdtXTzCUEIiUHF\nE+5r5U8egSYNjj9gIxzGsgSEawIeAOjJVYrk7jjvpd0ybQD/DaVYNW1TDP2i\nhVUi7xCClazDXzkhBAq3Xhrn1xmAR5CA5XVL60qzzXB7Fm+wyxFK/wZrtqPO\ncpav\r\n=/t2i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_form_field_wrapper_property_from_user_tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-e3f0d7-kc5wowsu_1593761937176_0.5980426295884158","host":"s3://npm-registry-packages"}},"1.0.0-feature-a3e2b5-kc5zemf6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a3e2b5-kc5zemf6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a3e2b5-kc5zemf6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"447cb63564791ae08d5166fac4ee2f7d34aefdfc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a3e2b5-kc5zemf6.tgz","fileCount":294,"integrity":"sha512-DxjxmyZM9HYHAfwcLSpBIRBUlvFXHKMKifcmTdwBmNRu0s9TQz+UL974qnMpuKlBGwm2shh7KCKkd4QJeqClSQ==","signatures":[{"sig":"MEQCIHN8Smt68p9QcwT/YhKzalL+wB4Hx2sILU2WY6sglbmjAiA8slr71M2G74z3RnUIZY8AeHxgqZud1nhmR2mdT+9P/Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1453682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/vJhCRA9TVsSAnZWagAAPMsQAJ17khj7LQTL5/8sFghj\nm83Noz8vu89S3m6CIHaUUcLFma0xrzNlq3rYE116x/0zIBUfGNTAcDHi8sEm\nmA01Lu0Sqx/MbbVRFKApGzDN4x7qqk8fgXW9n/S153M/x4E6Dcf96ir3u6G3\ndlRKvEkpfgCBz5dgA0NrWEG5PZZ7BXTXxRvIF8jvfhlLFWhrlRVWsexzct8E\nEl6pV2bx3M0QgRS+wv7sXv+M/DYWBFy2HW4vY+RjeWvel5IlPq0Gtoy47yGt\n16bf10ZXPzJYRejQmnqyW2RPHSz7mmRfTUOca3AGlmTDlWD1vzTWKjh0wH+4\n3IQe/b6CHqzeja+Jcs1EGw/hOtgfUQUIRutqyPryGiSe1mYUH/11HPTCVBHy\n8C/4c3QAtgsXKVMOgTU0cFpm1BfODbwbU9JwgyYYAKr+c3KX2IVsZWIc/FPn\n7gcIHIYSWxfk1VMEfJ7wRMHql6rzKPlci5m/FG4FagawOQ/eUVCZqdgZtkKC\nkyH3q8MshCkThqp/WhfHv7QxUwCLOvFOmMdxn2UpZ8aSs5sPzBvH1MqkHE6C\nvePz7LE/m/DcqV0bSTOPKQHBJgQKt9r4M52VZNE7Pcolt8grjvT7e9KTfMcI\niuYm/Mfljvr4fK2uoiQAn1AceuvINGeBs8TjZGL/EOODEsnzJHmCXVXMj6DR\nwBHG\r\n=M3vO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~refresh_process_instance_owner"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a3e2b5-kc5zemf6_1593766497109_0.42865852751844447","host":"s3://npm-registry-packages"}},"1.0.0-feature-5b2c50-kc685bps":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-5b2c50-kc685bps","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-5b2c50-kc685bps","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f755e3dc5001352aa3c42f7cc6ba6d7b8dd2a0d2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-5b2c50-kc685bps.tgz","fileCount":294,"integrity":"sha512-WgqY88caTZ3EHeQP7K2KOETZDaxct6zn+4gLod8ZPa6xTJgKPKRPjb0K3AU4/VXptp/AA8dAi00BGvXTM6WqEg==","signatures":[{"sig":"MEUCIBdB6dDsicZpHAoptGu54WsjPEc55bHgDXEC7Dtiqd6eAiEA3V68drQYCIUlNwRtE0oHw4DRaW73RB1mK0GCLsQ5wZ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1451545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/yu7CRA9TVsSAnZWagAAJroP/1dPCkkJhXDCIFAQR/dP\nqiqREnG3Kt7HaeqYDU7nv0pcTPjmL7RZfBtKcIehAWEyjwHLjs2Fs2cs398G\nESSIKEFGhs08wOK4kHw4sa10vmchRUuZH3rU9erp2DPnXba1C2/rmhqeAzRE\nGTjGvGauWA1RGnwkNa9h5TtFrED5WT/RMhOTnQfxSDRN3X7FsiEbBZ5EexI3\nj+3TT2YNLyc5LTvKDq1VrT63Dt+I9BbtYeojdrsxSNLG+Hk0jdgRhdilOIg8\nHgnkaHeDOMY/p1cdSvI+J4pXSyLpikd6oOA2h01Z6cCo21zsjZ1AYU0KHJr3\nSHlAViFJffjV4S24WyaI4Fb+HhVaYfQw0EmZ0Npq2uj7dmH2b67qNgTnNbbO\nXOJClTsZaP/OlcCPEe47BjNsU75FR8OHXAusu12rVrGI+qnZPDPpybEA2Jwh\nXGruNqy8Ap52hHFwWmPfm8vgA7zhkXDiInjAk27TZUMxvGtRQYfhknXNwkv4\nk6iTVxv+4CSkfhLRFqGfYWt/ywA1jqZRjbFEApxsiBxIPM5Cb6ZKC+UKYFqB\n6IP6w0ap96RLi6nSqSg1HW3DF44QmJp8OhNjHSE5/XsfhCfjAUagEUxwYQnv\nJlBY633DV9rfylYTq+q2SYGWZZOaLOHzYb6hsX4j2pvItgdbZjedTJPi/sc0\nJ3TO\r\n=HXpN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-5b2c50-kc685bps_1593781178887_0.37170183258778833","host":"s3://npm-registry-packages"}},"1.0.0-feature-0fbb60-kc69ol14":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-0fbb60-kc69ol14","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-0fbb60-kc69ol14","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7107a85dc95437322f6e0b81c8463e0de3d2b865","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-0fbb60-kc69ol14.tgz","fileCount":294,"integrity":"sha512-L0cPTXU4CKH9s/lWs8Dy4Bz6m+jpHp4nQrb5CFvjV3EoANub1jvdRbFeEsFxTIKmcOp/e3Kg0XNn8e3Ds86x0w==","signatures":[{"sig":"MEYCIQC/UpnQT3+Kfb7W+ayho4p62df6arr6z0H+35j+fiHa+wIhAKEhKNhIyUBOkyMXLl+Ae4NNFWqJ26fgbgaUcjBEnODf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/zXLCRA9TVsSAnZWagAAYlsP/j55g5CR/uzBfe7F/P3T\nCP0AOG7Ey/fip6j4Jj+iGktBY2bQukFVh8p0Ty04Ww1k7dv2l5WcfJ2yPvZS\n4DU/L8bQmvzdQJjGDbU9Zd33UZU2pcISdzB4fEpTUSfCdZUhkbAmiVs9LLQO\ncOkl08sQGcqQa73w3JbPzGSGtEwpW/r2hfeWXzaBDBF/jqVyBAJysmN0EbFS\nV5WMe5yh0Yo4YC6rOPi4WLci2LWFvMT8bj3mxxVQOdKLMP1iyW+Nng1samIP\nhGURLn63vEharxF5fDWTBKapUgawJPzluKlbeAfbzfQ9Adz9rCpJl+mRaX6S\nuzwcBkfsAHfiXWM6F6xcwmz4PoBhdVXnL8ZypEToOr4rpl+rMNUil26ND/yN\nCTSyOEw9BXg0JBnyWyaioCcgalx3DODKcSqb393kKacZ8P9A/nv2bTrqXoqZ\nZln+KfiGI1JvE1EoMqA6LVWcvwiGi5WDEhzgUKcpynOK3pkB1zW3uJ74L0TF\ns08fuFpLEdAB9G/ruzgIZ7RWPbnYILuxKJp+QxprOz2XaTGgvWmaljZfE/lg\nrHtIIu1/VQTEAOlNLv3WUPOESvJDUbR1TOV7X7xPo0ZXln4pvaM6eSJ/Ba2N\nVnTTaD5fdP3WZIe7GnkPcWON6VT753v0YDlaWElYscLrmI6lJe+Mfn2mU68s\nD4Dz\r\n=m/25\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_confirm_switch_for_tasks","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_confirm_switch_for_tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-0fbb60-kc69ol14_1593783754468_0.5051964345564095","host":"s3://npm-registry-packages"}},"1.0.0-feature-5c88d1-kc6oml8s":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-5c88d1-kc6oml8s","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-5c88d1-kc6oml8s","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c15cea838b49ed469ccc28f42863c9af4484fb45","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-5c88d1-kc6oml8s.tgz","fileCount":294,"integrity":"sha512-n37J8Dyb9VFTa1TsV3PKzqKnAuO8vCqAAU4AvrDciHr/s87WP27aXqutDrXgwIjkB23dF73IFVzmBdhkHpQZPw==","signatures":[{"sig":"MEYCIQCNI0LGcq/HCpd4mSr+NNyI2nvO6bGvzUOcKADAj6ux0AIhAKNquzK5gz055KUKsdIUPtLBzbBxzNdOIQVNZ+FazcEg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/5faCRA9TVsSAnZWagAAtMMP/0aVNvF6dSs22cF1W5WW\n7xfAweDY6QX5cIQnCS5w0zXk9xd15ecX0mQgqk+IzShH8SbdYOzJZ7fbjORg\nZlldZaj2jM/zmbRlOt5FkhdYP28k8a7a2SbmkvEkUzy26uD50KfpIb7OhncL\nx4dfjfCZRWBjfrjQROMZsDwY+leQMc+K0Cr0uyKiHSj87cpM20GtL2hcMgyc\nZUxyM+NEeIs4bUdKyK6/31LsqlFIADc36FIaIXh35fBOox56bATU48ZObnuM\nyhtDDQce+16BKoPiwJ/9GTXgPZD9BSzm30OONE5uiENd0AZY2ysa+D/f5D8+\nBqv3JEEhGZ/Y5IDXs6WOUsK01RHHJd9sZN0KeH/PACWOuXCiBZD56QcB/V0C\nX7jGOWysb8XbBBzam80itM9LSp0K0KFvPj60waa9WbBoWI2Izl79sVU8BRja\nqKFkIKZywPEwWRVnOawzz6fkCI3FTtPclnIcq+o6VKIruDVmvKf5FYdw/HX7\n69FbUOuca0oF9DPWwacR8BMxKTFL+JHQ/fmaE1LyKj58Sh+5BtPsVd6XuMB1\nOto3qo6SAObS+1hkFpo04bTEYJXICIOLfCQGbK3o/nUgJN3Agn5BKJ5/Fzsl\nZoHRF7LFjNbXOXLLMtDjvgPQP98LvGaCW0OcjfjufuvuwVVm1zXqJmBRYRBq\nsf6F\r\n=YJ3P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","node-uuid":"1.4.8","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_confirm_switch_for_tasks","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_confirm_switch_for_tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.1.2","mocha":"7.2.0","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-5c88d1-kc6oml8s_1593808857635_0.5870911480359946","host":"s3://npm-registry-packages"}},"1.0.0-feature-64cef1-kcac00tp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-64cef1-kcac00tp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-64cef1-kcac00tp","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"fd077cb264de2460577b32c94f9886e10b23a886","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-64cef1-kcac00tp.tgz","fileCount":294,"integrity":"sha512-eWVrYCKv6sMuPJggWlXlDy8fZ6XiIOEqxbKG4xUcA/Tah6OoZxShtIZjY7tf7rywn2AzBmQzwezxOBGwOABTrQ==","signatures":[{"sig":"MEQCIEOG1l1M3fu2nOb1XPXFPk5ElBAWBeOfv3mm5KcNX8QkAiBOmiNRfVHk9dqLmdtBBExGqMr0lh3EStwcIOPkAa3psA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAvXJCRA9TVsSAnZWagAAg5YP/iMGxqcQpcv1Cwh2ki6w\nHpBjujkVnR4ifl2jqbCDXegEHAYrqnyQY4Pr/jyVGWzo6JDoFOPIR7XapQA6\nSww7MbNW2B9trlkofAosZt1nruQ/5Z+o+wgRLfEKZxZr+jDTrq4VEdOUcm8D\nGI+WFWOA8yAi3PVGfONCsReR1ZpHHFP3jgCpSuYgxSD7AMwwcI15ve/UYwFA\ni8vW8sVTUwzp/N+YtB9gdy8RsxvedbOb8mAGaoOkJLMKQONJNDdu0G3PUTIX\nLVhfal+Y1AORY0hR8wAC6KvpxdSHZ1BEWwymkPkKu7ibbXBdv9xhn28WuN4r\npIxrvyPFgB6iU4tkIhN3GvtX/oOdU963ReMBddtxrg8PQhiyfbXfmAXL7Fxm\n3G/kDa+NtedfxRCLfuzccVxheaX7LF4B5vatkrtGVQn9+L8nS/7I9s8FPn0b\nlMfGJZ6HT5GczeM41buJzvM0gf4istQOv7UQO89UPNyqqmI1yhxRATR+3ptg\nOzeqOJKu2Lw9+7GlD9FI4i3+M5JtwHMp95OQvglm2LR7J3O1GIf5vDum42eK\nX39PE8zErvcYy3EVQ1ofzo6p020H5Jej0Apvq8mws2PC8Iix9OM9STIBFFFk\nacUKfflwqgnngI9gGwSSxCqxXvypSQdvX8JTSJ4fdqqmpTq/e/xC1dKpOevH\neesF\r\n=NEnX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-64cef1-kcac00tp_1594029513115_0.47532264628306886","host":"s3://npm-registry-packages"}},"1.0.0-alpha.52":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.52","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.52","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b1c1815bc150aaffd91afc1402cc2b2afcd4f059","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.52.tgz","fileCount":294,"integrity":"sha512-IoDc3jX1wlXK0zc6Nzuyc/OdEZEpCdf+5pHDxekq4HN6pfsfmFNescYZxfs9NGA8JyLzGTYJe/kNx4aCg1iFWg==","signatures":[{"sig":"MEYCIQDYOUxO2ctNV8rlppL0QcOOBqrGc7F7CytL0cqyNgrScgIhANIgUvUY3igav3NUEaLYoxKaf5617MDTB52bLyPn6Ub8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAvxHCRA9TVsSAnZWagAAbYwP/R0lDF9uSt/b2mq7e72x\npR1S8gfjvSWSvFY+K75MUBGkDmkdh5j7POzs71rAZmHYzos4b/EiI8cxCtND\nqFUsStVEQ+hfqPoVKRbd0SYUMXdWKqdhea97p2QkTsSlvX3VMkO7NFK501Kw\nZ9n8ItMbSn7Mt/LnWUO2/Y2WtsLmtCh+/HDiHths7b1TQYY73ul0txIyYiON\nYJK6Ew5CScCE3yd5a7/40ucpMiJ8+FTGeut7Df7o7azMgM+EqvrUJgC/ap9d\nFuHfRS5hVrn4j8771klniLdbvr1o957rKtP9lv6LwTizqECSCLpw3pPTtAZD\nmM7TVbsc62Xf09XA0aZ81F6kKclecDrkyi3l+RIXzPZ/3mnX5v/psTi5sWgk\nUClXJD6xrACcBl7FAYdcCkUH28URYHw0WhN0pJ3+1CtC2lwQ7XV9/RxPg+x2\nbnoKEoSXTa7hmRGIVpu/CzALupKXSxUV/gNQ3cuK/nFQdeRaCTsTUGUbC4Vm\n/IBluh9OSe3h/OsdKBDXV+UBQXIA6QaZ4acT+17aOc3EsPvF7Eb9XOF1urJ+\nEZkh8nBrg/mlUTofkkKNgdM4y71zTXp4jdbr3+vGhqMhh0+PbtzKeDUILq/V\noY+kSem6BTH4JV2xLvNQvqkapD+z0jZI8UoqNzvAkgMAI70r1tJGvRaXSxWd\n4U0+\r\n=6sEY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.52_1594031174891_0.38389748755957087","host":"s3://npm-registry-packages"}},"1.0.0-beta.16":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.16","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.16","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"852bd844a101ab8b514ee980b3401239caa04039","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.16.tgz","fileCount":294,"integrity":"sha512-Fgotx8GxlKtuOqdKAfOJerSq8zM7FhtEPXklMtWWx4k4X8f9E0Au1gK7J2bbRJjrnZlDsPUBNPvi0wOtpelvQA==","signatures":[{"sig":"MEYCIQD0PIbpfutEXY5VEjHI7j8RWhiKe2GMPCa/wOlt/n1M4AIhAKhYykXWkYW08xk54CvuEt/EMXkjAN3JCXqKEvppg5fr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBXuNCRA9TVsSAnZWagAAUdQQAJO7HYy1X9oscKdaM1pB\nTS/2GYX7mFD03dlbnpBDE2E90McJp56CwV+3Jvv8ZQlrUnoALzMC5QiyrP+g\nFtGkQeXyQxM0pnF5/ymYEuOKQZ7zR3DeaLesDUAQ0DbaEqsv+dFXs2Jcggvy\nYt5hk4zQw7zhu5fZMR+OJ2aHxFBHWaCVtGHSDbC9OsD7uOVg04nl7yWAk1st\n+hna5Qbcp8pAKQ9pDvT6cy6Y6BqSgzYP0+NVsk8QV0pzJydXygbMvSySFr1D\nMI+RDGxekH9WoVBZMWt8QfulS7OzSDc25DjHx1ke39/GXjYJ5UUwqMltzfKb\n9IuVxsxwYV6llNBY+G+O339WjQmcIkObL/1rsNauvrBaNh5lr2DUtIAo1eo1\nEr7Z/fc19ZxMO0lBJZouFq0ontwRMkmkN952wMsd6Cf+0y6M9gs7nqAW6MpI\n9diJTk7FwtDhZ2ZBMWKU83MY/wxvVtUxIlJmUBgYZoDDtDNkeiA9yvMbkAqU\nDPiAuYP68fc5FqhKKLeWrn0uaSLhIvSV6I0IxJFMmiuqVqQNxkmQxEoOFE9r\nBf+bjXeaOLb/1PgbMcDcRtaGcFg6huPUWHQiMhn6dA/zLy3EOtY6okztk67i\nnm0PUsgBWzaqz7d+QtLFHI/J/FKoAEuWLoQ2Va3QzJl5PGxHJ40oYsKbXD7Y\n+LKc\r\n=LIdu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.16_1594194828510_0.04312314772991965","host":"s3://npm-registry-packages"}},"1.0.0-alpha.53":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.53","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.53","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"54f84b7aa0b7234c590e36e2fa47272bed34f673","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.53.tgz","fileCount":294,"integrity":"sha512-FxSQkD/mWyJUNFPwfapWfig4oizXuvyTARFTceTQnw3jbgMTw2B5Qc6kImEUwQRKhFirXeQ3XsFLCjgKIcjHHA==","signatures":[{"sig":"MEYCIQD+iZSHyTRivGOH7onqxfmvkBXFlWSzINg5kGLwibcMFQIhAOlijto5gTmaVHxYge/wScQr8Pm3GaxWHpdLlfqwvhCJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBXxZCRA9TVsSAnZWagAAATYQAIH8znDdCdpLxkvkAowc\nJljbBfxRUHkiGTh6Jv71AZQcw6yQkJmf2L3aBSVMwiAXCUCPbLRagtwAG+25\nXWi3U04i41PN0PU7kZCUYf1pO99tgEAv1GmW8siSN5VTu7mo6sPOCDiEaxuU\ngMpbZ30bsNea6e5BkKJzJP6haD29qTrC7tKi5gnENzX9OxEuDR3tbYJ5Y2Kg\nm6sA0ADZl9MLWMwyyU6KgLwUgfFfYcDv9+ktxI+4BnUJncA9snUK3T8ZMnzL\n9w6pE8aEk9PsD+reYKWdt8K/ADMoRdCSGqz4vIY49owgE4u8aCbpkrthDRH7\nz6ANhq2lSGsTHCteJJhSyGZgWnrX972/tHuT/3b5DCviC/uwhge2hpeaFm/x\nMDgb7RA6hn5F8lxHKj3LpYEy4cW9Gh+Y1RYHfTJzL/ph+mbTmtwkn+1tWkK9\n1xweVVgi5LdhhR+hTaXs0f+d/KA6XnmKWG62syeq/pz0VdejxXH7asHe7Ua8\nmEzw8R5pRy3dZoITOWxVCQePIConmk9yD6p1keluZCKmpmrfQce1B7uIkKKO\nbIq8Ia/fjRtvD79v20J43LeYejgD5hMjOlk2py2gcLpITlwNLxzzxUA2pGZw\ndXFtYaVP06DEBIT6bqJoeNJdAmBT8m5kjC1bH9KbM1RK8TtwHT0aab6rupU+\nMXTQ\r\n=hUlw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.53_1594195033029_0.4775147839346543","host":"s3://npm-registry-packages"}},"1.0.0-feature-72ac9a-kcd3bd2a":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-72ac9a-kcd3bd2a","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-72ac9a-kcd3bd2a","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"71941bf8d14d387b3c6b3ef765142c80b9d625c5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-72ac9a-kcd3bd2a.tgz","fileCount":294,"integrity":"sha512-RSOQUluFkdYIXi0fwXfBHx9M5J8zlMCluak8DmX6ffJQKCItlQiEcUlSkUlryHVOIF2VbMEO1gOF+NKqIh53aw==","signatures":[{"sig":"MEUCIGb0Wi/DVXj5Qed4tfijNuFuvykFZaTiQjIgyNyKlRJoAiEApri9ryRjMIZgulpkZkKkb0hmlyociTklZZEiLg3Aftk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1453607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBYFjCRA9TVsSAnZWagAAVD4P/iYEoehzQF6gx3fAv0eS\nJKqONpoFCojtVtw0RQ2SIR2EtTrXFmskPrl5YKAdpVjv1C6T3PL0my4pyy5r\ntZrHjiWVVy/s+wWvifNM0NTPLPysdPfXPtZVTx8ydnEuN3w7SoqfLT0Qu/Wc\nphzW48nIqC0GikRA5A75xiPJ5KSgNFNGr2uPgKe26QBBNKgMbXAZpAcFTH+q\no5i96Qs+n8uyVjoiBFDFtZVrVDoBqfu12b4tI7TN4fkP+jmowZECUZEUWO/q\nI0x7eKE6ffTe/KBwT4gG/7AMiBY+2Rav9g46n+jOqdoTATIiDjuizeNgSRcR\nJrWNm5fr6WBZ7vMDo8I23bR1GroAwsDa/NTR7FzFE/FVWsl8qAaUlECyBcxC\nUhezjHfdfZAHRxsKmWIx8Ma1XrmL2gQlGr99xbbBaP1r/Rv56uvFcrIqXV/B\npNEFpFm8LMxv8zyU1rakeCInBT1UXR2779zjSNs3IDSaAHjY4kxn/13DbZYj\nmW5h3/yavMRB7miYVOMsaBkuKK/QTilOj/ccyo6XRKiCnXHtNUQZiqjYx/r3\nUifOWgq8Qj6+b/wZbqrQoL+nbL06QAHgy/lBGM13vEnEu0eRFZcQ4byhmiTF\nyZIOu6y2OFSXnCI8nVSIWM4AyXWIAAEEbcJF2KKMR3Nv65vTYX/oFYWzBumZ\nSudt\r\n=Udt/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_form_field_wrapper_property_from_user_tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-72ac9a-kcd3bd2a_1594196323267_0.7823857828447951","host":"s3://npm-registry-packages"}},"1.0.0-feature-79c625-kcd468h6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-79c625-kcd468h6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-79c625-kcd468h6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9b1873e88e9891efbe23e50f85117486d705734f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-79c625-kcd468h6.tgz","fileCount":294,"integrity":"sha512-pMOM8UdmuoLkV0xvjcIfpR8cXqfuoq0WUuGOatcUvXDKqe/cgP2zUEo0J2lUrYtrBHgshMlIQ4AfsMjV0nUjeg==","signatures":[{"sig":"MEUCIFKrQcg81TME6LziDH/Xt3HeuP9FvwozuL+fpYxVCdGFAiEAwi/sxruQWV1GLGTg71PtSTJ6guyfaMjUP8P8UJtIEJc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBYcGCRA9TVsSAnZWagAAppkP/26m6n8EvQnHEFl7o4ek\nbBrr4pLlcanOwUA8rhOveGN/sfYuLl66+fvtq1esFH50EFM1P/F7h/oHWBjw\nE+Ssr+TJASsHlyNyPORjfuTLGNPZpIOM3dvgEq/p8TuxKGH7pbnGK52gNm6Y\nC+ZVlobnZvKEfWLvgSgFPJGrn2QxzzG3AsSs/I3ssgYwR7/9gvVFbT15XutP\nqhCYbRJBjVxfr3nYkMJrCxOb9RLLzZpUBR3lv+adlv612r6VQzW+Ibmgx1zW\nAnBzwrWPhC3n/5V+Y4MNk1lrIpBIYTMW2G7r+MQMYT/hqUJZipLSS8sNDY9p\nSGRiuxqPmziMq1oLCeR06xa9GVald4X7weh5OuAYfYVZ1Bl1mHB7tPQr3CEi\n3tr0iE1bagDcB1IjJMK0EpYFLm0sk/jtbLimFq8CC6427mym9J+ktLMhaisU\nYMBZHvlOnHcjenNk7W8ik+0DTPIXq+bK7XWG5oBN98GVaDMq3ZvJtmzF5OUE\n7inKG4sgFYdT5AcDvz8Owoiz8lUvUI5Lqe4reQHmgflIXalhR/aGceGCESn8\n0qS95j0IjOuDYbte9IYWn/dASLMBN8ZzQqZvQXa2CSCMpjZ3w3pvChjyfPEi\nO4b9U6jLzdb5vZwDnXzvawIx1i0AnV4Xf7D7msRQzZ0RRadVq29sXbe/qFg5\n3c+N\r\n=mZE5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-79c625-kcd468h6_1594197765787_0.8367697998112538","host":"s3://npm-registry-packages"}},"1.0.0-feature-076f56-kcd8y8rz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-076f56-kcd8y8rz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-076f56-kcd8y8rz","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c43d71016ff70d8a8149d5514de2dbff0ab67010","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-076f56-kcd8y8rz.tgz","fileCount":294,"integrity":"sha512-8q5cJGaAO5BHUoToCnej+EShyVRQNzU63oD0ticOwHxwg7tuuuQ3UG/CHIst3mkV2EIulxH39O1BxAD80EUItQ==","signatures":[{"sig":"MEQCIFK31uBF64a5kdp6i8s+WQlmWsg32oRbuC56VfZvA0A3AiA7H5uTG+fLwPR644zidCHdtCH8aUG0khglkPBvI3NdCg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBaZdCRA9TVsSAnZWagAAXzAP/0JB+g5LFCxf9d2Lce88\nIvjR6dCTnwQZhBx3kdf3crtpdXz65GJ49Om05fe/RrJY2OYDjHtO46dAeCtX\neo2OBnANFHTXVBpYimG63quT83+AAnBbGNuTnbfcopy0FXmuUezOJiFkJaVY\ncfBhNOGS27RkLI4V6bOPkpzqTRVMXrJPluYsFAU9EiBlKoKSLK8fRMQnfnjT\nClyZCd1dTKp1Lf4Y9/I1+8oCzyG0zDOPwUSVgE9LZNTapyhwebAzPBUhPGTq\nQxbBKWuNBhox6XKWqjNLk7zOtJuqi70nc0HwTS4rqOboPyuywGEstWD5yTx5\niCU0/F99rAb/bp6mkxYcDBhLReEjYz0M1TL+7eQyquvDuDEORbNd4IzXleoM\neVRV6Zoz9Y/VpD5urMHEPziTzCdkkD2I/fJrS4wybyJhLY27mH2oi200MhuL\n5G4g0Iem3QWBHkYyvwPYnb0iJCfN3wCJRRiRSiilee64dsCL8Cj9BQzoi2sW\nNOBmp4fx6wrbwHfhEl5TZ75h28PX2aWBZXP05hPzMY9vKt0f4h4IKkup7PoR\nNDi5lFCVler9RuVgtUC4AzPGQXClKV0GmZhjkGM9+1XLHcp9u5U4WMTkOxn2\nvRnDx3sCG75heMaBXsrPiUatfWfp+zqiNXHaDd/317F82C2uuxA8lgxNOfqv\nR69C\r\n=2u6U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-076f56-kcd8y8rz_1594205788701_0.23096282784771716","host":"s3://npm-registry-packages"}},"1.0.0-feature-695eac-kcdgpp99":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-695eac-kcdgpp99","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-695eac-kcdgpp99","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"92d114457a1a07390a09e2d36e546a0a85194ac9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-695eac-kcdgpp99.tgz","fileCount":294,"integrity":"sha512-TUSpfbN1UfiFbs63O29yqS15LOrPgrug2Cc25a1Z/KyUrQC8pMnufzYhNWfH/eg9Xej06TI90/bnmexguAlysg==","signatures":[{"sig":"MEQCIEMcZXP5hOYksOZF1kHXqA2lyqberNlp69jkay06WYmwAiAdi1DKdhfGQUPp01DwR4NesJFH4cKbCfAaDbiYxLC0cQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBdlNCRA9TVsSAnZWagAAfqkP/iX3x66GDFbujX2nLhGT\nuaBTETn1qlBBai/aoCwkOaoWIYGu7uv5xBd05DhN/JexzW9oKupnYbeIPmxo\nlieCc9cyTP07b96SYTiX5c3OHytdOs89ejOXQPue7Y7bAzecgjrhJSffurFS\ny9Mjp0hI9MWN1cGEnEhUslMBpDvNQxGF7Q3/qoxRmZAUu0O+zuyVkuFMX8Gi\niEBpc84XW1oySqfT+uvgOVuFT71vDTOGpNB2dZuJ0JBsOsWybzKTtXxjowkV\ntGymGMI8o/Xnnv4VIhIEjCPOlRy4Q31BfeBqr0u6HzjMVM2JlWN2Q9Ep7MmQ\nLG/NsTm/obrAE3F0efNSpBpgqwtrbB3tLcl7xrnZByJvKWOXYBZ9OD6RLL+8\nfjchH9lCfwJG/ijbwbYrPnaoI4ahFqZk9h/L6pLAhweXYGbTEZ85ooYEjbXl\nbcv1gjeWNMNmqOWKpip2lNdwBm/CdNAf927NFOjv4HwWBnBrSPCLMa/gISwB\nuyyN3cfqO1Hzp1fSi9moMoDoI6yAP9UP35l0flry6XpTOPLKMN1rhvLbMm3i\ndSjcV74nSkwNa+cCLrI9VoZW81go8PwAFolIBF3SYRITECZC0TO66JJLpSkd\nDCc7rekg2JgXYs2fW4NWaNJbFX+et/F/NaDMEIJCkntldIh2tX2m8BT465fJ\nQ0QN\r\n=BQk3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-695eac-kcdgpp99_1594218828688_0.7375771282660724","host":"s3://npm-registry-packages"}},"1.0.0-alpha.54":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.54","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.54","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f78eee080cf8af76943b3dde708e36092e7cf53d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.54.tgz","fileCount":294,"integrity":"sha512-9FnDkRiDRyKTM2RxCamO5upcgxno8sBHMiz6iEvOYQGmsDtQCq9FXOWklaOWdP9e0XGpGD2G6d3tW46qH2a+TA==","signatures":[{"sig":"MEYCIQCG82iXvO5me7oUwM+4zn9qUdDn4ja3OePB57wx7NbFLAIhAK/qpZL/xFc/sh5LCvEjUMCsdSeVxGGHicMdWbsAauC+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1454181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBdpsCRA9TVsSAnZWagAAPYwP/03MutvnbXwUWi8IcVOv\n2w2I0fU/DMIQRCZdfT7ylZn5+KFRLHMbJDzM8B8iQq2OiH5BEq616AMmK9m3\n1AZtJe5/RCm1j6TJ2Z4qdp6b/LcPmaYgYjq4silZzZ3DXkOaLNKULIGQvgsv\n1NVP8Mzi58jJEw70UAOniDA4Rb79of6vXuSgXizsbwfVF9V8WYz09NP12EwJ\n32tL32Cl5mie8Ds6p8T0paXLyVyiGcCMDP5E4qbnMcibyQj7IUKpf3MEe+t4\nYbYbfY7bSLeowN+bn7yEdSMDuSfSM4sFe0xk9MJgRqGQ2G8CozZpddtwxA+I\nQbgr5FpEt1bXUCqhBgg43GuykAd2ttDUKWEeftYJLq3J+PucPXcT3QwYhZ8/\nwVkZTBTb99mIjJSjC4XckdL0JvDA/3IuNi2xJKFVSvboSHalMR6Uo1A9K367\nzMlXx3wh26HccGdF7CoWczzyJ/FDc7MlawXgnCNoA2UV78NCKJKxoOJdpsdQ\n3jtZAfzTNbP7OzooMLMh5dDe71Ay+C41Oz1m+4EeSFfnA47n6tGwNAdq9P0u\nF8s1jnSAX1DtpNrZTQTuRGl3l1Du0I5WL9Vp+biI7c1c97xA6g/39XqQ+dNR\nNtDaE4LVhVBueJ8s3wuDVIttNSoPQQHnMIHo0r22kHW7OmQZ6duwOeQxw0Y2\nJaDy\r\n=gJDF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.54_1594219116000_0.028708127952847162","host":"s3://npm-registry-packages"}},"1.0.0-feature-fb15af-kcefn8ou":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-fb15af-kcefn8ou","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-fb15af-kcefn8ou","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d4260138654cef7bd72e4b586b42ab2945fe0c50","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-fb15af-kcefn8ou.tgz","fileCount":294,"integrity":"sha512-3vk7a72X18yu3BcRJBg0NbANTp1XOmMFdInsGajvShYbKpBM/P1Kk1bmWchDxphVVTod2WxXLukmqWCgsYPbcQ==","signatures":[{"sig":"MEQCICPJ//yJEvuK6MEFd1xqNhGpaREL47+YOyU70WPLjQ8bAiBMa/Z4+QP1wzpcPABkUXLOdH4ZAq+a9y5Ixkac1BOpdg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1453607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBr57CRA9TVsSAnZWagAAMSkP/AwHn3PDCy5JJiXSNSDe\n71W3oCqjQcSDBMBe8rudgLcVghS4vSO0Q2BBW9QMKWFkluD2Y3KCb/skHHCO\nD7FQa6yJu4bwfmO9U6elCIs8MT4HXdtJYPv6VCyLucNPwXxj2ZVmLiykz9J/\ntlfKJFle3Lgv4gtkw4v1C3IXVC85OCMi1W3RX0hTbvQgRgKPAcZOvznEhqRa\nybvJtAFbC82/mfTJxc3dT70YkwoPRija/LflvuLHpWoV6ccCeDbwYAaGTCss\nuzXxK7ufMKn4EaU3a7eIENnmqcispKbJ5cF8aavihmAwGAkCfVnysx2cbkSS\nDZ/Upz/KYcq1VzP6xhRKBLUuEOxkZqj4hIJT+n81Hl8JMdqtaxADPCgLvwvD\nFO6XMrOXMztq8ORVH4yRF4jSzpJuT65BCBPAIoN0ABkcMnbfZZ9FY6P5G9o/\nI/6tth4CVPq5hxHKsONYxFoX6JFDG9P5DsZQSLd6uAhZlRFFB3Qn+94dLh43\n0TmkmdQTi7JYWv9DC895YVeaPQ+KgdZgTyBuVxUQpy8Vj3QDTW+UWP2+gPTh\nhqXDqTiRExfSpz5e4paALyKF30TEhz3KeUprSRlPSkqC+bhkRY6TioyEQJzY\nE00YkGgZe7sUGPOArGV4hBQh9W0Jv466u9Tggaq78OUKX60r7l0d6uM34idm\nLQCQ\r\n=/OXv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_form_field_wrapper_property_from_user_tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-fb15af-kcefn8ou_1594277498553_0.33231952012065524","host":"s3://npm-registry-packages"}},"1.0.0-feature-b79128-kcfv8w3e":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-b79128-kcfv8w3e","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-b79128-kcfv8w3e","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ad0ec27c7b1a8eb7c9f9df847275b7e988d9ffa5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-b79128-kcfv8w3e.tgz","fileCount":294,"integrity":"sha512-buZ24z+S3tRSZdLWtWONdQjiZLGhs/9MWrTUV7MV3CuDznhy5E0uOvtNX6NBKZIykPiF/jB7zOej7LVXDDmtKg==","signatures":[{"sig":"MEUCIG3umQtxbb1IhmAotafZhxyI6I7m+IuLQ8JnomPd1q11AiEAzTr18kkmF05PoPlI6S+87Rst3ePD3JUHthJ3JpmcgIk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1453563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCBEECRA9TVsSAnZWagAAYsIP/1YcwYTK+sJll4Rv4p8m\nNMMa5D2GSu/nW+Fr9zPg6Gb8ll+EoV3AvaLg/1o8+E6U5QEBbUTBhqW8/dOz\nH9KaSvAEkyA6eXGF8IpglL9zsRIRirPbgRhnyhLMkWi/8h939CLjkhfr7TQv\nQn4/DxLFLaaVcP44HMoWt1/d7fMb1g1YnbAs+aWe+8XToft1pnjtgfpTtQic\nBPh5jr+i6NCr18JmZhd+3d+EDPpkpJykg+roZDh1vB8rsEen6uGwVkhsaTc1\nAIHkZFRXgQz+5n6fhyHRFJK3ZZ0/4tGIbGUUj11c1NAvzQJSeCHPIjnp+Off\n/7BIP2jwa9i2IpgHUwcaQ5dXS+BUHziMkPwBntfK9uLMxGCGuQOLpbTCq7TJ\no2R4Tacf0BQ1bJNs4Uyq7I8HafMrA+FPpUDbXpnhbfR8H5mz0qCd3UXuiZ9E\nLPDykF8F+LagbgMAWLOph+pGJ1/b3egxskXIeLIBSeiNemOgj2SEM8+4UfHm\nq04znTnanV+4G/eVjgVqlbq8/AdPPjYJF4L4Y6M1my5HEP3/3obp9m6MTSX7\n6wObU16NeVQH1I5zAXjOEzlg3NQZtEaOhhwmIy/wfFTbxvVL+29ArWZLv4J+\nU3UH014xsAEa/k6WTZFiVvZBzs6knU0WFAbSEKvoPabpswXQE9r6ozY1VT59\n0lok\r\n=cmD0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-b79128-kcfv8w3e_1594364163637_0.9758806196353329","host":"s3://npm-registry-packages"}},"1.0.0-alpha.55":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.55","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.55","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7a3f134b12d984165de41102ec909942e8acfd89","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.55.tgz","fileCount":294,"integrity":"sha512-mhX7mjgfrp4peHF++2lobfHave6cDdex9cVg8kyu3Wi6Nwd8GcV2NnDOGlA4ZgT57nDROdkN5y1A6VjepR6SlA==","signatures":[{"sig":"MEUCIQDCCoCIIbWRolAivkl/temx+EvwfUJ5Owqa0gzUisaBKQIgBsOJ3QqEZRgh+o6OY4wmHGQbPvJoPyAgNulrPgAj7Yk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1453548,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCBHhCRA9TVsSAnZWagAAx0UQAJkO1kP+Qm2nqo32FQzO\n+QF8Lovd5yKXugdZBEt6LPcnpMHAzMj0rk6/s7b85/nx5CT5wgmezHZ5qbMf\nxap/y1fWjImKcCCNyq/Ikda34XagRbs0FAUEigRWg+iiV5P3lOy3eof8RFx7\nKx5k9wlTRXsNQk9HwtIguOHRKcgeBPH9ywowBAALd9MXzUNiuR65PcqyHRd9\nUM1dy1wD7JH7DWAwa9pJrwKJhnKdGv1kNKOocCS0tA8kbtp1YodVRmTaxo+p\ngOEm9vYNupAcuEyUroYhjx65gakRedY6Vw1Q7qj7YOZoYV3HfJ6CJsmGnjNs\nXm/Ss6ZLZzpv/xO/YWM3nou+GRFYN8SSopWnjOxIUtIwhen9JDzyovgYF63L\nIyU0Vq7RfAbH6sGaU5KHe5EkKtoR5o7yfDYvUVcZNg9Ef0VAKbNlOJBD/1Dr\nbSqn65ITnz7rOn5MJE5B+XjsKdXCsHRqWidYpEJXF04aOWWG4aJkfG8OkJRx\n3l98p9BDfWbZSKU9G8PKk/jDIUN+MYzX7mrwF3FoVyxVbWGM2EDQje7GkmdX\nKF8ZlmkXpns9sEBC6NXT8nUZOrR98VHEZFeXR78Ew0/y3hFsez6HRP74BC1G\n6EQD3DOiwaC2W4tktxyUv5hBCruzuonfogrzl6U/OU1lku5xIBYZuuNYmfCJ\nFM4j\r\n=7Lte\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.55_1594364384563_0.8395425994828134","host":"s3://npm-registry-packages"}},"1.0.0-alpha.56":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.56","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.56","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"136141f03e1fced1820414b3cd02e6fb702cdbaa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.56.tgz","fileCount":294,"integrity":"sha512-7kBM5I5dYtxlTBkwu/pSDm7YwbJProdGIc93J4orDhtneNJP1JFpYJaT4ZAqkCMBFePYSKexYNbSuC5sE8ULGA==","signatures":[{"sig":"MEYCIQD0wmHtb96APdUyHMuJS5oPC9W3rbMzY4tR3jiDecvY4gIhALDgEozcpz5FX69eq0jrNDDOTHVnvd+aBN9DKTrmuaZq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1459041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDEsNCRA9TVsSAnZWagAAC24P/05RQE5oBLQvTRYd3jyt\nZLjvakClUY8YzLELAK3ClGBf8oN7LSZpLQnru20hE3yfK013CC8VX7DOYO+m\nq78BU08L94hvbamYjGz2Xm5b9bWBTyPL3krQ9UEp2oXnZkhHQTSGMWUPvB5Q\n9GU99b13TirnkOy7E0ew0AsDgJB04p4voU5aAYM65wXWzJ6nHwbuMx2yW5aV\nfUkRvTlznNROQP86SXNVJEUPSznAFKzvYg95GH1y/99Nw6OpxMfJ0nrNqOLh\nAodEMEiTXvwB3Xnxt0Z+vKueReOwdPEvKydio6Az3C3/PdxRPjxIf54l8Wvn\nYrnY9F/FgmYFWiXZcl2h8Y/6AggpGSHbhPqpl1axrWELk+uEhy+VJx4aDRZS\nUfKmjy0OVZNlicrqkZd8CXzbjX1suC7L6+OXMGXM1dr6dh9HljPxWXbS7J2L\nQrYAwx3XQ9LvTWagOgmFFS43w7ZjUNXUHzardZO/BrhvRwJzUCFuA2k3U9OO\ntv+710NUjHfF0tWfUFX5OW5ykC4xwvRSKTwYSY6WzSXS3rxHkrUXVkCOD23P\nbKoZ/BkqfCmwB7d0wiD3OrsxaSRbzzokPXm8971crwSB5T/MzHQj9X47MRu+\nHwufaYdggeM4xPbKHDDldZSJq+6xGZs+8AJFvzSCfeLKEqeaKZzpJHp8SBiE\nc2ur\r\n=JTQM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.1","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.56_1594641164534_0.5198987520159277","host":"s3://npm-registry-packages"}},"1.0.0-alpha.57":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.57","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.57","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"db63cfe41165f35853e60e5165c4a415b17aaabf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.57.tgz","fileCount":294,"integrity":"sha512-tnxHDVscfN+1qc/0x6+74y0z2aj30crP81mj3aq8UYnDFtDghoBUu1Jkdrw2MQmIygH/w/d5eQE9Pw+b92TJRQ==","signatures":[{"sig":"MEUCIQCnNZwhS1aZ8BBpycZ0N5P/qmkp5ZoCbqtk4HEUWWKISgIgIOgNSLJy/v5ncCljSLJsVRfwPSDnRycyDhXDqyeirWc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1459041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDdFOCRA9TVsSAnZWagAA6hUP/Ry3z5+FRVM5/ScBWdfD\nTwnmL8XcjJOitcuDsq5AR3QEpLyzCc9zh6b7Jbq8LE7Gfg0SfVbKU3OcGyh7\nJBzpkF4VYStJEU4QuD/Y4fWfMyJiw5qO8htTpMisVOjJ6XvSqof6065iSwqD\nQ90Mng03UAIL3dqHsWGpaFWb786SP5aGqNr3X12zqNRJCwyuHasy2FIYPiZp\nJS+iUcagC+tVN/+Y0skv4e5xiw513U/y/TUczV6X5xM8pd5MTz92RjU8nW5y\n/H81qiRyrlrhZ47C4DkC0KdBMnayaaE5xxc43CXASt0hj1HQEAjZnBUtw0wy\nNJPIZPyqWs1a2cmwfN4C6dznNKG7Bo6LBZqpKXfOr73Hqg7EuPcrtpFfr843\nwcQJdTL0tn7p2uDudypS50Cho59natMAMDq4xxcIOR8Ufp3WQwKuHhlT7cQo\n3Fo3GJbWxYP159akAXNxSJOrsSelAh8CHDQp8hHNTEn3mOlcqnIXlAnUCR1X\nKfnNTW1aBM20g4TJNcykkuIsy2dfCXw30mO3PlQlh0dMJ6svJ8TjlbPZsc4w\ncHoOTTEQJAWxaw3GzSVezBJQY6m0FKduG2SwPlz2JdvI8ion7yCYfl7dmIVf\nEugiDWtyNK3zYL1ei24kgCyvnaXc45r0ljZCabSGJK54JFVsPU17idxXW9/4\nb7gG\r\n=0a6h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.2","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-alpha.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.57_1594741070140_0.06004579524650144","host":"s3://npm-registry-packages"}},"1.0.0-beta.17":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-beta.17","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-beta.17","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"812e8125eeeb829fbb3e3df26122b2664c4fdf9a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-beta.17.tgz","fileCount":294,"integrity":"sha512-Rjb5AZt2/qNfa3BDxhPQDGoWtMRJen9cMoXDb37KmIs/EgeYoNAHdoZ9D3p1dOx2gkuwN+Uetg0ZF8nFIptDvQ==","signatures":[{"sig":"MEQCIBM5TWtd9SPICm68ww1xODQVv2EKaaOvjhsRemt8eOSYAiBO317KqPvqAvwi8A2B4o8rNEX5kRulH9o5fOs7l07DOw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1459039,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDq5oCRA9TVsSAnZWagAA5yAP/2TKDWkQa0xZ5jTSQ50H\nuq1+VJNp/0ug3v7jXK6awZYRQsXIqZ4l8DrjGxBQDCQ36HQ28OIqV/WHsDdt\nhiw/FjTG/3aY0FhVAA0rXKi9aB+I3xOf+8+usoS3ah0q+58ty4W3b/GhqNl9\nxmh0mDCdZo6Q64W/ZUhWSOQ47vphlYsED3kxAObcCV41h0G8C1UgAp5svhS+\nYtzc87ml1tD5PL2pNMAhmUaCZf32m+ATrDxTPAODIJJsVS9Kt8M0JsUqGRzB\nLNAXZ6p6WxfcrnWtOl5hOjIDAmnZ7V5N7/EcU1KySRYnsOkAZBsrALws8AX5\n1cMq9FqeN862ycUFMYmNW6ipaVfmqE4K59E9kV+xKos0UbHZ84AyPI6iwyTc\nN9+oc7NAWa6PuyU0MAhOc+3Zo4VNIliRarMN63gc3lcEhO7AKaTRa7h14sEK\ngWoFd6KpySVqzcsxVYhWaAgU9D+0lxV3q3GLjnYatyT5rdDvTvmjpQ/DmIHL\nuJdpDNQYXVBfLe01pZSBEL55rOk/P3a/gCsZdu4h26DWZYtTfWmNP2B2OOYu\ne3jubiB4Q0hKoFVCpLVuSockJoWJ4qO/suMYn4c/9hQdpGCAn2UKaUAtWPQ6\nW6lV1GTdibqAfZNs+J63z7wvIHG58WO8BafbsDcW4dnyV+L/w6RmfKnBC5U5\ngCOF\r\n=lo3w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.2","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-beta.17_1594797672442_0.8092496145015131","host":"s3://npm-registry-packages"}},"1.0.0-alpha.58":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-alpha.58","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-alpha.58","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"59023163694645503935d202be6d9b6bd8d08b05","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-alpha.58.tgz","fileCount":294,"integrity":"sha512-/3qdzj8DAD5mTqAoMT0Z9N/Q/vPUofYyKZkkggb52+GUUsZPDtXQJ07S6wquT0KfqGxTaDFX7DaSR7KPNISi8A==","signatures":[{"sig":"MEQCIE5Lrb0qKk6ZEgBKCRhHnBxIa7tfMn3OV5AKj1RKmOzoAiAZIyWqI97VPF65cPsLLj3LHLZ1j4iv6Ev+jVWdrTJFDg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1459040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDq9RCRA9TVsSAnZWagAA6DkP/RmAZu+u3Qe889+ZSagA\n/PkOWVug9m4k/roFJHBQwHRYMwj118yx6/t0uSMDILkPYicH6tDPQpbt8qVh\nOqGQR+ueLNyDhiJWNPeTHV1GdFanq04/R1CBjzNkUGk6HBr4jOXTq36ceXvs\nJm2KB31S87nv3TvUDUG1ZMwvTM6j0KpSU5OwPS6xOEf6WoVo9Tb0YozqezNd\nUipixFuvVkgwnCyHwNOZ/3N5TqcM56rOz4tx//dhMKwBsNq9ywaOod+wD8fk\ndA7ajKzCy639tNn09Pa/+CPTIjlVRSn8rMM8Hp/2p5eZCh3ZEQbfNyI9nTgh\nsQuDsfpmnl0qlh3TivjmSDdGxX3YKjRtj2loKiu2njKIMm4Tfy6JRILpeaZL\nqjm9YPYpNHzqhcZbmZpxIFCoFAqYYDP3SWv0qK1evsGNTAlc4L8OBiOii1dR\n264Woq3pnCK/flqOShtzwe7iwPfhmMsT6YW6uizMVCJbHUv3XxM1e3UEtGV6\nto7sVUL1Xu8gZ0bb3cnD6WFs/GtdIyxlc8/pUHCm78X64CljsgO0ezEz6UeI\nG6vCa9MoFE0/liUzFheTfccZ1RQKKG44uqgl80DnTB6RfjTxVtjFRTgdqLk8\nzARRgHFMn8jp7goGxZbLmGP+5UMqkl2k9SiPQEcPSARzbxYgZUFRLP3JJD37\nFYMm\r\n=XNTz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.5","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.2","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.0.0-beta.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-alpha.58_1594797904653_0.9054316417807249","host":"s3://npm-registry-packages"}},"1.0.0-feature-d1b538-kdg0waxk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-d1b538-kdg0waxk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-d1b538-kdg0waxk","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d4535f59702675f9cb9a67f35eaadf573ec60214","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-d1b538-kdg0waxk.tgz","fileCount":299,"integrity":"sha512-4phDdNnheIjx6DITlBsNkAQR1utmdQmFRqzU6K0sppZYPD1v6WIWPavz4xRnnpAz1WqsZ6k18qDeEIvmJ4Sdqw==","signatures":[{"sig":"MEUCIQDASRxBTqtpmkMYSd2vRNVYeat06G2gavMx42XWS8zf+QIgN7SO/3FK2TyMiAcSrAa7C3vHim8kNMx00p1XK1OUZzc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1506853,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKW0pCRA9TVsSAnZWagAA52wQAJJXUWAe9GMtCpH/Fm7o\nsujgF3EeQ+rIHePy8/hgd8Qe+yMCmul01r81BUx8PkF9iRgvrbJvXNEdP7DW\nSIMhn2cSMUp+Xn8nFGKohPdCfQVXCAX7o2uqrBeNV9GJVuUVHnyIJmasTWlK\nosbMOKT6Q2r8PKOwt31wVeLoyuokcme9QCSbm6AkzNb1tDiDFO27xJAfuvl5\nzfOeRG7o9w4/BxxGQJ0pKBcxbOZrpd8ceLKZejx9i2BUoGOCmJqaO1zAfgdo\nrDBflpgZK04txI7Ld+5sKzt4AwHW9/0dQbOCZzlan/8GeQ+R4Z65fS+IiTNk\n3CHsMDz97LhPhDUD+8W2pJUwEC3Gxr5mBO5Cg0xzlXfM2har3XP7u5UmPtRY\nm6xqBShAte1+zDkjyUoCiLBLKiY+fFiUiL/vl+Kwo4jyuEWm+7o7RfQAPznV\nwjfZbkpltVxRN5Au4h/9cqfjHA3vriWxlXLqqJNnv8quzzQO2KZNg6s3B9N9\n81bCvm6xx489w3ETc8TgE/9yIUvP9MyRoyXaQ1yI4PILRBLjr3F9K6kC8fHN\ncyUgo/RtCNe2wR4B1arD7kP1EfXoEBKUojMeL3mruf20kAnaVs3MbF85lNqY\npNChLmWdXOoHim+jGjWWaHIlwo6piIOUyCT7YJhYkpbEgYgCHqzZFphZEhng\nzNso\r\n=gqh7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-d1b538-kdg0waxk_1596550440975_0.848633472351251","host":"s3://npm-registry-packages"}},"1.0.0-feature-0eec92-kdh0uwvf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-0eec92-kdh0uwvf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-0eec92-kdh0uwvf","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7897e36d0479ccbcb5003e21dc4683aa872e155c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-0eec92-kdh0uwvf.tgz","fileCount":299,"integrity":"sha512-WONrDGfanfrIqCx82yrLlLbVU+7mWxgDIRSqED6QxgdXN0Fd3bxYLf9kCASx1G1eoC6/nlKOOltdW/j/k4D+Rw==","signatures":[{"sig":"MEYCIQDCCqwW4cdfOCja9/rp2tcrI90/RKGRBfmSBKfDJqlNWAIhANEx8vVDZ/WHUVtx5qI314gwdNMxGf+6ZeLjqgaL66p8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1506945,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKlkfCRA9TVsSAnZWagAAU/IP/3OzfOJm2LioslXJK91U\n3auly89fzR0OsUVzLSwCPxexME8FY6lPQxOV2Yt74IGp+3++9tHngiCPD9kA\nyfWOtNl1F5bhwzgd5fSaroIJ7T5ccAtURivAFd9jdk3TI91ftb5ecttzHZJe\nT4LRKDZASDa2q4pDC5zIThcyOoIda/9dwb+laf4OjvXKXbm97b59xQSqww//\nBI/nUy4zXurrWc2gL4j/0tp60I28Jd8DL5dVdBXR7jzwYN29mPcawDeuX+gp\neZr9oeuqIthnI30dyLLP/NHWw1zADqcDvnAY5zkxpm11sY8pnUc15ZLIFxNi\nzAnjR1gymz/r81D2veVwlB49iqZUr7JCdPAHJcy0r2l5iTH5ewWWZrWLGTNy\n0NpHf6qvNqcE7QkB4sxevxyk4hw+qYYvr2dNSac/kcLRuNWYOxtgwtl141iJ\nq8w54B8r7JJoHexcKztt/SPKkP8KQk60JSHL+ChT3eLmYClRa7iMlQ2OtYTJ\nKRGEanA3tyxnTFxF+XR6S36lCSRXlvAk0gksu70AQH04N9D3dTiFrdWzvQpR\nbSoEF4XGy/UegEd+LwnckK67D+8dOJLBm9FqfK6Lvt803RWq/JH5wb1epaj1\npQfipCdNhq/AYP9wUt0yLPlZkScbnaMG1bWuQmLzZha40snovjutzTXouuXD\nWO1w\r\n=pq7R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-0eec92-kdh0uwvf_1596610846381_0.49523636365268286","host":"s3://npm-registry-packages"}},"1.0.0-feature-1ecfc0-kdh1qwqt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-1ecfc0-kdh1qwqt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-1ecfc0-kdh1qwqt","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"09a33dd3253ce3638531f1d97eb1860c306dfdd7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-1ecfc0-kdh1qwqt.tgz","fileCount":299,"integrity":"sha512-AgnVdi0JwT/VsJ5j9E1LegPPOkvZhfWErNwNlosut+168eTyMP4m1sggoioojlCHsIAZEwi10FJYR4EAfFm68Q==","signatures":[{"sig":"MEYCIQCJGfKyc93cJDDNRTbyfeAuKKAG7RBzwLfPDN+UT8S/DgIhAMn0MlhjIpm1CqHBQtDdN4wCQx99SWdsme5f0OEsRrqq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1505450,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKl74CRA9TVsSAnZWagAANrYP/0dqDGdyFeQmHEU7436K\nsS33ctjYnM6CD115zMb86Awb5g+yoyJsOfhZwn8C9tj9iry5OO1ziI7xGRN1\nfTamtz5TIIRy9mO6O3oLHF5Brp5b0maLgnjwKTcW90WJ6/4HWumhFIElCs7/\nPnCoKUtst1fdbEf9IZl9wXqJBVjFJ+bzBQ0sbiCSZNrCsfY3FeOiv3zSSjuP\nkNNMcIyvw8cP6ydcvD8+y4R5Aq27cBLc1mnCcGYUM91iDwUhAdKqrIRX5Jtr\ndLB/0dyrRFBYSDqMvoMsEmfXmZxIvmKEBXzbE453SexRWJSuKOUYrIIc2C/0\nMvoZ17YXUtszl5W08fNkOftEkFtEbOkWtEGFBtMvIV9ndAa6UBvk0LjK86sC\ndy6cQmWpQ4Jdb625NNHG1+B4yrf6PbLGXrNkUpwNQj/7yEXLNO8K5qwosoYi\nCG0LsyfA/zWW9Frkn9mkWkLGyPaipaOeJyt8eQVptSdoKC0pBdspl6dDYmyF\naBBaTffW2+/60s8rtXuwpZY/2b4R/qzhckqrhq7Dn/Xx+e3d4avuA/9/Mbgk\nbeVvCqZeCof8z3tbDv6fumoWqqh+KZd+KyQ62w/CwTmxunVyK0RO83hjGS8m\nM6NE8mZzteUMcotENmtwvMBEtrh3oRj2i4I9annWF6t2xeHxT9Xdo4umcOOR\nLV/t\r\n=C4K7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-1ecfc0-kdh1qwqt_1596612343827_0.44545610585376005","host":"s3://npm-registry-packages"}},"1.0.0-feature-83b6e9-kdh2dl2u":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-83b6e9-kdh2dl2u","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-83b6e9-kdh2dl2u","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f43eee559b65a3d98b400ec4f8df2eda0b56fcc3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-83b6e9-kdh2dl2u.tgz","fileCount":299,"integrity":"sha512-aS/V+Fq3KiJ1m7YowP9Pho7kknY5o9FCpt8zynMWeay+nDzG9UHWzXdGNJ+mDpeaMNNEsNzsNjFCyXRSdroimA==","signatures":[{"sig":"MEUCIQDYfmfdIyNHfa7QrSpAbxAH3G25uLcfr5jfqg9dZshgHAIgS8u45tzszAlElDNX2YqyPLnirnNQjqc6nCvKllNtpek=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1505488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKmMPCRA9TVsSAnZWagAAYisP+QCAv/yHsnC01+6kl5Vs\nR+8ySXK+W87A5RseSGOGxNsDrNgyD42e/PMdIpVGVjPZpwhh0hRd3Rs710P5\nhHLwmMF8S7B68Ve5cQoEFd/yUmCtLF6g5Lmttnah9g6/g7IKQg8Cxm5OhHJN\n/EtmhiA9YSGT26oxsMiCz3Zx8cjQmxTWAy83zh+x5yy4cHCQNJUGj86wvl60\nMxDbl/ZTIXbW4/gzCffqKswLBB3DG5wvn+rtmPk2sTnUt+Oe2dNFU3X0R1HX\nrlJ3cyRCGM5OMMKrq+65g/jIzImc30Wdcrno3F3LCE0zahoJW5KlflPPO2SR\n/NcrJulRO/Az8b3fYEJ5JNa5FimB9g5aXAvGfsxaJHVWfNdMZQcQ4tca2cV9\nf4zEEHRuJJLjzkTiFjSL5hmENhGRE7Sea8Q2NGjZUW9Zh9zx36CAmvnQnVMo\n14XmwYRh4jeI/AJaOsrqEGOsXTTIoLe4l4THjtRAvZpNr5WMAzPAvpmyjFRG\n8OPvs4sKCjw0RaHFlTcHQ3jcNkVndzDUTDpUpwB3/nCbA2lpw8Vlqgct3rt7\nKQyBXdaNJEsc7XuRJeTOQa7pXTSXwMuAfU5VDfG8O95ZQR6a4MlP8+lKOjk6\nSn6yMKPrI8NCI2VRw7iJzfLq2LbzakqtHr+sXbHtFlKgKsywLkKnlwLs/tre\nZD/6\r\n=ZCDT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-83b6e9-kdh2dl2u_1596613391346_0.0230658208738741","host":"s3://npm-registry-packages"}},"1.0.0-feature-5e64a8-kdh30x33":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-5e64a8-kdh30x33","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-5e64a8-kdh30x33","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"814b2b3db5b248386227d42d7f1a89b582726314","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-5e64a8-kdh30x33.tgz","fileCount":299,"integrity":"sha512-KeC8E19NmLwyrUvb0g+y/e7oJBcrgReiMuPVrSQ8XPlKpTyik0AeNbnq2LLMIxAzOqcgzOcFYKqovcaC5mdXLw==","signatures":[{"sig":"MEUCIQCW90aM1r2aXSjvUe5AlVAQ+PTCvIJ9TmYcehCCgt5DngIgNUB6bUl+AL24m5cJ7A5npFdEUGwbe8aJ70TkboF+A7w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1505849,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKmdVCRA9TVsSAnZWagAAYOEQAI4rGYS53JiB6SwOOAy9\n4EGVlKbb/0lSI/O3TV5UUbtETKONBDUmRqlzHk2KDYLEPKs+KXWRrfVQz8uR\ndtiTfekMC2eorHOahhg0O9cdeRK4khO6RKvpalHJwfuehFxGnuC8BszTa507\nY60P8Pj7NE18ECl9vFCfH6O9sVqRELj59cPq75/t8bGFQK5658XKTWHuUpTA\ndIbqKdKymmky+xGqGZQK+YyNWaqkVV4QTcst8X4HXNvDE+/SIJhF4lmTxEUu\nf2dhFIofpb61FFc2Y4HBipMAeqDnE6bjo94/WwMU6qmVvTjCvMYy/DFd6ZbE\nAMCTX+zEYZ6WILjMbJn0VryG4va6MSSLZD8LS+7rRAWzyHjJ7qLrKPyn0BC2\nfV4PVEgSc2kBoV7dR2ByhyTDT4xYUV9EOiDwzhtLgv8WvgwWcnSXGzms3pBc\neZvpSXAzj5Mn3AuUq5Bdl6MRn7+TaqMqaBmWov12N044Z+iReN+dLQXeIMs1\nEZIaQZAHg0993KF9G4a7tJkEUygJzBzowvb27h6miiAstCM+j5FqPFT8u+Z7\nSgDQidWC4XGn2ncF0LQkxZuZBcLTk0EZ+u1PI5JyF/cMi7AsVjDyAVPTllgD\nKPhPcPXo2yAHEMEX96uXlm7e4HcDeVm3awuUZfXgc3fagEEf9ACHTiAl1o9Z\nAJhp\r\n=5xgP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-5e64a8-kdh30x33_1596614485227_0.9916479840335146","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d6ddd316ba26cd7d8cd448ff526483d980b7f8bf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0.tgz","fileCount":294,"integrity":"sha512-HlHTVm1ziBpAhoLcXgOiT0iAkqv96KKfcuFivNWjE4jP7BUHPANzt0CM83RuGO77W5aZC0sTbFOHKq23RUGZNA==","signatures":[{"sig":"MEYCIQDuOOSG+LRDyE3EhStQ4YvMC9gwtx9QHUrNFvmdDm4pGwIhAP5sn6oX1LJXMzqJO0yVkS4s+o+Cg3DdOPVVfH8itdBe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1459024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKnBUCRA9TVsSAnZWagAAV2QQAKDt16Y5fFYYZZ8l3MMJ\ni0R+OryX1stJeDQ84Pztf3OsRB0+22nAYg6WFE/gVgTxzussz1QcDz4qMvQb\nMz5JX1qbfpxtniLg5wP4HreKCsMGhkEfB3FRARA2TpcwDTyH88fAr8JppVJf\nakXcaNfHQog/hR+8sNjH8BL5fLrBxMZ+nK3dvgUK2j0viyxvQaQMkUmhkwUU\nEOzwbT8Enj/NbCZRIGaU95hi1IubdJ72YnELgNuNUT8OU+3G4vlS4Tf0/BWl\nttHTrXNK1T9J2J8SVDWIJLXL2WaZa9jpntEpbTKLa5PANXPMYxwHchAOzPKh\npQFqx2ahApPFDFS+3OZCA8k+6d6cGYwJgcEyrmg/4gptA9pgsC80VGmePtfu\nU37cdY8A1nXj6Stv51rmK8WZw760R5er+9PEzoo1/Y90gSml9UvH9bKrbQ+C\n+qhPcjj/Ds06l8OmKJw2jD3qMHIFEGIWU8RprZO94GxKaN6I8gcCE1Jx+0AS\n+nYNABN1GRm0p6UlL3n3hRCi/Um7epF8y0zICXM+JGJDwYvZdhe0P1CQLWrk\nwCHaLqENROTp+rekPg5vGAzSgVJB/CHDN0exJVZs6jwxuJ7Ef9UFmcKCROPN\nDWXFt2awH2FdVmZciNmS79w60j/jLnWJHBbVbT2W78D0sNsOKt374PnIh7NJ\nD7yY\r\n=dXm2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.0.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0_1596616787509_0.26605325305641414","host":"s3://npm-registry-packages"}},"1.0.0-feature-5936f6-kdhf6rn5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-5936f6-kdhf6rn5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-5936f6-kdhf6rn5","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"99ecae1e119186dfa0491b4f16ab37d97bbb8de4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-5936f6-kdhf6rn5.tgz","fileCount":299,"integrity":"sha512-gE8HmVLpMXg+lY/71CvXW6sdudTDxI5t4kypHk55zUp3zIbNjWPkWWUZD25KdDqndLtvuwVRRVYToonvcKvxzw==","signatures":[{"sig":"MEYCIQCyRDEDCtOl4+omrvIATNSE8l1FKFK8seZGr9o3F2cvegIhAIXlvBsiYoKz49ZsukZ47DrBznIjzCkxCj3bd/6pNrtA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1505997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKrciCRA9TVsSAnZWagAARaQQAIO3RLrXWRzNGhImazY+\nRPs9q4VDBcfHsqitgFLpUID2po41V6+wGWUYPea+gL94i3SNjjHQ4yMaYGd9\nuzvKE7QkM7WoylAel5Th7mLHLLCa1aURpi1wBGdI/qcFw/gO3qjJhVuMULTs\nCMnmUKjTQPoly2yIZ01CqCsdQ8pYUPDtEB113C+TnpNtF+oI9VUgejiAwTNp\nFtwGfyrKrLxTzqnKMbi1+jtfq3hmo5JXQWzvlsq/G1M98Frrnh3dgUlib5LQ\n1GPRQ9kbEyH7zrCv33VT54Va4tJWNJsYT0Fe6IK8K/tc8Tv8M7CdqtkEzI8o\nzFmXmCEnvqxzg1lOzvsweAXsPm7tT2sqCK5zKDhObjSJZ+mOxIHlEkb6V/0z\n7hp0TvCfJ3EgUjiwyqJAGRyvKeI/O7EkGmd2UjNmuKEh5JPXDXQfOUOlzWJH\np1NMpziEWOnZZVF8Ph9Jto44DT2aEF4wM9CdZu68pflcex+vorAU5x8q59MM\n5w0Gvd2Z7j21nGilQsqV95DGxp95lHyn5Ij0/jaDFPbkOewCWLbKXnM0nuMu\nlAbLtDkW1Y7iJWrg8Wb/qSnUHIpPVGO7cD6oiFhaWn2Hyt7nkufg1b5a/AlV\nejoH5e8wxEybGvm+mli1AIv9v84P7HiB9a/fxu2ARZsEkG/2RN2Xw0kpLZty\nRGNX\r\n=MFFz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-5936f6-kdhf6rn5_1596634913816_0.6260221232414984","host":"s3://npm-registry-packages"}},"1.0.0-feature-a421c6-kdiqk9y6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-a421c6-kdiqk9y6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-a421c6-kdiqk9y6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"27b5f8e9a0b6e10dcca148fb138d07551d4eb72d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-a421c6-kdiqk9y6.tgz","fileCount":299,"integrity":"sha512-pbulgoV1prANHCb7Q6EeF4EqaLNa0avF5Pe4rJVhuaiRV7GcPLi0bndJPevYlr1FaV9alNcodGgrD0Phx8cXDA==","signatures":[{"sig":"MEUCIQDv6m71gh4sPN4KpOZwx/5zyN0pOZyK2x6vPCgOlu0ctgIgJ1rCaXE/LD+jD7X0H/XdikbZy2Yj3/75NYoVzcYxHwY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1505294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfK+36CRA9TVsSAnZWagAAHkgQAJinBYtZGpRLWb62VRaZ\nEI+ql6tghQoZhI9NkVoE9tPZHk3G4AYAUWfCo2Q3LdbMsYV7tARgP/Bx2oXH\ncQ1pVrtMfSUU8OdHtiyy42/61ZSupDa53sstOcRd8HaGZV8EpxFibXxVnO7Q\nDhht1R6BtPXUBdvmWj2xofzf053l8U6L5N+B930wMkp7ZlVZBdYQLLFAdcYy\nAnERDSXzWKGYcxyf/jvon2bba8FtsI0gpTpBVtLOWDmnFiZzv4EBadCw3nfw\nk/tAallFIt0N05nigwN3Ojg3qBQJQxUtWZdlFajpPg3HM3yubcO2j1elmsUt\nWcXzTPEXusFsS/XMoZyj9tfLSgZ5heNIzI9010EIOIplVZ0/j2lOp3eEnbOz\nZLCL1QtAJ4MV07a5y/Pj91VT71dtWZ99ub6mUlVR049jeZ3iGJW3t7hm62fR\nghvK1QuPVHOW9WeqqvAu9XH/6tznb5O2Fdx7zqG61XsFPrjwbfaFFBNwmqas\nLHLUA885F7slV2a+BtpSTQMZ/mosy4WeivbjOksXTHF1549Uit9BYIWtdL5U\n+VSCH+Q4v6WlQcD0ZpEGrdMCSBQCS83UG56t7p32CgpgVHk+2s3Md5p/qV73\nw7OBCKQr6t4R899AmaG5H7csLbNvObTQ9wSEEoNKb9QS5Mqv7KbB9sLzQ6X4\nElvR\r\n=I0yY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-a421c6-kdiqk9y6_1596714489511_0.9674290693565619","host":"s3://npm-registry-packages"}},"1.0.0-feature-366f5a-kdir6xgt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-366f5a-kdir6xgt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-366f5a-kdir6xgt","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"45c38557c5647f55d8f23f6cb47ebedd0c5a7134","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-366f5a-kdir6xgt.tgz","fileCount":299,"integrity":"sha512-Ay6iwvZo/n0f6oUpbhPJzwa5tFUUd4ejPNMCnGQ39ullEd4LnjWDll9pgKhIkMnRfMFc3FC0IKL2dETNalZNQA==","signatures":[{"sig":"MEQCIH34baXgjX1CpeLnm8fcmvx1G4+aecyseOty3nsnRUlfAiAn+DfGKxXrZw7IUIxVNSZSbSl7n0jkR6salN4PJzaY8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1505294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfK/IZCRA9TVsSAnZWagAAxTYP/39oNIYkR6GVSmjfuN2V\nReiqLNbagtRMA6WwHBqY1r+qUErb1zFHvklWnp3GSq/FGiVKegP7LtTTj0O2\nwQqdBrl2HaGBJX0olII0pUoW3fzcxFu3tb2eOH8Ll3qWQqHaRLkZyyueD6bi\n3X6iHpnOmLCpk6Lu92sqSV6JEN7LMZn8QvfHq8A6aD28PWS21/BqpMZyVCxi\npOwyX/EwzW4e8ngZSFsCpy0hyxfqdlU1fXY8j1wmDdTAb0TBkhSmyCajfx5D\n36JY+MsN0cR3bRjLIg/Qm1T5tlBS/V+QZBAGnyypv0qwwlfXKu9UVQJtaLmj\niPIeaEeua0HFiuDI9xnzd+N+6RCvyQXiWN7H0b/V/4m26P0gVrLblog67cX2\nmTYd7SgTTmhxT0BizK+pWo39i/yYUsb6L8+Eay3d0c80qP/ZPRXegZoDPSKR\nGZn5w1A6u7FRcYna2ROV+fbYcyLZnrlAjE+LqHnt3zBcia5QbeN5V0fsPLkd\nhy/0fVfza1VGh5vzZ7yxVM1X8EWWgh+mUa5PWDEx9KtXB2GC+LcG08aHoxd5\nWNw0IOxmXmYT43lQfuGg7WZOEZ0S/mVsHokrwMVCDWalt+RzhpKAUQFUst+8\nq1tX5vpheBUjFdE1Mxgtp5kpPxXCzX5yYvJOXkEH/CkbktBw6b0O1mKe89Tm\nNzpr\r\n=k2yo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-366f5a-kdir6xgt_1596715544640_0.7777816428447517","host":"s3://npm-registry-packages"}},"1.0.0-feature-0d900b-kdivdmis":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-0d900b-kdivdmis","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-0d900b-kdivdmis","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4a20ae07b7710b6667521e7dfcb50e5b5170f0d9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-0d900b-kdivdmis.tgz","fileCount":299,"integrity":"sha512-e8syXibUs9lBnuL91Kzx0EfEqzf169i5GxwwcSDAZYdJKnYXj9ToazDGToZ2pzSSRX+1U0sXtOr4NeXazKYODQ==","signatures":[{"sig":"MEUCIQCMadUHrRMXppiqdjRi69Dsi1GxU1sCZ6jLeSRTt9phRgIgLsm9HH/uIg1MkCld8ykOsDiK7Fx90F6Euy03uPpeVHY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504960,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLA2PCRA9TVsSAnZWagAAjbEP/1+6ee+ctnGvzsdu7Gw0\nLh/9Q0NoMXLkgHmPoJ/cC3F39LTptjTov306GKtFk7V0GUbhLbdYnsaUKZTX\nKPPm+TLxPwpjdowp4ILt7B9nwD3N187IKBKTofej7A3zUAdDJmymQhvdYJfa\n7LNOL67/SF3kXajlZg3HCoM1X0TNEMMtTgqLpeJpHrkEgdaUMMsJHPJnMrfV\nIhqj/11jhaglUxGky6bKAsKh3kfiF18dad9EwfqPPfHgd3dW7Y2+0ZE9nJWa\nMjiuLZ7u/s9jgwQ30W8f+c6xoS7oSSrJpMo0FqFs2h8Se6NyVA7PKKW5PMYk\nd9NvSHf9dzE1PzR7zmRXDeaVIqK2zVq6npyjg/zV/g7W4vdFf4GfOp8TunKd\n6PyelL9MOjRd/QOXe5+x/xir14SKfQQ5Z/b2eJtzonPjDJK+0u8qag0Xj50H\nnI2JCviiJD+JsMSeFVCt3WhqvQe/p7D8fL00B/tZ9rR0FQn6m7Fzo3FZAqso\nk3GqcBIfItQY9YUnOKoUMEDp0s9SLzneoZ7sRLv1Ue1hzfCGCasBZ2K3xbE9\ntRJ78WtuFBP8C+JbkpSMWvFOSWd3tx9XlvAu/TBi2KruTHE3X9Uq4wJM85QL\nU8D9scAMLchDZbHqlryUzirrAYCnZwbXxqIufp6fUkyKpNsRdyBNtTbuBLds\nUbuV\r\n=5C3c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-0d900b-kdivdmis_1596722575091_0.6686750945816948","host":"s3://npm-registry-packages"}},"1.0.0-feature-302555-kdivya14":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-302555-kdivya14","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-302555-kdivya14","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b33f1c3353bb90bd40ec1fffd4bf16cc5ad2b936","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-302555-kdivya14.tgz","fileCount":299,"integrity":"sha512-0BlIjRa3aEw/EnBAL32i1RV/2mEJI4o/KsdRVQPCSf+5QZ76LPhHsf/iP655atxil7KmCtH7Jw2ZyH6tm7suIQ==","signatures":[{"sig":"MEUCIBCjwUHQjI0mut0+z+W3u8DkEqHjD7y2Gtkqi0fdcvuaAiEA541ZepuD1F9r+rWXbpJnRWNLdkoXQKANZCklFiMu9ko=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLBFSCRA9TVsSAnZWagAASzgP+gIk2hI2Uziw1UACdpFa\nDgBSiPVk75iZoiS9r7cdN6xSfHfsiw787N6FHtDfcpeSuk3sAEm+pLBZEdRB\nJi7aeLvs43Nx7GVBflz+exDJLHXaVa4VjKl2CDg7nxeojwyTOk4z/GxyDrXH\nJmNrhBkYiUs3yEu8iHdV2nKGvdJ9TxOxSPsdsn0QIQ8KrJ4U8k8NcgvW6j4R\noQSs4AbHYrgbwaCzqB5qoMvEQaTH//42QVc28LXqEYKtt6E0CxbFcKEZw3wT\nuCmK4+n2qIED8jWeF6C2+f/RCjvR1GbnckAXOIOt00Ny8tr5Hw0uPNXQbY80\nXZORKiwePuBKSGonTWQpjFxW/shK7SEkoYdINlGylmUmzVtcT0HdNipIv7H8\nxhu0Sh5Z4FC5tRUYurIq5vaZE4i7a/udnZfGkAz4zaA3hPAkUCsm86dsiVrX\nk9ye4/65xkUVAO18NvUJb870Gz1aLstu8CnJu9rSjZLEdXrNh5nro6prdoLq\n+/Sxeo9puL6QRYGYoIKy7yAOjOxdB00jw992ataecXqZ+sJ1Ol6UdX24cdOd\nxk4h1wS3eXFHZyDr3wOm++alvThXWHXON6t6mI6hmLgucPV2V5Gn/6aYmonZ\nTsNi40O0oytnEgktDgHiSdf3Sk/e9jN1h1P26FklQn7zGS6AsWqxvLbFSfsv\nyDwT\r\n=+tkZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-302555-kdivya14_1596723537634_0.11495199179852333","host":"s3://npm-registry-packages"}},"1.0.0-feature-8d5c43-kdiwec3z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.0.0-feature-8d5c43-kdiwec3z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.0.0-feature-8d5c43-kdiwec3z","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cdb4cf1d6a17c42aa2a202e70ba1098d4bde2db8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.0.0-feature-8d5c43-kdiwec3z.tgz","fileCount":299,"integrity":"sha512-HQcz4lw2Z+d7IFvFMIsj2JtvS+e0yN3jZ19J6BiekQWlYXmwFPT1mCjVdHzPocmHFyBHk0ojqK5fPEE0XuCQZg==","signatures":[{"sig":"MEQCIHvfXf2L9J3HoefCdKLYzUrcVvYHmLJ6DFyVz5WZdqAvAiBV3O/JKyAshGRUyWY21KTvEYeiJXpFzvh+2hnJpX21OQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLBQ8CRA9TVsSAnZWagAAilAQAI3qlTSJUoKLhXSlsn7d\nB2DIuHef0rigtv9mHGesxooyG9ypG7OGNGdmRDfUQhQHT32aVsC9p0h/ObNP\n8kJf12FV19dXXBpBppT9Dzrw0r/fSmAW+ecoRVzIH6DpoqUPolf+Zql94og7\n1m0S2/zxpb4l9smvN+/UEJpFzrAJI9SlSoRNdD5J/bCtkHw9k59DNqjifU6Y\nGkadynpgJ9iwNEfd6asR9+9ezlPIAmAJsIeRUKQ+h3Hqx0jXShCjtECyOHQt\nrvtdy1pU82KMbdsZIHXOYIXoCcD7ctZjNtu1/GImq7tpgnBsbPDlXXzQ0aDx\n0roouNeEzRlFFSWma/20L5X3HNCc3jnXwcBCOwUj/ZVadUUdFX8Yw9DaYonT\nUizOCQhKJp7+qW0Uxv3ip/qixD09IvG9ZUanYRciA5zQRZI4ud0j0Z9M7NXa\nCE+uPa+NqFnOHs7QYs4/50W2KxnF1MVwYCzjQzmwOtIRKiwCdJ+Tb3fAJ05x\nms7p5npOsx5KGFs1dI0Aw/YS4t7n6L0maddctrmv9PPSZNm4EAnxCS1aQydS\ndn4HS20kTMl3tC/l84jo4QvjFUMK3Cq8535nkuV81t2PfVrq5FpXFrbd0KDy\ngF5IGf5PzIVuDnchCWO5Znljkhyts2DRVAXI79n0NLHQm4OsdlFkjeJH9Vh0\nmc7Q\r\n=z/X8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~add_event-based-gateway_support","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_event-based-gateway_support"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.0.0-feature-8d5c43-kdiwec3z_1596724284462_0.9089656735412881","host":"s3://npm-registry-packages"}},"1.1.0-feature-d6ab8a-kdjwnvea":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-d6ab8a-kdjwnvea","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-d6ab8a-kdjwnvea","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"90dced40bb652e832e085dde13f2ec91e9b184bd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-d6ab8a-kdjwnvea.tgz","fileCount":299,"integrity":"sha512-UqMp/O+xhQnxqvYRjbvDwosSOkAUXy4JZni3hX8MHNntiO8RvwxrkQoBJzKJCeNBH/jbXn169nipSmkVD7734g==","signatures":[{"sig":"MEYCIQCXBXlGY65wygAwsyDDQYeFHHeLsCYZzba85zJhdO3QPAIhAKCNzInXmLbh95L50QAPvKmISLdCSUpl8wBhiLPsinoJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLQIzCRA9TVsSAnZWagAAJ8kP/jhGFbAf/X7iXqIdqeTf\ngY4K7XloEFht9mi5VuCLAdivKd0SnlaO5C3n0ofGhjqGs508fBKgKZcWADGX\n5esfBQvlA6Nq2l+hmAxnVgFCHwwIlV9iqC1btsCGmzFrPVzFCVpCoY1YKrD+\nW7eDDp7f79QbC+ojiuzQkON6LTvSlz5N142d7AClMfkPqtPCpOLN21ry8D9h\nHyiW2D1ygZv6jD5z5fuXyekzg07hBV/+8R/B0Y6iNPGteOpl2UbSzs/zndfs\nqj9YyLMddqxaSAAssv6IT76Co83PW4eDorjubdrSf8weN3dDOZDn/pJT/+Az\nL/LOQCFJLwchQUdm834820Aq73HP17fpNryjGVRs9xDbgyPkW/1wvsyojttp\n12GYtUaruvJFfuR7zJBBXfQ2HOUPpkFQvT7SZ0Sm+PNcfV+dLFr0W7mz7zLY\n5bLzfh8Gv0NpiWz/Jj96pq33hViG/Zo8jladmauxQx9i1iDSDOJt3m8w1chQ\nQth43FY4GLqetWeCFfJG1trYSy+A89JVSkEnT9SnVRCrb6pqxM0XMVkIveBy\nxLaYFgvrqNpVwFjqYGXqr85awC4gjYd7F3hAZ0/gvlktxy7YEpP1YY5KQAOe\nGxeFk/Xz3/8eI3Qft1yDaA+x28JXHIxsgaDPqb9KHUl3o0qHqquU3D8IEDuJ\neZQI\r\n=2o3N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-d6ab8a-kdjwnvea_1596785203096_0.03991415186834191","host":"s3://npm-registry-packages"}},"1.1.0-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-alpha.1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"052c9f774b4c4710a126109deed2768244f84efa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-alpha.1.tgz","fileCount":299,"integrity":"sha512-GWQoM2FYMHcirh1ulUjz7ReriPNcJCxLR7eKiBTzLOY/QhrGKhWJE+WeKRqM3EAK0EvGaZUrl4961H83TEaQtw==","signatures":[{"sig":"MEUCIQDQY2RPY4sSV/6pWWeYN9EAhp7r5Sk98MzUspz2M03NswIgFnLK0RR8OhCGvUCljzXdbxx/67d3Av5UICMovUtgvPA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLQShCRA9TVsSAnZWagAAovUP/iRa1C03KI2o/GJFgnip\nKAFuq5Tfiayk6gvmDIdDjrdRiYJd1CLNM4szEG/0kwdow8b75Enwx45BiRji\nMK3KGlZrkSNawO00PXN0xYdUHcT7cyiPYDx2o1KVoa4bfe55/+jK5AEI54cc\nlV2H92LW9iuvkWyEdEHb7/gdmP8i8g67NGvZrGikpE06J9nzVC0fOWShl1y4\nNARIw1ge7BKDBYLxd2U72G6TzgRyONNVZM6I6GEVFYsNDOptxESZWpi/N8Tp\nZYmwZaGAaXSVhBxagPtQ6QYBwN51jXRaQiqVNXz6cmJZYI6QWUQSLyU84zxw\nGRb0E0Q6Ja0I28FUh9liUw1FjPRiXd9MVCxJV+59PxYE3P5fG7TsLPUaio1M\ngYwSsiTd/tG/pTL8ggp2Ub0BPL58KkLJFMJ2tQVjsp0sR+07PQVll7DWWQOJ\nqd31fZu0prCkkmrDGgpVK34p5Fxtrz0pf2ZO9rPzgnzmeMTcgg3HwyVlNiTl\nd4CQ6AhSepsC0yBKQI1ud3+zuRHFG4xAbYv6BraHU5bTdGDeZdvge11WDaqa\nMirzHkbyBhdxu8ERuiza2Xw3O9wrUdDfhHaz/xeiSCN1ryImLAiteZYlNLCv\nsCwi1hxrUAPux/IibWhCmpxATOKJ1O10A7S6U83lejXyu5mVC1zyfv1/Kfbg\nVlTI\r\n=811x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-alpha.1_1596785824965_0.4529057682878823","host":"s3://npm-registry-packages"}},"1.1.0-feature-0ff095-kdoequmz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-0ff095-kdoequmz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-0ff095-kdoequmz","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"58f32bdf62148f7b8d07e2802b3417078890f358","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-0ff095-kdoequmz.tgz","fileCount":299,"integrity":"sha512-KaDUcZraH0UYKEVTA3A2aH5UlWk/qMmC/vKXKCed/Kqi+HkSIsKLPFGncpG3qVbg7/snAxxOeXr9oTgXi4APhQ==","signatures":[{"sig":"MEQCICaOLAnywsn9wKov1JN4GWmf8ilu9J4CDn1LMHKsvax/AiArQdbvDxRwV8YrG2QJ8z64GIy8X9tG04/t2PFxtvulrw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMSmZCRA9TVsSAnZWagAAk50P/0Dqy0WN73mQ6Z8pJ42x\n+NQ7WOQhDyDd65ElqRxbJNOvlYeqhcUnFT19ZVqyPQBeKhmaePY3OjRU+OZJ\n0cA0TqI2iPcCTifHPsL8jTJPMy6NHmHHCxizfUNEttic8W5QQg/nwbU+GgBU\nHrGIZn5UgHCwtPi8YGk52wav5V1UsW2ElH7L5HD+P3v3DXf75AKMrEJrtzsM\nWWyKlcBvoK00PU3x1SScwxyhWfic96RRixGvaLo+u5YHnjxrc22URP1mAEIS\n2Yr5V1Z6UTTQ9a2cPSggdWnxKbd+FTY1/qAtswUFgtgXnyDGdDKrxHihV3ny\nap/Kzrhtsb0XnI/hlGXQxEM8+zq7ceXYwQNSwkHQq1ptWRuXbwYcj/s5mERU\niQ5im30m61ADfdn84f1yFFUS4tlBYdcSaJXiHYciwhRD/YW9K4CaKCinE+yB\n6dnKZokDq2F7GDXRFO67FNJ0ZWa/Vex+tqpp8+mdYxGiDqK2cKxSpIeo+Bnm\nwJaAQs8IgFW22JtAvYACkTALQGUNPyTyrdVzg/WTc7Vnkn7m2Oi6jswVPjiJ\nLUx5cpVleIjAyUwYS+9Kwe3vXNqdeFKvUyqR/P5DgU+fdBrNXz5u/r345Ytp\nKBm+ldOLiMQaD21Wi8B9fQ1KdmfFNI/E5w59sC7Ng7IPLze/Jysw7ps27Cu8\ntAbX\r\n=F4JH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-0ff095-kdoequmz_1597057432686_0.018602526376164885","host":"s3://npm-registry-packages"}},"1.1.0-feature-cbce2b-kdof4sro":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-cbce2b-kdof4sro","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-cbce2b-kdof4sro","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f04542405b9b28692a0fb6f231dc72dd3fb8dc36","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-cbce2b-kdof4sro.tgz","fileCount":299,"integrity":"sha512-3uux4tRjBabfpQhfZIlepBiQBi/BnqGEYdq8UhGurJnkvFu5mNK+6bniN3kJD2IywwFIESSNvkxNmP+0h9PzGg==","signatures":[{"sig":"MEUCIQCOrs/qVg2kbrR7gVOhhJGtdH0S9D8CzSPvAccGlrKbOAIgG6tvgd1za9gdW6HFMd22xfVsIG1gwkXbUuwXbMcBqQo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1450386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMSwjCRA9TVsSAnZWagAAH2EP/Az+sB+AyjhMgxgyiZgy\nj7QikhdJbrOqwQQ9bvlt7MjlEjyynaaz6cG0pJs1btLfSOwwBJkq4HxDp83v\n57v1SqLPHan6jH7tlGXibDqK9Pw/stHdPANPUJx/6DLo2fO4FiFVuoDYlMpv\nEU/3O8O6g4NqGfvgl6zKXJYpcG0G/Le76qB1EzlGxJu4kXZjrLOwILu1REcw\nxpPTJucFGlPxqVwTS5GfxCA1cmN20Czus84lmnNHcbI6WmEp50mRoFE6lLDW\ngRwotiAG/ocrM2JkpcgO6Ji8fT56AQdgZE/M8tfWsbzXMVVUTsOTglwns3oU\njJ2WCjUsCBKv2FlHt7jozqrVF3tI3cogRdx6WuG8HJwgIspuoszA0wJTiK0x\nPBrsuOtGtai0+b+cL1rcO5NJ7B4AsSJPYbkfWv344TtqIAGgnooFvhPfP300\nB++rooBYHX8x1r4t0UA4GDjWvO3nBh/+AMmvixUtapMCkR+C6hBP922CLw4Z\ni2hvQ/QYZHQckh3QiZRy7SARmLODa8L4nop+SswH0dTNke6oUbPWv1aMAIm6\ncLqDiyqDc+QGwcqieJisyoRtNnLRR/EzlF0d2hm5kV9ARN45J6V+Ous7n+Tx\nkO+Db+HxM/CQpEcuTmYMeb3G5L9auyD/irCsuXasAucXEfVTdlzoYxv0xX/T\nxrbh\r\n=4E46\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-cbce2b-kdof4sro_1597058082601_0.5907678873007258","host":"s3://npm-registry-packages"}},"1.1.0-feature-897e20-kdojlqcd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-897e20-kdojlqcd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-897e20-kdojlqcd","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"fe364321ec514afb4c05bba0feada307f4e76404","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-897e20-kdojlqcd.tgz","fileCount":299,"integrity":"sha512-PQZuZsmdzncReTrrJJhXcWwTDZrAoepdYEXuPnDF+M/6P8fPhR8O7X7kJSUBTiPX5mXITQGK0i9yvwf0AyzP2Q==","signatures":[{"sig":"MEUCIQDxwQiuSgfftOKCjuyUbqQJpXpP9WBCq/Jt63qtAX9FCwIgOuzey3cJUPX4wYVKJFah8daVXh8Yk0tHFHUGZkDwJlQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1450386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMUl5CRA9TVsSAnZWagAA7GwP/1HbXc+cbgzp6U0khDcw\nEku7eJM/OVFYV/MHcigI5Ijj57aOowARZtL1s6OJyf3kDmToMdyte2dxj0nC\nV+V/AJwki2fEsX/79YfVK+7GHvt2rb32QGtO+LoOyKBjdMTxZroJtx1ZjK+v\nXGIAZ/bX6HASE30HtrbS+sdlTkAkV9sIPYv0N5tjJJur/TAEFW5Z42xMIF/P\nIHZF4e1NOhNBnpRcNRXN4t5c8Sjx/Vn47lBCEZ2BO2R8Yvb0JRt3dr4CbU1g\nM2kktLrYk8nAgl7kNRrzf8L1vWJi/JDfui3x2ZExd5FWJINFG1Kbz4asSLYK\njZAlUBhh+kZj4QyMRPpP+W1zGbx1u3MQFREkpz5J1g470mgsslxYBRVpEdnl\nd1H/D+K4raZGe7YhgRU3XxI+vIZ9dKyNT8gn+OH86qkiZ35t2aLYwDK/aFcN\ncgKqcbz7VRWjQ8p5r5nljiw4B/dPHLPPCW/VKs+RkUtpfjQ22EQ3TedCa8VW\nX27NX3xDGY/tFOkQSUUiQkagSA17ATNeVzEQaJhzw7nb3BgXmAaYVhzrQfdM\nXdDxp2NqF3PSit13Ph6JZow4ERsuaXi4OEQ+Yl/5y812WSFsEuUTiTB7nsep\no33ygeDpRAIwqtmkW13i/ZEeXOLFtPLtMn4Msa0EbTkSE4mJYkHAcZoYlydz\nQmb0\r\n=davI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-897e20-kdojlqcd_1597065592638_0.044295691960213324","host":"s3://npm-registry-packages"}},"1.1.0-feature-31c1bf-kdoneqwa":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-31c1bf-kdoneqwa","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-31c1bf-kdoneqwa","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d925213722651fb9104ed4ebeb0cd9c07f50b6bd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-31c1bf-kdoneqwa.tgz","fileCount":299,"integrity":"sha512-4lES7A/dwy3Fa7tc7nZaxB0TomLlYdlbENnOtqY4S7E6lbc1NaaHQ7CDQNp5MQIYqEF4Kwe1MyfO/txYW1wxHw==","signatures":[{"sig":"MEYCIQD1MSoyJvwczwf1mo+yj+SkAgPJJagwFlda6LBRZY4QkAIhAKI40HEHZj6JOtrtsnD7hdXya4slbDENGmvL+k2IgKqW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1462741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMWJxCRA9TVsSAnZWagAAXh8QAJCjcWzB4CKhSvUnujGk\n0IHwUaLuI3gLMvAVAeD5IzYftYjGhIdLLioq2vQ+FQkGD6iHv9XOy40Kp18Z\nHohsgDaR7U/n2v7X2TF9xc9PYj3ZA12GtnpgmfISdDYfGHWHbG85vLdL506J\nsQb2vheP3PHVlfDphR/oc48RCwnznfEayPHP/exCWoB4vwFjalhlH92xDvpd\nxdDoVxpfZzfxfgVdi/WceaD+/XRUDGNxhnUebOPsHLZRc519BOZLBqRI773l\nqkmPpczhlrptbgIM9CWtx4fwWRdNnRnKZUpnuaAkxYkKapwaniSYOdO0coCP\n3A1G6jLFbwXOANK/MMpXOe786GGbdDRY8cO+Z32KZnNUYPKAGOPt+iIk4FqI\nNbgonVYUBVGxp4EFPRoPUxuxasNeIeFn/PAB1KmTRcAVPVFdth6MuIN1VzS8\nN6ZFvMjzTnPCOlgfqJTQxRcbcoe1j7t3bfyu5ZcNdwNyiqdH5J5UNY5d3zKJ\n2qrNtCn7/NhVnQuXfCqYRlqjauQ0s3+NUaEAlBWcZGzwc6+oVqKYQ6JguH05\n0hDQhEAOIS7dZI8c4Y5reIj/jYA5XdAkbAn/o/6rHH3rj00ijTqerzuODlvT\nBvg+iZflApnb28rmwejkYr/2qWEboHVDg68Ab4rym2PUMBR6zYORnDnsl+8w\nCyix\r\n=T+Ep\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-31c1bf-kdoneqwa_1597071984268_0.3611687841323137","host":"s3://npm-registry-packages"}},"1.1.0-feature-f849a3-kdppvl29":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-f849a3-kdppvl29","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-f849a3-kdppvl29","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3e688ced9f31b7f6a30d07a7a8d58151c0150b79","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-f849a3-kdppvl29.tgz","fileCount":299,"integrity":"sha512-vNRy1RMvO0t1DByUr4z54C/TX80/nkQOpWsU/sqPQt4EeKy1k2fssncpCSaHFgsFUJA9r2TmSP+Zv3snNPNsWA==","signatures":[{"sig":"MEUCIHXojy927bpWjXIV0RTJ2lrxMkUkGyIX9aclK1nr3opdAiEAhl4eDNUdZHSMVjFyrfCQ7uoAP/VJlaT8zHfmXSMTDhI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1462741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMl7bCRA9TVsSAnZWagAAl7kP/0M2T/CRuQcegUiG8w+p\nNLjZJYGp2e3R0mNuCKzbxWnuGsnXVf2BurqRRFJbxjAIBCLe8gcGLOke8iH+\n67aywc8IXZQj+sOSK/Knk8r2uiERPTOwvIqYs5WN+hIKD4pRf3wvQUDf0q0g\ntDO/9/RVTCmYc0pgDrhxRvIPeWHTzDKqREydlp9HcumB9fPizxy2vF8kX+je\nDxqF1yISenVotVwe0pdVCGjWpi4tbngwnluymBgDNPMZ67U4iE7cOFSe8tkU\nTq+1p4kSyySP6xv6jeT4sllMrnBD3vzCqJG6WUzd/nnedai2dQdLLVObOyD7\neDS6a2s8EBmKBx37v0lykDBr1/2W02jVnbY6JUUZMMgSJfS0SqCQ43lXwQAb\nxF4V+r4ZropdJohD0+62ALPh+2Si4FH7qBUFq4Gbq/7SdVlNNIZMSNO9BRWh\njthm+0Ykplo8j086CbL8AHShaf+vmVx648C44ZToYN+nSpu+ie8yP7nPZk9L\n3KX4UiON4A5Chx85P8KAT2/jCzUug92QjW/rT/ZgI4gjrNrLI/BLRRFr3B1k\nQ4qJZjfIQxxG0InUr7yNnmzg6v9eYDBbV23A8UAJ1aqTXWPUNQprJwLnJJIN\nARIoaXkmsBdZyIP5soaJo2nY2xMDzkydQZ5MHfl7j/jY60oRfVWdXtk0kFwY\nvJ2z\r\n=Wr7P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-f849a3-kdppvl29_1597136602483_0.7131202692669429","host":"s3://npm-registry-packages"}},"1.1.0-feature-412c39-kdpr8d3o":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-412c39-kdpr8d3o","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-412c39-kdpr8d3o","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d56b209c42c2ace032d6abadf5790e21b576c9b7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-412c39-kdpr8d3o.tgz","fileCount":299,"integrity":"sha512-oz/MvuAQK/2VkW7hfTNPFrmvlT0etwweRC1BzPrlUPBH6U1adERRqmu4U7WOwrOpsaS26igUdu4i8dn3/yP+DQ==","signatures":[{"sig":"MEQCIDWfGaQlBhD8GX9Egv+gKycoDd9Vt0KFL4LdH9wdyarFAiBhzkrNqVBKwYJ1wcj2jUjh02uWQncqRSpDt5FBP4QnKA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1462741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMme0CRA9TVsSAnZWagAA5FkP/RB7+tG0ymXfcXByEdQk\ngnW4mRnI52aenyEgjLAUQnYjWMhsz8rwyZ03rQrCcJcSUcXCKqpUYUuO4lx4\nkaMl6Zlcpm+KSgTG4CAGd6F+rv+S6V+ESiVQ5XtJWe+wOp87LyMm4MLxRW6F\nZ/dFpE9UivAK543/RUJ+mM6EISsh+8NEdujYUxvrcF7Yy4RZHdzPYEWtPKaX\nUWAsu+ibFXyX4cYXZrB+lcNKD03sG/jLf+fIIjvphPX14IgvlZEW8DYAuaZH\nFkwm78KgncjnQd4DceBLCQ/g83DJOfX978dnfokNrkfV00KbURPZQ1tmg+Mb\nEdfQJaZofYOdr83JuMB2i0P15f209nPbF0hf0rOKAjwa6XsWbDYmle5+PnsU\n7RgFAzHNjeicjOa/Th2Y2zz5JJU7B30ua7aDJzdLsGbPDKwqXk24y1xReNI3\nbdt1v6InjK6E9CEhZWBfT68fCxfIK/2Dcr4oNaja6rbmlt0WBovvzn/HDTGo\ngyGfP+DiDCur9h4NbW5eDT+c1AXcwHqKnxG3QnWyDgpGL2zpI/M6id60dTsq\nyUaKgVFIkeKpRTvSMSLIl1PQTD8Rvrei6uHFzLQcVr8vXbaWdvx1VMPTQaCb\n+iJjGy89XW1VBZNXET0LBmuye68mfVxqBFp+nz1nC7JXNMqd6Wf9PQoUT4fm\nx/Zb\r\n=mze4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-412c39-kdpr8d3o_1597138867611_0.819323295644401","host":"s3://npm-registry-packages"}},"1.1.0-feature-76221c-kdq1u3n1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-76221c-kdq1u3n1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-76221c-kdq1u3n1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d1c325223fe6696908d5d937f98c7fd9b663b7f0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-76221c-kdq1u3n1.tgz","fileCount":299,"integrity":"sha512-u1xpr+sXdokoIhukEh7k2PW5ZS4H5lc9agzX06ozsTKX/I/UW3fsT7VD8H4LjVwtWfMzQXLrhibBE87UQkmGkw==","signatures":[{"sig":"MEQCIAm4kOZyQL1i9CfAmO9VIIpbFvIvnlNRjJn2pt4WCAK1AiApMpnLf1VhLg2cKwx/oUYJyh3TqHU7k2kbFuy+VBwkig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1462602,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMq1LCRA9TVsSAnZWagAAFwQP/3NxiTLXk2z+6gFuFSvy\nzAZLTHlMf16zrCjsGU3AUEH+VB4tP+nEOvh0RfFR3cpqOwNMA0EXXmZFHE2Q\nz1GeLPa0AlsZ1q22Jaziqn7C5ZBTmsRZPxZMOdFnBBtJIwnjmSDiG/3tTWKJ\ne7yjZF1unphWtfRFznnoPj/RAtXeJCvXjhZizWeMiDGsAxxlw77/mh0k9Mo1\nXiLU9HidksbxRh3ZPUCPJFk/skBeXmZDGBbtNXmye8pRSfDJHXBPZwvYXZrr\nKxI7/QbIFkvGDD/H5ibVzyD7cIR42KGsk+mkyOabMUITzmsfC+G7OaNWwLW2\n3Xch8yKu88vqeD17PgUrG7wrHec40+RO1QNp8Q6F5/f0KinM0gOVntMBMGpq\nERZhz7lJN4r7TFMl91bzH0sW/ZSDjmQY+d3MhDGGGKYhPO8XXs9ZoXS7f+Ty\nxhzidNpt/z0EYKI2IuqCLSxXsauHS6GQc8WX4oPtrROigZkBy3BlqNLrxX4E\nK+ZRWtXS8rnHr8mNV+Ix2/XYBkiMI3Bk3Q92vaaFeW403oWiCpTd/FIOrOYi\nB+eO9wteI7K0ffCmmL7h9GRFuiY71UrUYZt/u6BtYyk+oOiIcI/pZtyTlE3x\nFvioSksLKxHnrWDsinCvwtX/rRx88Q/f/LQBBgSRKNxHruQTndCHNIGe82Wy\nVtyc\r\n=GqeV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-76221c-kdq1u3n1_1597156682769_0.07037500941675368","host":"s3://npm-registry-packages"}},"1.1.0-feature-0bcffa-kdq6e7pd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-0bcffa-kdq6e7pd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-0bcffa-kdq6e7pd","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"79267b2b780ab55c6f4c9eb2ad249e3580be077b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-0bcffa-kdq6e7pd.tgz","fileCount":299,"integrity":"sha512-IX4FgkuE23TvS/CKaRaUgzQSdY4UsH5jobe1fojzNcw9vhPPExo2YafIthqLxjA+EG8v1kh5HKe56quE4dBLng==","signatures":[{"sig":"MEUCIHUzSAa8AktyBg4VsqTkAlMx0kWl+Ep7Dv++dwgBtENrAiEA3Epu+hob9SbMsGXmi1j/Ot0kmpyTGSxnFXqeedb/SRM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1462602,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMss3CRA9TVsSAnZWagAAIAsP/iNL7F875Ncqwe0a6BOk\nEMM4TYfnLTE96J/bogMRcPPh3HtSfIq8zXxqMysRaiPvFsFOEgev/VQLdVwK\n0eDWdGxOyYjTJPgqbrKg1iKqTKGbyJw+kzbJl8dKWGSZVlGMI4FbdD9OOdAJ\n7fGoC1/5s1cN4ozLUWulEd/kQJzqpWVFLw3wihbbSFtnGxZYuyJaIfqSTVAt\n7t435t2qbD1FE+h8Z/0CrVn49V//qSkJwkrPtiq4a0oT9BrQHphI/YHrkJ91\n7P9a1eOJR2Zo2wYRxMWOyPCSaQqW9iwd8LYjqQkzyPmkITRXQP863HU8z/w9\n2mk8Dz4qr4Lu19AsXSoOAHVy/W9lfiT5A4Q6spMTy0B7+pYsnfQWvhUbztbW\noDm/SmaYRSdxo5DqlL76ojZkxz9l9QWAOBvkwQW3VvhHRvK9gp+iTE5XB3zt\ncdV6L7VEDaunVk1Ok7agGmopResYz2g7ORRZCB8EDBJkx+pPgLaNrh33tdKj\n7Chs1yoYkXizE8BNGMdJb6k+AUkE7ToCELo5BsIc6hwTv9/A8/IuRMQtRVuW\nBRk4Hj/lBJYvD6g8J84BbkfixoOUM3yiX3jNu8tnpIN8jP71Lk8M6uYjMDx0\nUievth6/ouIvo/rctP9lsS47rSpA7q7iNV8TdXtvL7Wg3dnsZlSSndRFzTEy\ncpX8\r\n=ulXx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-0bcffa-kdq6e7pd_1597164342922_0.8463119359275246","host":"s3://npm-registry-packages"}},"1.1.0-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-beta.1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"da042e41ede55546e19f7e940856c41d6c71fbaa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-beta.1.tgz","fileCount":299,"integrity":"sha512-ceYoyBXVBnGl3tPKIPiV5w5Kd1ZX+wQszXpZhXx5kfdhtAyeui1HhJPPZz2Iif/754BjGeVM79SMprip0lSt3g==","signatures":[{"sig":"MEUCIQDVNaBbPiwAv9ipvdq+qwuR0bIqxp2+WBK8r9y9ZsTAaQIgEreG2JZ9rJE2Iu9fzpbnZUFjiY3J/jUizcFBoMUqUZw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM5LMCRA9TVsSAnZWagAAr/wP/igOzf4E1BAHELL9wHD3\nTKv/hkqSoQ0R/m3+Dxs9Gjja8TH0o+hwvT2xmgP/ywXu5YAhVdY38YqsPE6p\ndGlz4YlnxxZOwBasoJRpvS9SFSGUmd4o+YlvyCER9QTwJVyCcwHRU9rngKME\nYWSpsdPLMSGeyVTl4MrPBT80UFLKMxb1IpmVtbyrhORKN3ljhIGd+e5emx3V\njye48rNlthAFk7ZmVICcfZIk8wvvEbNXfCxQmwFIGI1zWU0jNuhM59S8bgpP\nRH4kCeNnD2aBFtDaD+agVA71YkNAAZC6i5lxRfnaZ8U2DIY7OYsnV3fXkDZu\nyn5duTe8d2XFjY0E/JKtytgWNAUaWSAfgGIyV4UlhSZnvh2dUK+6FZyeyacP\n4pvLb8W0aXcWFaYOL3xO6XWn+vpwQfFOro6I/iAfxaNLSW3nHWdz3oFN28dU\nWPJgH6IuYEEK83LZaXx3IS4kMc/YbmuUN0QlSb65mIX9W4fTA9vUwObciZkf\nOoSxVyFGS4u+aKD8+5Sk7iv2XdzPYbGD2gU/uA99wCYwppDugXUAKOYYHJmv\nIBrzAibziI898eQ9uPmxcIAecBnZUkXd8k98tLl8MniqAUDhrLfYOuRI9VRr\niZexhfsft/9KEYnexfLtyqbRAN8TjEAsKUYfCz1qZx243C5Ii03ONC2Sqc/I\nYgrR\r\n=xVHO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-beta.1_1597215435758_0.37426005178748323","host":"s3://npm-registry-packages"}},"1.1.0-alpha.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-alpha.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-alpha.2","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b6879803b114cb3b5d0d9681597515c48ecb290d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-alpha.2.tgz","fileCount":299,"integrity":"sha512-T5W1yvH3WKbxZzY0B+6KWRXc4JbfP9QymM+Tkn5AGldqroNlgmpYL49POT+Jf6kf9FOcZDWtPVieyp0+as9aSQ==","signatures":[{"sig":"MEQCICi68kbvhpfYyvGgonG+qVhhdoD1cullSEvrnfS8w4yDAiAndlUzoGQGlPwVD5177iCPIQodRiJaHy04MsFSKgq+lg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM5QaCRA9TVsSAnZWagAA43cP/RufDfbcbHH/gBag+fzl\nrp6Y5mr4PfjJJ3gMZgj9w9ZW8SWdWzNfewb6j+042ZaTrQ36Ru9vQSpBrT5Q\n7oUnuzYhkADcS1pVAkhuTpUBnzLBwqXezehJUKwj+q441F2rZgc5ELC2S4Sh\nGn5GBEqrtgaHna8RzPlPKaJVNV7bypfTyOBYzwafw8lDL/bH+9A6LE3LJoOg\nuG1GDjweKGqnF1uUictgqueytvBD4rQYoXtA0gi8WkcdqOlgIoe8Z0G2C5xl\nEGue1iwOzNI9DP6UIAudeyuO0CEKo/dv5P5R+aZ3QiY3vm5Tgr5Ve7WcUfXE\n1ixwQFeluGr7D7bzBidA4BVe95K35gbT7QPfWS3MlO6hBtBYYYd7NPMI7yc2\n/jaaLoK5RLo5yt8STKnDT8TpwEoNdvNAmEvaFu8Yha8OkSmI7CGHDMPu90Bl\nS6eeVo4haRG30MJSM80cNZy7pZ9ZvoU7v19He6S+EUhE5cx3UXR7XEgGK9dG\nVipfixCgO/VUX+Suf/yNJJSULIbbyqYE+IzuqrsgcCyA4o/oWhYCup0+AwAh\n4dTV5p/ncLhcQ+YyEyBaMsKqqtCbLd4eMlqc0K3+Djy3M6AfZwUU4fTnVHLW\n6q2gx3diBC6nxzHT0FJb/TZynTPCq2IUqiYSsBbeU+gq/5kwtRu7HvHRYYNA\nO8IE\r\n=j43x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-alpha.2_1597215770178_0.9053573617761188","host":"s3://npm-registry-packages"}},"1.1.0-feature-5d7341-kdr1qx3v":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-5d7341-kdr1qx3v","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-5d7341-kdr1qx3v","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5728d092f93c8772f70a5442278889b49b9ebaaa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-5d7341-kdr1qx3v.tgz","fileCount":299,"integrity":"sha512-mpQY3FFXd+xwJSe5/YBPDtNjG1y3lgd6Xn3Ygnk+QqjknHnv4nclh9omVDOrn9X+dg0hUgfxXSNn2nXgSDpwlQ==","signatures":[{"sig":"MEUCIQCEI5DoLUTCBt79CVGMqVQM3cwGe2qfWg9AmB1cHrWVRAIgRWzJeNr2980Ks2F78MSORdrBnbARwtFmcD9dXPuFLOE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1462602,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM5jqCRA9TVsSAnZWagAA/UwQAJJ4ucwcsMCVBeBt1A9z\nirI9W6GUYMp7q7LEsXOsYXrRB+/7gXC4BmjIGfMiiM4hCQ3i581VRszA6AG9\nUYqqyOmiEQCzLFPaTTel434gyQQYkQ7DMkuW4mIRPVlxzNDtTIj6i0nn8I57\n7ImDp63A53rRqnYTna83nXIow6+zXzuQFRqh04w2+0JEhSslOx6ItBYmVzuc\n+da8DHuZJ6sXbcoaNhKFaaCmYmx2g+ISQlmCZI9NqsbjOcFZB0MtURVryK6D\nN6ELBv0N4spPbQny/gBFBnDNqCyw5kiVlaVEAp6Z0QJ65cHv0O0O1hYsJJVO\nUq4DxvB5V8wtk+/660ApluPfrBuiMyOlXW4uZcQUsINiYN8RDsNdM8XywMzg\nnBSmxeKF1Eq8YUbVVN7AB1WP9OlPxw5SgmBEKyz0hZjotWp3bI+RvQ7uRRMU\nNLd4pZ8i5vPpiz3o+afsDHia3gS1yp3AJYZdSFK/FX6m+ErAob0sHbvFMIze\nMSePVbKFEgRZvtqtLDDo0PLkYsqJqKifjlC9h8aBqEKFBm1u9iF4iJfkYF+d\nituGLcFjm8GEsNAvw9Y4vRFONrjL1eLRF0ER0mRVmr/QMDB+Yjm/epcXijHQ\n9aXrUPilpbUImV5YKpS4rOhJDoNCV3yKdq5ZtbQ5XgGfbIWLYaxbCkom620U\nT6Ep\r\n=1Bs4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-5d7341-kdr1qx3v_1597217002137_0.18606239574820327","host":"s3://npm-registry-packages"}},"1.1.0-feature-251f56-kdrci4qt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-251f56-kdrci4qt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-251f56-kdrci4qt","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f8d8ae6981444ae63a7340050b570892c510decb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-251f56-kdrci4qt.tgz","fileCount":299,"integrity":"sha512-0TW+bmbCRCpJO0E3MA+xHW4Sw0Cia0yW28xRSPBT47MsBKO5TM/13UNTEdYyDcHlId4CNagVkr/LgnC07VlgMw==","signatures":[{"sig":"MEYCIQCtaO42c5nweB/+XVgaedjOV7Rmq1442myLQSwX3G7QaQIhAMbdFf2lfMDS9Ycv1ptKZsjlC2KnveTZTuFNvIR3qYSc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1477462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM996CRA9TVsSAnZWagAA1yYQAJiTnokrQko6vwerYYi2\nfiOWvbZ+gbQzSQB5TEUC9LuIrMQ35kFd5eYr7O64NPbOmqMDEjgKGGEBjcfP\nY4bXv4HauLmdfJKzdwJlaOCRMZU8QEttMJiWfjWLzsUIMWe4A7PIGewaLok0\ngpXnnuNSDLTmanxB6bI9nxi1rOBp9UdsMeY6lS3jPdooMPLWZ0Ne13jYcIrc\nLZaG7IInAS12nD0m/w0Bn0Vd2jj6Fs9MysYTsha+QU/Vg0SgLXlm9/Sq0ym9\nXqj+O7TSzMjvvE2Wqmwr37fyl1PTvVbSjsKhWVvoBH4DeU09zvWc81SYHKQ6\nN2qoaeEPI3bwldiGOuy+LDy8Fx/3zHX68YEDXwL0KuZhE4Numnp9fEiwXb2S\n8T3OW4urqR3B4K/wInP9KVdUZK8pCfAx3uaroZeuVOPPt28cNiBg4irdVOyS\n2eqo7OZ3iMeJjjnKl0AMwcC8pLvOZjOCRYz1dD/t1WPi6LNcNM7Q1Qd2hqDk\naj4Gj0DSfVPStQEGYxkbo6zYveymgJXu6S+59o6/TeseHF97KGChQDstkt8C\nEgddbRYsKU+pJ+r63IOX0cdHa+ScWc4u9U+eq5qhF8aGCgrKu+NEJvNrFcPe\nP7EM4BPn5Gm+T3Qv035vXmVIauhKc+sdFhBTHSollzadlgdiyQcxkH6sZQPC\nxYRg\r\n=7y0j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-251f56-kdrci4qt_1597235065424_0.7344233125540309","host":"s3://npm-registry-packages"}},"1.1.0-feature-cd8078-kdrdbmd3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-cd8078-kdrdbmd3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-cd8078-kdrdbmd3","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3a771a40e89ead39888cf13befd7546a56cb5be7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-cd8078-kdrdbmd3.tgz","fileCount":299,"integrity":"sha512-E9fStNYS2OP6a22rJghA85q76CvrMuJLQIciIkO9L0Cay6LC6n+bA1AczhNrVHZaP5C6NpTwJcHfCKC37vEfJg==","signatures":[{"sig":"MEUCIBJUpahBCqHYMb+mrVqvx/XrspD8/LYO85ttaNWhbWhkAiEAllVWlaJsOj4CbCKWCYE2zPAl5jwRN8K6Ju5DHXc5+zs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1477455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM+TfCRA9TVsSAnZWagAAu/4QAKAw+VnZnzvFP+eIf8OW\n0h2kKFYjDjQNnEuayv5W75cixFk931qhQsBCMl7G1GRQvIIgvxfom+RZbBDs\nwO21PtyECFmLsOVfAMbiXzfwTS3h9Gj37qphyGTA3uUDf8Q+KcxwRqwGSW4M\nTq7/TJsuDTqoLTGgbtFJx4QeSLcu9XEZUKVhE19wAQtgvue/dEEWGtI5W/QF\n/EVhafMLk9WyuslztjF5KuqjYfNVGpuVzIDmwYkWnUhQR2rDxDz4vImxMOnV\nEwC4c3WpxapcRHbZd1lpRhzIdpuJ5DMkDMjcgIN+nvJEi5aMHh1XYdXiT5AE\nNMU1Z0gHSTOu71AhfWtfgvm975bQC0Q6XkLPSAGfuhipSZtiPWHpXbjtX+7V\ntqDxqzMjOI8W6xDyFa43+803TKjsiqI2cdXKYTlm7bdyYFjOs9cTDOPsWwUM\nrxNwhUEv+UJga92DbgihMq4IHfTaGD7qzXBqtTRhKVQkhmhpmKhmvHxJZfn7\nEH2yPBXnsrtO8J4YVsG/HVlqUKWJ3ysQIvjPrru3dgJF90w35mL6P8NIYvcC\nmm+JrO+R0ilEmtaxp5p5G2MmStapIo6p0vmLhjpvok7sO/o+GGAWpLbfZDzH\nb1ri/336lLWIF35ow0kc97ugoBV9n2MzsuG3uOPOfSMsGQutXDt/sqYk/+cg\nl7hM\r\n=qgCR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-cd8078-kdrdbmd3_1597236447454_0.9429018455806768","host":"s3://npm-registry-packages"}},"1.1.0-feature-8323d2-kdrdl5p4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-8323d2-kdrdl5p4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-8323d2-kdrdl5p4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"716cdb9178dc7b82da22f55704ade64fd9b26ea9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-8323d2-kdrdl5p4.tgz","fileCount":299,"integrity":"sha512-ORoz8GdpZPMUd6JfmL2ZRhPiSRM0qrUin38eEh7uyU2gCfFVJnEmn9hSFEGpy96ju85Dhq+nzjna0XYW0Mbiwg==","signatures":[{"sig":"MEQCIA48Sm28cwoWqWd9nuCy2SwmHlnDZMkLkKxsyjKr4bu3AiAeq26zH20wClvfEk5YHJtek6jwBKc1+tPw2d0G6dV32g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1477881,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM+aZCRA9TVsSAnZWagAADsUQAI78EdwAK8rxpJIRIamn\nawl+IQ/rKfacI6ArWCEIeD28svh47+QiaPtBHI7RtiecyiQttqcBH2Q/PxM7\nz79v8x8+RLZdMJxfDBV/uOYy91BmVBqortBmAeN88cfbWVOrHgCJjc9+YrGe\nRTibKFTWOeOgqa5SjxdEi/4XV1Pe1Jtw9EKGnFzQgQEdMuQenWjYbnA+nCOR\nO1Xzx7yfdl3zJ3hTGNl+6eBBhONuWsKXbc1jfCoRYKBo11qng87n95ikchyz\nTLqGR7FHYpufigcRVgx8DkydFVnh2VCjgC2IIqxSW/g9m4xL8XC+Ou4sPNli\nDl3FYpz5uiHyP0O//ulspHowtegMO6RvYRoCkPb9c47PTVXH91nDvbgTUrPG\nKNz2fEVGI8/4WkXYprJv/a8690TW8VS0WDFtlu2LVqyqgVuWxgyIFr6bsAMQ\nHLqSyf+qFZDuIF9G41MPqEt/82x/Yyy08ceURaSjFnE3njjjs5z/1bq+Ux/6\nm2fDVc0O0M+R2hL/wZ/fywzJpYofEdcZeJohf0Zootqc583CE8LyVnn2G7iV\ncbLMk89kl4KpaeejPb+s8dfI2Dld07xfyIMMiNtBZW95brzJe411kk5WNfDI\nN/SQwhZ7UWm/scDAEAMVAgv27LFY/CZo869Qv3HCno1b0iZuUmdAtw9CnAHr\ng+oE\r\n=e8G9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-8323d2-kdrdl5p4_1597236888454_0.5145397616541005","host":"s3://npm-registry-packages"}},"1.1.0-feature-bbf534-kdrk6x3h":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-bbf534-kdrk6x3h","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-bbf534-kdrk6x3h","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c57bacc458e8a4f0f99308aabc788635e328e584","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-bbf534-kdrk6x3h.tgz","fileCount":299,"integrity":"sha512-OqicNv43b4cFgGUyLib7om8AgqcmleOqOA0SQ9t528F5CfW8+UJ3LVotVmsUIRKy6UOPJ32QKZABI9UHugEtYQ==","signatures":[{"sig":"MEYCIQDpiv1Ki8n7FRB7/qObPFJhWJicYLtEWNVNq3+7hZcZ3AIhALZUaEcjwdA/jWfvFij9Tp/TJ1qsnGLu/Y1EE9fPf52x","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1480197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNBHrCRA9TVsSAnZWagAA9IkP/2unMu91TvjKH/U0U+rV\nqLGytst/Hei8+II/Y4yvjEoAgMJ5qC4cshH4CfIZP928PzhJk3cw3YVbMZqD\nJgTq40JHhYMvRwB3oJGjJMAFRRPKmHTWHUj3YP8bFDk4ucxfxG1Sh02+HnSc\nP62W1c9rJ3G7wG0Xa/sSuAkixFpbgChk3Nhwt8IWe4XnaKVFdwJSzodrMIr6\nSNNuyRFiHkgrSybDlTh63gTr5KJ2KHCn0+Ksf/Ual00M9eEmVpPB1MMtbbBc\ngZSRd8bvh+lkzgMRYsgT6A/tFMh+/HN9sf4c17Apzc57yjkJzfLKPRPVkeGl\nwuPNxUTxXbl0neOhCOSedq5A7uEqn9NB6nUch91XzYAekLn5WopeSZbTpsSr\nfjafDwX0QvOnn2NUBiS9CYef/VlUpXkdotCpX+wA48IagABHWYTUnD/DiZf7\n+NK7Q22SyeWLhimbv+kJBDHuHA/5fiGz5H2g78ibtl7LR5P/NPvbTvg7DMlZ\n8M1ivnq2oSSoyC0IkMAVlfveIfgUkIHYAWNS9ljRW/xSe27iIQnRPrftHh6k\nH+S/X8WDTAS60S91knI7cd0Phteqb8X0sK48ciDEX9kgtxhU5tGGF9N0ukCw\n9Y1KunNYMvvwQXGZ7eQI6IrbtlWGazdI6yDEUtnYEymtSy4jBo9XOrG8a0Zv\nPkfR\r\n=BSAG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-bbf534-kdrk6x3h_1597247978436_0.1186879384303543","host":"s3://npm-registry-packages"}},"1.1.0-feature-050ced-kdsszsdn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-050ced-kdsszsdn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-050ced-kdsszsdn","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"77bc4123c447d585bd6f0dfaf4ff325f0c1f6039","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-050ced-kdsszsdn.tgz","fileCount":304,"integrity":"sha512-Fao+PA9CAC0Z7Z5OWY2pAByegtR87kwGyfqB2eCKTF91Ub+82lo01gkA0ogmoDxMdiS+YVu703y7qCfL4D6ECA==","signatures":[{"sig":"MEYCIQCEbP2Agk0vDJEjazJU6geFXLcaW/w0yAfHNcqVpGP96gIhAMPtvPMEt9roB4JemU+ErZ7Jt157l58YwGpMcN9kR866","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNTffCRA9TVsSAnZWagAA6kIP/j7egvSiaZmQ/R4TmDir\nKghNFUcSoTbqC24JtA4N8WXM3iHbrclSyC7+tLuang1V0tYwiROOOZgFGZ7n\nBqHzuAOvvdHT3fkJxUHIm2PA+iVMNkCDmGAyWDNrrGNirOfjtocYHaflGr5N\nTLAx4jQiEGAooAuqxWECgb/nK7SuUrIKBHEd2TACtDeyB23PmqHM07u5jS6R\n9skgFmc88I1qfKVs8jZGvnEuzX+WijygC+xyg+2phycXGsqn27/FqtrXW6gH\nDhdSEcSX9VBpossqSWiWVU6RkOEG0axTDwYsnfQTNyf5/879tfrjBgTKV0OH\nwD+iJki9CfD2PKiWBTyOFQOpk/3u6Cer17NlQJ9DIXU3TKC7pCu7UlogleFI\nHpiDUQU4qwu5SaMk9NfeGCd4fl58lwsSCH8hzA2n11UDNft+jtFqktAs3fBz\nnYlWHAtriwgB6NtB4Sn4vrRXE1Yv30clO1574kQaAvuRPOJX+UT+TTAU+MvJ\nKt3llBq4aPCpAFunh2NrVAMpyBOg/0hbjYCqnVlW2P/c8ywhQdtPfeRetd4U\nu+RcoY9BLCQ9WNGlLiVLWoF7UWc9om7+H7ZzgE6teEGGsT8S/wvQL7jd9T34\nlyyCGYjVJPDIDBLWU16Y5DsGJnSSp+WpTilHWT6S23rOMrmvkfUEhB/5d07/\nwwde\r\n=/aUm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-050ced-kdsszsdn_1597323231061_0.4746484446780479","host":"s3://npm-registry-packages"}},"1.1.0-feature-ef4df0-kdst04vo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-ef4df0-kdst04vo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-ef4df0-kdst04vo","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"fb8d7bab3bb669352725e22342ee475cd55221b8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-ef4df0-kdst04vo.tgz","fileCount":299,"integrity":"sha512-xmAmMciJqicDUkcs+Bx6hjOn/j3RHl5hjoTRq9Nbwi1rk7LtXRD0RaSrvnvz/myFHFEVSZgX7G55IjISbjwvjQ==","signatures":[{"sig":"MEUCIDnQ2jo//BzsCIhYLHdKGeU6rVBzZRQUGo3gh+aEktznAiEA8OwJhhg1JpJkCZMHJPR4qNtfXb+yNA4xfqE0t5VkfgE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNTf2CRA9TVsSAnZWagAAUZYQAJhO6vHHXivfRFxgspP9\nc2C0du7MuX1xLDdG5JcitBZeeArMJxFI2kvQCSgQKiCR4bwF/Y9OPzLkJF5Y\noq1t/v7UW8RsVSc4TvXCT4WG+oXHNuIz1B6eEvVQpBSMS3UcSGhjsumJVwgL\nfHrcTGqRhnm1jQD7aCiZA0SUm+awoTxzw0IiKvd4L5x5wm+AJuOAJrhkLX4h\nmXuJddP9QVOvVDkv7sySImv7rUvhBwG53196hfTyFsoS6jKw9nw90kAg0fbu\n/U+NwTvJOO9i9FRREYpJ8lFPZemTBVcL/P/RgY6pTPq7LvicmhtVWYlGj79E\nl6zosd+Bop5+QcIEBkryIKo6Dw5oDfVn4OEiafdcQkCpt2s5oyqFCUN6WQAN\nfXjm2eE/4oSQu3Ow/9Qsos6e42qdIECZLwb1TuYoEc4WMNo+yoMUSiW9qh9y\nsgKB4sMBNRpocami22jjcysFxjhistxDKZqOaIWsE3j2cFng6d+iF4vv6PF5\nxdcyS0GbZZrDgDCg8CETITJRwzqWk7ZZFv1t0YQD+w9eedJc3Hb4UpBaZCH2\nqdsu2js2T8DXVotMw3AhQj1RhvWKJbyHwACa3Q1sYg5Vf8v6GXsbiJqPhnva\nN80kgsgqmpPKvKW/homCkB1OHi1xRAcx9bgbdEzR/FUuaR64PGvoPTHocsHg\npMAy\r\n=QnqK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-ef4df0-kdst04vo_1597323254123_0.24700488210840077","host":"s3://npm-registry-packages"}},"1.1.0-feature-581ef3-kdst1i7z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-581ef3-kdst1i7z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-581ef3-kdst1i7z","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bcbd09a34bd6bf5a49e694d27c06971e9fb7d5d0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-581ef3-kdst1i7z.tgz","fileCount":299,"integrity":"sha512-g4HWFIKX9gMjOU/ZR0J+f1feSzRrwyQQGSWHuuCuL4xusiA4H94mfkA1E6++wmpUbSs8WXgE4C+FMmf6xBqWiA==","signatures":[{"sig":"MEUCIHowg5M6rL4he64E8lvSbgeD2C0DIPpDa9LI1hvy2eGsAiEAne1/XUrPUMsut1lfw6Y/g3oBp3mmC+bbIQ8UkS2TlLM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1500411,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNTguCRA9TVsSAnZWagAASl8P/1I/i7tav8+90+rbei9p\nTTjLeV6DEWGPFJs+O2tiYA0y2q3TItsF8W9LMDR+l0m2mgwZ3cSy5hfDSELi\nEQ18zeUmpXhjw06KJnhv724Mp+F8Zx5SlBHZZ1ixoxBgXFkeLQu/6/x6lVxt\njGi8HJjBNyciBQ4iu6eHw7T5I6oE1AfQFmzi3LHqVt8IiljSRs/fElByVUy6\naDQAQKKEC3Com4Yb5kUFeV0XfOrkw0VF6sd/msxxYAd6u2GC7SECBfoFXI/Z\n/9TSww7LzMr4CnW3u/hqlZGdCB5Zehb51/keVxIhAatQr81DjMH4qGQxR31t\nTNSKvEwuRpZ+utdKcHyZ6cPMb0i9mHaNPB118w4RdXVOH4CVUry3kUVHLZxq\nQMwnGTR3Xnq0rdw6Ef4QGkLNISNdmCHiK2GM27WK32+UlWSYIrutT/P/XpsY\nOqZKuWIRMliJUTgJ86iQ3HYohsv3tvldLy/fNJKKQZVFO9Dkyth/npVoWd36\nkt9h0ZqzachikdyeD5fLnSxPFhEVgMIPnOiP95JM/HlAYdG5gLo5lejHd4zq\nRu/nYR+Wsya8ABvpubGXuUxOvPJJy5qm/VA/oc1POvnNJ9yK6jOQHe4dWMIn\ngCqFJgy9RwcbVQwcHWn9NiG7yTpkv5WATftq5coxSuKkEBS4sbb95Uw6zRjf\nqZCY\r\n=EDND\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-581ef3-kdst1i7z_1597323309463_0.022729855842851032","host":"s3://npm-registry-packages"}},"1.1.0-alpha.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-alpha.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-alpha.3","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f0cc147537ed473709e46a584393469f1694b13e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-alpha.3.tgz","fileCount":299,"integrity":"sha512-S9JZbjZXj/wmjx0sRfINbpgPWOarwvlzxxl0iOH3ruaZD6BCCW6Yih7CHflYUKVVbNc70Y6BYiWzzUCFYTE/ow==","signatures":[{"sig":"MEUCIEClqNH4mwhvpOREjm9IwSjW42ioEAxVl26+6eLp1oZ6AiEArJttl2B27ETqbuIUQLyMddPo7DsT2LiGIYNH/la0wO8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1500395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNTvpCRA9TVsSAnZWagAAUgYP/1ST61v4WPBgJPT/PhCB\neQeiqMGpFj/GbRDLJge2NpjHyAq2eETiZLSUFimy0vUmgJyJhbHj7LnKCbV6\nyp4C2VFqPWHieXKGeVSEQEd3leXvu3MEwzZ9gnwq/5XdPo7gzh6L7ChiD4xA\nF+VXiAIgH4LGpBtik4qwwuODToTAfo3uTqgNWnGeg14KJZZFMPKzXhYmA27P\nooQthKY3qOziyYNdGpvuI6F4KwFtbm3IsbbbZSJBIGOwfMlATSw0daJYUUYb\nnYSlCpmM9lUfU3qQSGVIvG4JZNP0mqcn/XwH0pfsZY+7fjjaRloHJaPzB+46\n82VEp51O03WuAwYXOweISpwWIehay7sKzCRSg8gm/7dA1WXRpCOBNGamobVp\ngW3yesudGnZ6XAspab51FG7ywGXqzV/SjaFmbd2ayo/mCppdPNcDvlqLufLR\nqML/+EJ2jyHdXb9fmqXXoau83YEiU0QKaQRfK2tatVrYo9lnO4LMFC+IIhcU\nmzU5FeYpfSYuQTSZvBTwt+LczOwlsxn6ReQKSpCDh0XdJaz6dtFFGH7RdR6Q\nRTa3J081NedYaHg0Z226idAuwXGe68TV1OmV80jdxGLF/yRTtlOHqSDyubfM\ns5gTBIXS2O0FtYXuT6zkeeZ+BptrroSyQpuG/TLhWKDhd0wPnVDCqm7YHgct\nE6Ba\r\n=jwBI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-alpha.3_1597324265172_0.619986181368257","host":"s3://npm-registry-packages"}},"1.1.0-feature-56a94d-kdsu12xv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-56a94d-kdsu12xv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-56a94d-kdsu12xv","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bddac0aeb3db6bfd4c5de7fc11a1fa5915f97843","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-56a94d-kdsu12xv.tgz","fileCount":304,"integrity":"sha512-0SooyaWh0s9fKPOociGe3MI9HId9/yNo3AV6STqC7O/kqYDSIdO5tMoQLf5xYgyJc00MK2dSO/kQRE3alWpStg==","signatures":[{"sig":"MEUCIAg/yd1ABcbw29Bar4BMNriA84F950cuTc2o5SUPo50hAiEA1sYsU+c4nAyka/qDVn4qboWMXeNaEJemLAbWA6tEAYs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1494936,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNT6rCRA9TVsSAnZWagAAkUQP+waSeWhA1Im6GxnLfxfd\ne8ggoruJxC2f5A6Ss+SDFCshSGKMNebDvGnXSJA6JfMEaHuTiwrg2Ne85UH0\ndjTrhQ1GlupwzlRYRBs2uIJiPuAbMEPsAGWWQGDoHKjahUyfMyql7ZsDdt8B\nKb9DbG30rE0FMTggpVMuwCJt04FZhPKbDzvq0UqZdSCVwUsLWztuIQ73tlOz\n6C68zDlTyBHBPDV8Na09zP3KyRg46UXb9piNb30z0iGzP2TE0CAIUjxDcbPq\nNSThYQw2LmMAMlW75wSCQcF6I2Cnra+k/m7oO5x9nHlbrEFI9O1H4/KlAFif\nkM7yfN/BIp80wYN3P3Y6lsYVlP7oZw97YUe+p+HlOUN2Oed+iYH5n46zyUJS\nJJkuAAnT08UMLbqf71QMyQeferzo+9a9rKyZPk+IkUYCK7kNmF3oQgLxjRng\nFMHfr6IMuYl9d4CCVuhFJdxCSpe+Y4/iWJoWHuOFzvRUL1rEeVj2wBnWRAnG\n5V9fKeJVhqwliu39BJszu41jsvhlq9cLzdiH9GTYv7Al3f//w9VBd7wYB+vE\nA24AzROpijGMoY6SOASJ5jsLn2jgBJdYu0Ay4zan/5Z81wTPW9Ak08B6/vS3\naJbIeo2dQVnfnN3p6H7icXSkgdfXWOHmnMP3WfmCbiUrfwHHcmyhD5ZkhV0P\n8gLr\r\n=7nuk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-56a94d-kdsu12xv_1597324970912_0.597217710603251","host":"s3://npm-registry-packages"}},"1.1.0-feature-649145-kdswdkwx":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-649145-kdswdkwx","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-649145-kdswdkwx","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9c0ec5fde82354e914736012f0d34ccab3b7f057","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-649145-kdswdkwx.tgz","fileCount":304,"integrity":"sha512-lc9p5Gs8rsvvOpxgPYXhtedR741A3JPBfQHOIyjxv06USTYIZMze8TaGTamzLGVLUjyWWzaSnseP4TAPWZKrHA==","signatures":[{"sig":"MEUCIQDqhC6XIwIK0RJ7WmVfTiaAYu+Px4oQM5+GNaGwvx+6kgIgQjEHlorkMdQy60gRcMqVyyl6NvrFzuwkdqNkHbwP2Kg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1495051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNU4SCRA9TVsSAnZWagAAweMP/1m/JHJaT9iVd+AqWhZ7\n/2x8/AiaYyMSi7xGPT+lxfyO3992tOiXTPLNfbD1OlzmsFbJNRaSgihvf3gj\n5lLJqxMy/1t+tmlBl3c3c76ker31Wq4umRs46dSwJR0WJJ+D8Iq2xf/6tAiL\nqX/YOv1XH6a9KlvuYbH98xqXtkAGULBZSw1wLAuEbRPiZ+hb2FRRPstzLM5z\nk6ufQMcDoY/HfIzCb0vH71jXfeFwhic/PmXgxFaHz9BGym6f03OGgRudLhZo\n5zQm2ujHdkmozaqXu5BtyOKjsqEWYPshNpP7yEGvz86Bx6U4EwXdaunkte7v\nAyH9gIuB9kc04vm46o+qt6QZtLguOSh6tupl0joBcII+hCwRfxZGDf2mMRZL\nwV+UCcnl4MjvDJNbrm3Rf1Cv6Qk3exKsMfTe8s5ICUubVX7xrL1ewDQtUvce\ny1qEm9S1hezHAv/NuIV4y/XHWxlwk02mh8Zm3SbPiHKxD0WFjCraSY19fPnI\nsAj1aZdsmzAl+VZTDVtYJ1J09wq4h/NMXy9ybYSBhKSu6CXnTlU3Va3LM4LS\nGj/26Q6qkPs5+GLifalUp4nPDZllEbbwVRbT22IjMF0jso5a7w8XcvBW2MsJ\nQv+lRXNvY4t4YmV/hwKV2OYhGi4KL4YtUCxyOmKGXMQLfakoXN6xMMwP+suz\n+ftH\r\n=TVEA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-649145-kdswdkwx_1597328913944_0.7218374409273351","host":"s3://npm-registry-packages"}},"1.1.0-feature-23a361-kdsxmu3l":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-23a361-kdsxmu3l","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-23a361-kdsxmu3l","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"76f7fda8f01219548f0c4cf1892299bec29fa7f7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-23a361-kdsxmu3l.tgz","fileCount":304,"integrity":"sha512-FLIampvZENJNFXJ80EfZ+my9cw+sqOWxrup8BgRuNVt3GNigLgxzGQwIUtrlWGrIg2eydBNcVmQeG1kZTIHjrg==","signatures":[{"sig":"MEYCIQCfeKCGNZRbZvv0aBcy8iJWdDll88xmZXhss+P+5hvYKAIhANDMXkM9G5Bxe6lg+Z7KD6HUHM775Je2p0+gKLFD6YDh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNVZOCRA9TVsSAnZWagAA/7kQAIcNBA5DLp4T2zT9UQCk\njRKTO0c1sGJiALmDKlYi1y8o6nPsyGXEO1Klqjo90HzFjOJ+7nC7vRgxXyBU\nuzCqDYjwyXNX3cTwUDN10/GGn9K6ilpXxtL+53ayRWUvlqSvNt+YBCOx9tkE\nyNiNyx7/uoULiERL/aveSUIM8bWXckGpAmX4p55JhJ8vEuQxLmGbfBWQjwHU\nYpJZioZ+ah5TAgovFtlzXBGEG+CBItA2RqJPpxA0qtLg3/0F+u97PJLykYtQ\nA/IPTvXAi6ddwn+xJQrWwD6ll9T13J4u7RvnRv/x6/XHJOkfYR2cGT46zZMo\nWqDAw95XTDtmD/JlBuKvWsDhJTYEzPQx7H+T11RyxtMG7IHxaxVVdE+rn4fa\nvUyiV5ctKI2UyzxMYnIznm+Uh3Ae2EIHCz+PMTusiytOPEYBbd2JzePuVDX6\n6jm4/XfSHv4oj7IcaDwQwyCASqNTZJhfTXGRXbP6f2Sj1luUE/o/r7AhbD/A\ng4zUEq961SPCjQ2vNKxUhPVW2CLZrxNptKpJ82LTQNuPLV449YEUBi5Srib8\n23tW97WjzOS515mctZb3vhfOGo5DhBd+es4/WcvDNOKQ2r59iajXcy+yHpcu\nYCXKCRKRc4qlUPDwUIodzTDfSgSJoPDfkqlCVWr22JBSFoz/H/A9Y6DyygYP\nQ7DZ\r\n=ntVV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-23a361-kdsxmu3l_1597331021294_0.21283464803247898","host":"s3://npm-registry-packages"}},"1.1.0-feature-3b5639-kdsz02ki":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-3b5639-kdsz02ki","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-3b5639-kdsz02ki","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"253e18fb36a84cd017ef9b0ef417268c3ce70562","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-3b5639-kdsz02ki.tgz","fileCount":304,"integrity":"sha512-LvSy4a+T9DJFYDApdNWpB/hkkYpgzXvFBWE1NiiMULZdO/XZ+2krupl/3Rvuhzu38avFSB2ImH+w/9iijrKrFw==","signatures":[{"sig":"MEUCIGZAtdVKZz94e+rw8HItEm9og5Z5IHd/RdW45X43MD0XAiEAu6BhOSpWGodLy0VUenYEi21XjxJJvwK1OCs0eKO9a98=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493765,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNV9HCRA9TVsSAnZWagAAAtYP/1mPrFO0uxSfr3HWqH0d\nywPksAB22V60XC5hf5BXqttBgAQVVLRjbnP62ikn03FDEHELa/9ldtOUayRp\nRlZbRTWZhwC5c4siff9X5WGVyJCFXJbP9P8hbwOFesPpymsAJuAYSR6+MiDL\neAFpOT383HjmmoLDq4Pos3v7HI0oLo+8LMXNtwQmUpsS0iLTyHkEHCGop+U3\n+KWyB4PFzGfLQS3ZdW05LrdfB6BdY3l/q2KOXfvr+MUWFux6lx94lULCqRX5\nhFm0YwbgwguZFE98R7/6vyMWTK0bHzw65yNL0SU+AhzBkRhWGZYB7G/5K+6s\nY2FDb6wHExeylC3dTFJZYG08MdeFV/3UAZqFGDNGYwYZXvAKPWDYEuDATCuy\nX12dt8A4In1j6pQQspcDPE3P8Mdm1FkHDxJJnvjpRn5g2/7Weq2T1RyEkgVo\np66I2PMyr7lqcgKNq+w5b9+r0usWv/JdI1BQWTbCh93/48p+gZVZ2EjlLUYd\nVhlVoplZiIsxrM1xvkYlkAPTCkWaKvOvv7WgUUqNijayfP9rZHATMDj5qS2c\nHzTrc6xCmj99FkeFMJXGykqA0M50b3gZgBHsxGyCfmcUAtw42fg+2vScjs9F\nYZtCqW2xBK28hJkH2UwYFPekLTdMzJ1Co0+/9dhf5zFKgPXlzO3dADK8TzfV\nanyp\r\n=Zsdw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-3b5639-kdsz02ki_1597333319124_0.9897187587170844","host":"s3://npm-registry-packages"}},"1.1.0-feature-16c6d8-kdt1zqva":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-16c6d8-kdt1zqva","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-16c6d8-kdt1zqva","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"225fa240bf3e72d212e7680fb5f19e6c5d7ae949","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-16c6d8-kdt1zqva.tgz","fileCount":304,"integrity":"sha512-T/1OtfN93uex4+Jgp8ftZvJVa8ACY+vRAe3htyPsRj9ATX+B0Qft6cEI+v0BVHg8slkkkX09TcA2XcGAszCwcA==","signatures":[{"sig":"MEYCIQC86X43DKcc8ne74LSn/FDFl8cTOENA9DRfZKTimmIRdQIhAIIyi+RbW3r9KdZiM6chDET1yTCjq2oyDWIv0+EKr9Uy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1495961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNXL5CRA9TVsSAnZWagAASh8P/icT+BdVKDyBMh3oHS5Y\n831MtYhKxNfNxU8rgFf1CmZoetGPvn5eiP8+zeu/4EyrQCZZIFainYAoG7w5\nZ2Ba7+uCq+jXgU0WCtA4zkeqbmbH4bcZFEl0fUJJyFoT7A+qAh0ijRc6eiw/\nQb+d99aNzN/oOjoUQfgj5Jo+6obuA5ww6lgpV2KcNHeTApbIc7tUtH1VpL32\n7sJzzx+lom26pJf0xmXwYI7IDhvbeYC6/qW6v7opc2skLO6lAzzfrSAti+sZ\nzT9Ai6sO2i6gUk2SLE+89NSHjQpxUZ89tTIPh6aO3UTUXqMHrIfEYlIufKs5\n51qeA7O+M6a3oWfqwq4L5a3jL/S3BFktzxFdH9e+emIp4IZRcBaVzBxp6w21\nXRXq2gzZ8wUh5iE4Sqg/MxBr7/KB0zIxb4Ttkymz4GoXXhyZJa0buzCKresr\n0xWm6TBTHoA1i8o9W1ZUxnH94Xnc8SGK+BLFwV0aSwov4xGna+navOF+lYiJ\nUCG76Q9AEDwMZ5+r9kQSso+zhiDzc33MFRC7b9nfWqtRKKxio2bq39ZXoFR+\n2D/7tGFPHCVbk0sHLFeFETrF5D0N+2/t4P8V93VfBTWcJGSxXtUUL9kgm44V\nM8yLjsG/+e90KYZuUUqlKDvIvPYb7J+rx+EBWpzK6zS51ZNYUHg/+wQvEeu5\navGt\r\n=i+D+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-16c6d8-kdt1zqva_1597338358479_0.15396347202053007","host":"s3://npm-registry-packages"}},"1.1.0-feature-36cf35-kdt69g4y":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-36cf35-kdt69g4y","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-36cf35-kdt69g4y","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5ac2228fdfe73e5c39884e4916e7a96d1ee32e4b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-36cf35-kdt69g4y.tgz","fileCount":304,"integrity":"sha512-HLG8Vn6ThPP4WDcDa9Gbn0CkqVMWtJLURVLOqKNP7tcXeZvcB7ksGK2EUzxKNA2pe36P+cOFrKSKLbkgFo2xbw==","signatures":[{"sig":"MEUCIQDvJINfEHzpe03BN3+XaEg5GbBy2STntpaYu0JzXCuP2AIgaVhaV3NUgy4QYHrsuL1cnry8/rwH/0Z2ACZoMEES3cQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1492251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNY7uCRA9TVsSAnZWagAAtsMQAIJTdcwHvtco8U5dJ1tC\nlyg0CTD9v3Dty9TMIpSxTlblFpoeAzWozIobFxGF6kQWdSBZ2ljJWVPZddD2\npqEVKjWobY7m86IplHLrnCKB9tBDT7Ad5+c34//tpvm/jorcDAxGXTGjkC37\nIvzmbwDP+LzQ2ZokZfKeWPEaDxRcaIFpxzw9SxnoMhc6VI0gb04TZdBcZIB9\nNLhVFEfSmaigFZL7DY3TQPYK251XJADwwuYDv/N7/ED0yDvV8e2/veVRwets\n2Ocnz+DF38Guv2dYMp0f2ILU7RMUYu2B5OQfCWKXGyL7dBI8MMqkQrkojFkt\nCLenOyy7oXVOxlINUsCJpPgZIQvTpJjRakinu5yA6tcBkAcvWYycRUZOdy8W\nTlt6Z6eQ4LxaTQGIxiTra9N7mDqpCHXwP1VXbrE9q6e7AH7LTiiuj0/2pamR\n9gDHUGI+SP/qwzJsE9Y/7ZIJACQdS6XAQIwUuGOPILPONTbnmjP0ciJeWDCj\n06EqWYFSaXiAWOX36i9KxLRlopEXal6pvUVsGCDluaPpw/LC34BYtfrLCfz9\n/XFrsQfDGLxK9IO8h0tStT16Gr1t3V+mBrKZWHWAK4FrbI2wV04Txr0zUqD5\nZ30Yqm7V5+uBkvuTyNEfVCYqYMQimPAJ0cW/UTv3flepEHiR+Mcx5F+z6Q7n\nkVE7\r\n=XLSi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-36cf35-kdt69g4y_1597345517973_0.9040300015209124","host":"s3://npm-registry-packages"}},"1.1.0-feature-8cc2b0-kdt6e1x6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-8cc2b0-kdt6e1x6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-8cc2b0-kdt6e1x6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2ea7a50b0b2413d131242a28b26c2991f060df84","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-8cc2b0-kdt6e1x6.tgz","fileCount":304,"integrity":"sha512-t/mRwWeyPb9lol3fVjIiMt9qlRv0vaPUiqzDpcU/K+Qbn9zWuqivZjkL8r/tTdZpUa8exD47YapjsjriVY46iQ==","signatures":[{"sig":"MEQCIGxaOjFtl/O6CLxC2Qod8OdAlZcxjRxjRDUTvwEqGvV9AiAd6kmX9A/aNm11QKPQb5A/A1vQMoES3nYU38hnRwYD5Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1492356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNY/ICRA9TVsSAnZWagAA50cP/25e7TvaKZUyHrCEkH05\nFVvsWljWVI+iY6ajEaR+PV8vHKUCpB7aS3rvw2xTjquwkSVNGA7Nq2blGWrA\nqaeLszQzxptGAjC9MTl+Ihks/uZEAf4YhySG6Rel9PQjbxEmLpt4hfyF/J3k\nK4gtzB6zd4yTYSmrl+kwVfrVL3vtfAzMlXI6dlP0lXaYHUMCtgxAZgVcLAIf\nDblylRrOInNMWdSKF7ohlNLAQUew6tZLCeXT54wuiEL05MiJaPbz/ubziiH+\nNJG1Ryi080mbiJdsDeENmr4yThxBUgzktAxEzpZZgjU0aNJB3erhIZmd5SNO\newMArHh4F56HC63+cClvizsbCxjabzuqu49CivAsF4k3/YaqhcAWMxFgT4su\nneC72wAMRPB54kuCQLR1537Brx8e7PTXwDkX2eBFVY2gEEuvu52/qEuVHdGc\njwtNDjvu6N9dUPd9OZn4bMAguJI7GPCGzmM9hugOPQ8Wg5WU7tbTQpkayOxQ\n+vZ7jCMT8Fy3I8nQ+r6n8n9OacpIsTET0JEAUjfOyobKxPDvvGMb8XccMCfm\nLEyVxUO0rvLDlGsjUhifrRF0C9iaXYZinTGbbicTXhdjn2mM1iY+Kk4AMq1Q\nnd47xLoXoKeSo001JbLInIDiOgA/URpi4tsY9TmZJWX1eRLRWU/EH/UVgzAT\n7Byd\r\n=3I12\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-8cc2b0-kdt6e1x6_1597345735569_0.5919033337801249","host":"s3://npm-registry-packages"}},"1.1.0-feature-74706f-kdt7vgeq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-74706f-kdt7vgeq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-74706f-kdt7vgeq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6529b0c5cb458d388157297d9130213b6945e65d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-74706f-kdt7vgeq.tgz","fileCount":304,"integrity":"sha512-hLtOd6nZwXM2QI9Fy3nkKLH+Y9K0wP2SrVS3LxzpuCe5X9OuYvLxTOSjNQqmV2PvCF1reA5LYwCWQCUpk/26Rg==","signatures":[{"sig":"MEYCIQCgv3xHhiMdc430H0ERUSCgmDFVKTtOg4OABFj/lvt6EAIhAKywAUvai4mkGp/Z/p94whV+W0mZwBy3rwWHwKq3guXH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNZmKCRA9TVsSAnZWagAAm9AQAJgjt1yWeB5gP++otIDI\nFwl7Wg3OFIjdoFB9gGxbvqN06v2zOfrKXbM9aTy8VoN9mRYB8yjvvC9E26hb\n5Xz16KJBUh7hDwcvqv8XIrLGpaMivXFopYFDXvyUv4o29OKr5DaLqqkjQRtP\nJXAlh5X2DDlnAJgJQ4QHkrzg8S38ETu6/B3KOyvEC2QaxfTVJMMbVfxQvYTF\nDTZM4gHRl37Yym7vP/HSCqEiQHVKMkhqoKrYvt+X+XuH8CyMAhw28Q44vj8i\nnNYXXrb/CIZpe/Yr2I4Q26UD4vsS8e1o1a47Ow43ulSffxl5FUW7N/uf57fR\nGbjD9f2nBwnMxhPhNUqSMZ9N0PSN5xEikaA0sk8S8OKOt8Ined0QEshUtPnc\n5jrFiLluiriUmTQevLtcN0WiRShTCZZfrOI6AOZ0W+1huXk/KhqSp75q8aSr\n1oGKY3XHw5oLkKduxgXbhe+G5UtkTG09ZL+nHKwq12xJlVo6JnfZLpFjiN1f\nkBF+UNSemALiEacIYUB8rjiOwH903TsuAX3hhLEu0zNHb6G3QzXIELLYPuc1\nPdTpIAG+gWhDSxF9U7MQYCiSAJoztjWLKI4bNEeFHOQq03ZHqk4vDtzBJeay\nbFvgu2HCj5GcqeImxstukyon3F4GHX7/+bULu5+fjgn+Phw46eJfe4re6oNv\nsErg\r\n=9gEA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-74706f-kdt7vgeq_1597348233673_0.5209405634504578","host":"s3://npm-registry-packages"}},"1.1.0-alpha.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-alpha.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-alpha.4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ecbc755d79047da803515ebb8ded6a925e456f0e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-alpha.4.tgz","fileCount":299,"integrity":"sha512-j6bONSzsIDN2nq3u23ROjmS+3qnJWhKUUOv63X9/87qkWiBR134+Y3gxT8yr0eEH1B2rCzenXLZpcdXvk8zglA==","signatures":[{"sig":"MEQCIF8XNEg00WemaCBt+cNXmVWuP/hgVsfu3w2jgZmZrj9RAiBrNL+ND8AGJkud8etoXkFfcs8UX9L6CAkBbrMtQuzqPQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1515519,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNkU4CRA9TVsSAnZWagAALcUP/3TVbDkdlsoUeTAZ8UBz\nQvitRKm4qUfPw/gePMJyeiha5nddZIIbmDeRhD+T4HXJOM901RrmY3BRfcyZ\ncAn8HmKjCh9knwvlJ/e7xNiuYU8lcjTRNbWrHdBiyRU6N/dnevuJXWRHyvLb\nowhHnQUJEGJdrasYKIORWcd+akxkw5DER/8wiO/4Hp3fHkZV7uiSppO9FeqX\n2ko/w/afLbt9F0wJShnQyov1TZomBnyxRyMxogY08SWnl5WJj/cIRoSuxRoF\nzg9Fqphwz/DC0RRojMI49Hpk5linvVYHHD8dEi9hJH2JJwGn0DqyD3pkNG5d\n0X2YZwqdLAav6CeQuiLjVl8aazUI6GM3ILXjYLQH6kGtf5lAJzYoYbSIpVe/\no5nVEczSQVgiZqPgVjhbJEslhHr16lGcSmp5o07GHZqslwkgZ/vlkKy2jNVR\ns8BECcdX5t49InU0J1z2shVvln4tI+egGu/QIJMfbi+E+WxybtKVz/1EU737\nQnAxBsvEq2Tu+hrB3MegSNMoTB/EqcPuE5GfV9Bc80IJMsofRlcGBXauzhAr\nT2mF1GI0+K9Y7r8y1T83IGLKUIlrwvkKlwkkDGWId0DdSu0PCanOFoZLPdSN\nfYgLO++sPDuZbX7U4VYBWptXhdPliX52byyMDDxV9joYEMfoa4lpRrv+V3tL\ncXRJ\r\n=5oHU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"^8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-alpha.4_1597392183867_0.057214616310869326","host":"s3://npm-registry-packages"}},"1.1.0-feature-0bb891-kdtyfybq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-0bb891-kdtyfybq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-0bb891-kdtyfybq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ab277c3f7c0342cb170532a6fa68d6de2e585d56","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-0bb891-kdtyfybq.tgz","fileCount":304,"integrity":"sha512-Asm3LYtr0wIRe1UKEfYds9iF2YvGJZJ5DSGYRoORoUFbWjl6joCIlELCFzsrlfNbfuU4sMJJsM+uPgZy73sLpg==","signatures":[{"sig":"MEYCIQCvctLu1XoPjBOEv15Pdg3XD/Y5GsbkVCMVHEoX7GbMOQIhANYtYDvAm+IO2ukQPr8UgnfjWo5V6U/1g7VgdypI6z0y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNkfQCRA9TVsSAnZWagAAix0P/RPUVGPU6psuntIeqGeJ\nUcfdaVMU4rQyGoK22NkvIRyAuWNZFxm0KX0YDg+mB96UmhutZ/+F30XjyAi6\neY7hxAkdayg9IqlI9ekQwISIUTrSKmnTZCXXTeJwk89bMjR8vbGv0rjMhZIR\n4R8QxLnrgsrLzK9oAKk4SAY6tKRRUb1iWitv3OmEBACw/TopZSRFehrR3Pir\n6G9uAkmpw0xiLTL5BinHsAW7VKnTGqqWd5DP7UAqrFEo4d5idwwD3X+4zZXx\nfzYjOd3zKQpKlaouR5BKUTD6a0Mu0PcZHREcUpX5wupqnB9KyjeqndudE47H\nGN7Ia3uOCj/Uls/eKVuCjr30gH+aAHnVB+0aZY+6sDEAdBTgqVW7306p24P4\nkTx3Sjf0ZVH19T2nHuBJ4mjrv33Aa5XiiI3QGqo/xBRG93MBlaoztzQ74kS5\njNieSWWP4Y4aS3S5VwxaAQYo4o60uuRCPZhZ+HlyKhRKm9DdOg2XtXNv6meM\ndr9i4FA1dvp2/8vmh60YrMVlHgOHbh+3W8yUVrNEi/Dcs1MwUK+yvtplfbf6\nG98sbadaylG9OD9oxe0n33Rx/frjHJws7kxN+gzIEFca86vIRLLabEQ176pG\n3FnP6kimljzzGiarRNfnY2GzevPkeULEau8tIZWD4HpqueA4aPyz7cVw+usR\nowuf\r\n=hLO6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-0bb891-kdtyfybq_1597392847781_0.017324114382913036","host":"s3://npm-registry-packages"}},"1.1.0-feature-9ab8b2-kdy5kfa2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-9ab8b2-kdy5kfa2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-9ab8b2-kdy5kfa2","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3ec4cff5d98f25daeb4faaa11d0410f6b29ac56c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-9ab8b2-kdy5kfa2.tgz","fileCount":304,"integrity":"sha512-gIvF9FhpOmMb4Z6ebUpLSqkNGVD1JZoTXuMhEovOp5lpKPga8vRos4K48/ksSylQpHtyfaI227cTy28BRnD3Ow==","signatures":[{"sig":"MEUCIQD9bzYAvAppc54LazH6cy3noHtl2YwDKUgfr/a6aRMy1QIga1gcmsjbKJ+UpbnhJwM01I/esFGu6nTnjPF+0cGaiZQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498507,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOidaCRA9TVsSAnZWagAAiacP/iai101fRolxTBkfvWGv\nJ24LzdS3nurnAub17hpzsTWPZJUNt3pFzycjWDdUsfn3e2F/06iWQ4WT/UuJ\nis1iZexJDCo4J/XjEaSn7ub7KIMDjwWcAzQegkpkcZd8AlMKHi4Jac4DSwcO\nnf+V9KgNP/att6IHx20WZAaeLmzPXF+Y8iPNpzANA7IHEppH1anWa3SYotr8\nXr55NDrNuYwJF6mwCPciL6TjLtcZPqZLKJnX3MJKo38dKm1DFPtHSpra2NvD\noNV9GzBTjzKyAB5GnCPsVXGogWZJYzAohFLEc45lWchvaNfYCnIU9UBpgG3r\n2OrJ8p1p5aNxMLA0Oc/AqyVr4M/l64nyFNhd8j115BD40/HiyUQsjO2GXqxs\nSj97nZ2eZ2kH0QqLVCnXytGiuKoJeYdxCKlEOLrijnjBmmxll6mSBjjivpr/\nihzv9i91KpKjHoh0HBYd84mPx5GKvEr/uJhGUqZG/Jilw8txu5CrrYeO/w91\n27qBw00pd+jDmQXErMOcdcbIK0mhXz26IKXSAH8X3CGVEwjy8A0MwJSkRSJ6\nrLvX6jLlr3abt+SGep5xH+zQTANffXzWtGS4S/g5bd+vymKHxeE0Yb9NLU4r\niSOKw400pMBMoxweYYod26wDZcQyFJBaahME5pKkEbf5rPte8jRvOoe5U7E0\n35Nb\r\n=eBf/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-9ab8b2-kdy5kfa2_1597646682158_0.42963037096649015","host":"s3://npm-registry-packages"}},"1.1.0-feature-d9390a-kdy7fhgs":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-d9390a-kdy7fhgs","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-d9390a-kdy7fhgs","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7424c10f6cab8388c56a8c969f188467453ef673","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-d9390a-kdy7fhgs.tgz","fileCount":299,"integrity":"sha512-6ORXP0bMPA1+ZXfViohvdCoQP3AFSmOqRDaKrjs6eU44U3MThfioqJf1jw9SrcynPBNZiKFv8yuyim82l3wGPQ==","signatures":[{"sig":"MEYCIQDgAWDDx6noNkjMcX9kHEF4Y6Tm0Oe6W9e4Z5Mrq+MNTwIhAMeHIXOTQmE8ShDcnFRY30XOf8fQNNppe+G2NWun4Z6q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOjORCRA9TVsSAnZWagAAK84P/jYGzI08RzrxvS+3Dc5M\nSiyBu+mIn4VqzydJo05SiFXHrF/sDZd4Ic313DH5PSnc3apMe2rr+AXrl/bh\n0QVwUrcG9uw/+Z3EzarFDzU4yKTEpu+HBp7wJBEZJQjhWPdfFwMLvagIxMhG\nF2sZJiKx3Njn/Poolstseb+uhT39AkrxYZRuQwRDf7NZvVGsIBqnoq/uWriz\nWzj5rkPjop51qOQ7YCf9a90gjIz0Jp1bCiyaGBCYnG+1KWyH0r2zRouNotgT\ne9Bc8wqMBMXB3RR/UfiyXFrLMLd2pAtDCa3W10+8x2RmIu7J45DWNZGVGYIa\n/Y15Z1pkDQlj0c2xBA32xOG7f/ijDT7F9WJU5LAae/b2oPCc70j7zUKKHJM6\ncn9fUl2gx1JzWJNijvMiXW7Jfu59cn0G9YuUAbVoESFIe0SLJKy9SUpyqC1/\nEcVBLfaUdhlluc6lA6kXI5KIyKojt4uqsP4Z1n5qP9D4gstAz3hlE/dpd2jQ\n6khDNuEr6HhBXkL4pkyB04YNCpY/pu5sd8rCCYs9nJ4gsfi6VWwv0Hl0fVFf\ndme0Oo2w0O2jwRaVfYFLeMW2HVhxQ5eQodTlpQrcZ4H7PcTfOT5blBu0xZwC\nOouSzy71NjcMKPPLEYpRWIMXKurJIA/lxUBGmuScNpvrUrJOx813/mTkxEi1\nzA5l\r\n=I2Dz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-d9390a-kdy7fhgs_1597649809335_0.7025779256878819","host":"s3://npm-registry-packages"}},"1.1.0-feature-6046e8-kdy8kbfn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-6046e8-kdy8kbfn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-6046e8-kdy8kbfn","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a54e96360e3e88c1dff4a07d1e368d518578754a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-6046e8-kdy8kbfn.tgz","fileCount":304,"integrity":"sha512-824sdgp7ZstDFBAEK/agZGmIOVbqxRACarDztxnK2E8V5J5HYV0fxyDD9t+6vL1S8B9JdoibjUCON0O8O5XN6Q==","signatures":[{"sig":"MEUCIG87UVTVAAm6MoNQRvLfZzpkwEBVTwrccyCynZSbuXCvAiEAqEa1Zyw5jLsu2lMvk0LvPfxGXgpeKx1MmFjYJtG0/8o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497439,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOjsACRA9TVsSAnZWagAAmRMP/0LBIwgg4XR9o3udxBE8\n+UeXWVXSCdENtRjY0IzwaS+jmbDF4Do1OV6Td+h50MoDPLoF48xOCes5mMTr\nCV3lpzzZlCLgDhYachX9K1G0y13vwxYYlY3CC0IV3clqa8y9uxuatNdT135Q\n0FIvBLqz5pEQ87NUH7SjeFyVNZzAHN8+1FpqlSVdEHnQ55tXfGbSACuzbxvQ\nq8Hyqy8GJyZX8wY9F42NadIqn4mbElOcF6W8aCn2T2DKSAxTBuTXBfk9btqk\nNICqlRuqYaniL821q708Rhhik6NvGpwytMArgpPqFnW6wBOCblZr24/qDFvE\nIZvebd+31gWqFPYXrkHE3QETD/D5Ydx7rC6So2et3A8ZI9kqljfWzRsdbp32\nxledqhH4lStMph8T8nBK5q0nashcbbwLk6W7OX+qeiWB6Xuq+oSQrN5tjuX2\nR2FF2MBQifWbmRC0Q3SB86b1W1dTFCen5auiClj00P0xfn08YrORkMMw3Y3p\ntOFa0DdrGmeWCZV8K6WmjXaXBP7iaU1jXC6NbBpNArWoeM0oXGd+C4l4vRd5\n0lD+r1riHjrjGJ6J+zDy632A+mB6JSfKea6OoKtOwb/ZM2QyTQHrjcnGZE2O\nOPbF9kLs761eGGKFCXg0VnBSuwbjQkVOwAIlFXrt2wlC4OjyS+GKBZIMzoDU\npz4H\r\n=xOCB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-6046e8-kdy8kbfn_1597651711630_0.08519893191571204","host":"s3://npm-registry-packages"}},"1.1.0-feature-fa4e92-kdy93glh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-fa4e92-kdy93glh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-fa4e92-kdy93glh","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8b05e63b374c0ad2fbf2e84067f5087dfe170dac","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-fa4e92-kdy93glh.tgz","fileCount":299,"integrity":"sha512-xmoghyon0reKySaqcLb4+DQAv5aJJ3Y43zVK+mUIzwJ6S5cQszzRLl/1noAngYiua0o7kuwzDimW4R+Y8esmrg==","signatures":[{"sig":"MEUCICes2nxMbOyDttvI9eNJ8Hw/BY7HaQkfEKTMTZFIMNOCAiEA8EQ/ufq+Om1TBwRZRuTpyYiZjQqacCDIWDO+Ww1sFxE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOj59CRA9TVsSAnZWagAA9EoP/RbJ6PWlhaFmdSxu0aVn\n6DXDAs6v5/+jRUAWPv3qlxtcjDrg+YcVJVtqnEoqndkgexOqRfh46IUXMsq8\neK/tdoDKrcnP7l10IfUprfYMqnUqmf1UKv6WEev0BKx077PhMvRWnMm95E7O\nz/uZgA07IPIHYeYbxfPoiheIJAx2fJyBslU+9EG8QnyoqqJhF6t2zbnss/eS\ngWIZ28JtrgXxCeWH1EqID8yUtQuRIBjrckvvM1fMFSN+KKihiDbYfqX7uOH+\noKc4y/Dq5xV/wcbHbCNf6JfkDHU9m7w2LdD3y6VN0+8es6x96dWrlwsseNei\no1GwMSmdWkxONq/i52f67Fx1I/qRX4nLUMPkfZ+fQ8UqDXrx4vCMXndSpzlp\nUsYbq199oa/zHLtXtqipT6836K+4AS1T72L7mckSGof4iPXIIUJPZl6fD+yo\nxX4J4T5ieXaOIS0fo9cQGNdnlfIJlJI8neh2HzluNKru1a7tQNSOCx5yh1I5\nf0Vk7b6QxmgDKyLeByKSELiaSz1gtMSvR7rXELjUr7Ni+Y9cAxJbm8ABwCva\ntSaS0LS4DNqMMzXYFsMIDM8aI+WHsu/aaJN72BwMy94e28OIKD6UH3IGRN8q\nKcVfw+gooDYGGOL06Tps7/hnyaw3dK+eb8WB9Oq4SG3wCss8W4rrnZTvYGY2\nchQ2\r\n=vT/Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-fa4e92-kdy93glh_1597652605078_0.7312162421806438","host":"s3://npm-registry-packages"}},"1.1.0-feature-b2d5d2-kdy9u17n":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-b2d5d2-kdy9u17n","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-b2d5d2-kdy9u17n","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"19d0f086f9669e04347bc212a03ce21017ed234a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-b2d5d2-kdy9u17n.tgz","fileCount":299,"integrity":"sha512-JN4dibRol97J8o2xvQ3BmmBtdg+Mt3/r7Gduy8ac/jnJsyZ4VuzMao3KPg11DuQceYIYpCTFeNfjzfV0TqNFpg==","signatures":[{"sig":"MEYCIQDkTRcBqpHkgTz2SbtsIml3SJpVu8aWyAmeV3LfxEEgeQIhAMiA9lRzJhU2h5gHp1LviDxRF1958Tcg+JL9dZUuN+WP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOkNWCRA9TVsSAnZWagAAszYP/2HvPJsulMXZDg56MBye\n23ZmW/pe64JJJfeye1LpcoKpqs+bwcskKoXj2NWFOYSzKG0itsztX5qPxIJD\nZ9oX/PeLME8syoBxVW4ZvjLPOlY7wr3bTo6xU4QHk+Q27U2Yj2XAp9ozbFjg\nskLSIF0Me1Trg/z+B6UPVLzuMlhIOqWpJC9k3u2X4icYNWufxIq3VzkOGkwh\nqls6GBOWqmVvp8EO/7pmYmWH4wJ99aGds/UBNI3P2fgYGe3rh+avZrfo0Eop\nzo7UoTwUBwu19heh5rAr2eTG934ioVkHDkDvnnG1fCrA4edAVZLTtyUXYUsE\n8JJ27kvzKL45SR8K+275mc9/tBXIz7Xa7Fo62pgy2W+6pp2cnUijkK3zl24E\nXZkH4aGvWTHCtsAtI26YEslslowLHw73aoWov/MzHDcA+ABWuDp9znqdTW68\nNQ7gKvrHHGMfpJ12AlaGrxZFxx52lB1BVVmFEP6BZkTNP2PDisL9ZbFQVHkz\nTZ8OdXVUY9BuOk7S6hsaco6sKfo+NAMN52pN3Co/S6l18Dd2vub15p81WXkm\nSThLGPLgLbTaXplVtXifiCczsneUe1tkcZAqjqs9PugkalabSA3lXv9uLOus\nGzecdSV4lgOVPahwzGpOT/Up524E0qmjpQN83nitLlYo7v2KOtaWonxzNvR/\nV/F9\r\n=CEQS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-b2d5d2-kdy9u17n_1597653845375_0.8092041993433328","host":"s3://npm-registry-packages"}},"1.1.0-feature-689566-kdya12by":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-689566-kdya12by","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-689566-kdya12by","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1e8ee78352f1bb338b0dd3ae51bfd329b607326b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-689566-kdya12by.tgz","fileCount":304,"integrity":"sha512-x6ykQK+ZNNP901XHwmejfYaxsixFidUeZOSlVwMe6EQPxlbrNn0tUZ/x0DMpppsEYR1fRJerMB6/Q0JhyVf+LA==","signatures":[{"sig":"MEUCIF4BgltOmHJdMZFde4+SkfgpyaXBnDKaM04ZGrFXTpZkAiEAr78vhlCNUmY58SWzUh9KNKKumVCD9wTuaQqr87lf5MM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOkSgCRA9TVsSAnZWagAAu/EQAJeBd/X+k0wLo7hj+dot\nshV6Ql0UIzXRA1LTC/utoboqzyRHMtXc7B0CTitQzBp8cNVApt+IvYLKhLFv\nSxFUB6wEriicFUYUq4uq7NOT3KTF7HXmpSIqkGMinW6zgSTs4eD+ueJXtRtV\nIhNCWF6aqRFtOK6am9onNlzfVzQPZAvr0ndMfHllXqzwkMKqrDHxQnR9ga7r\nvm6N2xfsojrHXebDM60cEK7JtgGx4oyRBrpQjTNdp+MjUjBTXUR3j2/gXX5/\nYv+k6eBCQe0Q7Gvknt8tRLXqyACDvBmheMSqpRfErLEFqZIgEtLiATNJHvEA\nXG4fN5zKS+koyOkkfLA8smWCNVtE17VKTTXsAsXwcEQReCQTWye9lFcQBiYA\nUdGqlwv2sVFe05AcEbQtHZ+NPQU9/zNRcxhcofVPiJ8IUzOmwSaZNe5zTGvQ\n+t5tMgMGCQkxsXm2e/jFoRA2IpWiDqLphXzLKj1S6gpEz9Z8bfD1nWxTtmhg\nxP+AZAUVbjmpZpn8pa1VuWztRCbDxtmMKqiMchmfdy0HcK3WuMO9hBJB3Ipy\nxeJkua33OUpbPMS4ophr+VUrpfy2koo786GrvmBE6ZRX3GoIx3uUtv/QGDDs\nwOODBQQL/WJ7HQAIeq0grLHPchJI1OJTzB33ZTydVvnDax4aGG3DOiOU87e3\nh0Fj\r\n=9PmM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-689566-kdya12by_1597654176222_0.2446256625375809","host":"s3://npm-registry-packages"}},"1.1.0-feature-b87cd6-kdya70sq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-b87cd6-kdya70sq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-b87cd6-kdya70sq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8d8324a45cf1da9a6ddcadd3d7e207714630069e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-b87cd6-kdya70sq.tgz","fileCount":304,"integrity":"sha512-zl5VWEJjjn+WE49dDy0ayv5wPR6LL3jEUZX6uwDCG7aYYSojttYnhy5KjkrbqK1yPT1PPMeSZMg0f+alLecDjg==","signatures":[{"sig":"MEQCIGm77nDmx4Pu9drWccekB6r8cNN4eZJE5v/jzVM9cuQHAiAk3YLJXFYJdC3TryJ4otMre8OhX5O9G2ormf3863MyUQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOkWxCRA9TVsSAnZWagAAb+gP/2f314TUEww2pzYreDEW\noSpscmSO2gBU5fLA5/hCTsA6CTEgNF0sv5ANHTDcGDK2dspEJrffj0+13zYE\nSMd4LEOtwCz+cnt9KgFq+fu0kSLwSv1GLlx9TTAHLwWA8spzf9jWnu0vYmLq\n3LYFrn0wKQ9Cbis54+LENlY1nOp2L2JCDf7xuRIlqGa8Z/6LWQ0SBcNCIcVC\nNxzB9rVzvckEM2Yq+Hg3sFFv5stTB+Nj7v+zMV0AJwYSnxe/IBUyX5E+OGRF\n1jtdVf2Ij/izJlKI8pAEogZMHJPdo7AydtCP1cSNRXVXJs/0vFkNa7J1uj+s\nf9sk5LLbOLM23I2V5QcxIb/qhf3efaTZC+w7wWOa8ZjWg1dIuffh2BOW3cbM\n83yiZCZvjgaCQieSwK3GGVk+jvbGEdtIJs8T4wt1oWF+PnQoEqLM+LHOm5sb\nU7INZZwoLlpOuDyd/inJG1Q1UL+vEAxKZE81Z9wpPqJOK34emtI9xEnzdTr/\ne33vPKoifsZCXQk2Tq1dVK/+yLGthMxi0AtSLCB/KWNF45G0BsNbQP813LLj\nhUaSqRwS+M2ssl7WD9sGRSVPprLuHen6DoY/7P3icYodo2k8YT/cPopAPtZf\n3ojax4xAntCfT6YmGiVZZt9+VhuHh/vAZjP6AE4V7nrpDLvJBpvJapL8yBZz\ngzPr\r\n=pCpz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-b87cd6-kdya70sq_1597654449251_0.6780127396764033","host":"s3://npm-registry-packages"}},"1.1.0-feature-f6336d-kdyar4lj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-f6336d-kdyar4lj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-f6336d-kdyar4lj","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bc6059c5649322f72b2527344f7785b56f57f1f8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-f6336d-kdyar4lj.tgz","fileCount":304,"integrity":"sha512-Rlrr+OfuzXSzsmjrNTznJlSR0laWiStKgm/n6u7+ORUuxlvj1VOsR5tleUOtv04+lP5a13wslu95woL7I8lySg==","signatures":[{"sig":"MEUCIDdvA9Qf5SiE7MsPnZ/qkp2KdeFJXjmCB4MotoVrf9f+AiEAvnJ6WYmO3pSWJ70Ud3hJ9Ax7wgAhuAp/bySaTVplzVo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOkldCRA9TVsSAnZWagAAS8QP/itfLYsUY/hi/AqcpsIm\nZRvAHq6hlKx9JofAWLfAsHDxPwTql65HWZcqv/hPxmV76obhuRjJLg+FACSX\nawzznflt/4Wbvnw+mxgWlKH0CUJFGCiOfuDZn4DNCVqsxbjEKMlaaIF/La5m\nbt7OmP9xb5yFks0ifOVIl/vXQOcTcb6jQmjIAPDETzTEJYAGnFJmJaPCVSJA\n5D2dm/4C1r41FVZla5kI5likv8AJ2qFE5d0PKNu/MRTEH4iJJQrL4U+DRbdx\n18W5a/cJtXp+jRRZuSXzZGCZrD2qatrvuy2mKaOVPdVS0aIQNcuxVFCsc2K9\nbGlOOoQo13EUcmCb45Ot+1OoXLxNxP2dMnf+e6zAQBXMhKO8iapRoFceMZ7w\n2IdrHu2qbqcn2pODfNyizJlWWpmS+iBofp+q83jU/TL4HjwgeT5g6PaGijAa\nA5ZY0TWAw5n99g7+5AgGAXL6/O2eWWMw2g9sxySADDsP5V8wAjCUDC+Mq+7K\nakaAWVilVntnbnjeUvgoW3GeI7GP+Omwpjx7Qv3iBju5KSiVNI7gIwdS1CBR\nLWQ9QoIx2megwPOebNCDqnD2Xpn6tYM+4KVc2+YCNW8+z4zVzcuJwXNMl9RG\nm7NTKXTxmL2UqYZjx4CyQtlhKEyVB8P1PV3zr4l16PS8cY2quOYyYr3kguQg\nlIEa\r\n=VaCY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-f6336d-kdyar4lj_1597655388919_0.32456522273802313","host":"s3://npm-registry-packages"}},"1.1.0-feature-54977f-kdyaug3w":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-54977f-kdyaug3w","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-54977f-kdyaug3w","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"e75c2a87d1a956aa00c7cb0de497c97055b2535f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-54977f-kdyaug3w.tgz","fileCount":299,"integrity":"sha512-QpRuNcHDBJ9nNUE0t7/ugJN2Gk2RTF7qEjDeFEERxnAC02LBLUeLkLN/sXk3kpQt+88S7Id2g3UJey1sWMKCyQ==","signatures":[{"sig":"MEUCIQD0ft8Gv2XaWmcBl5GRypILkpl+lGcmrnmUANmsjhpXOQIgf7hP8vXnbXwuKflxksUF17zQJvTM9vLXVStzl03qQuk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1505344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOkn5CRA9TVsSAnZWagAAB9AQAJWsK2ofp5Uxh/iPfFmR\nP/Fy5kyRBTqkm2//Rw0vxvUzahisIbcoiVEGCl/s/FEH79ZjfjbmVfbEoB9F\na5W6LqyR2IvUMN4jzgKHceW8WTaPpyYvAkK6tlkhNEcnNoV054nDJUAFcPo5\n4npz5mA5mW4E0v6/5B7Dt6MbAHQ06MB5fjPsGfQFrkXFAiQQg9FozZZrswcM\n76IdGxD1dYL2V6ELao6S7ll0M+h29ZIp2LQrutkjluSgh7KbUK0HZg2jvFFX\nIeHDsLTo4NF3NfIqgFAMjnx0oYwlzDsZ4mavniESEZqiJAdsVbyFCnOdSBbr\nmwcpuwVxyrHllVsmYUelei72lcHzxl56weaJvt4YHSMGbRZfudv7pQLpcd+E\n3AzT4lXjRFjPx3rItM3Am+VdpMksteu9OcPReDtmUl2wzGAWgikrKUJmkpVW\nvZA0tteGf00fKx6k/TcSO9DmF3n6tPPD0kiW0unovqTC/27cmLBZWcLTMGqf\n/6cf0Wmbf5mFBqiQ3fbDcExY7RIkLmyInNzZ0aEvOAm5SddU5e9ngBe04Lic\nwGUuyp08Gnd/vLkAifuCq/WKKy19LX3W9/9p7rFeQiwAlnzIkVbhp0+PQXx5\nr8B3tKmxYsgZDpeFQIBPO/taowBo8pSURHIQPHjJnplwNjoHqIKj8Y6OfTim\nUAsg\r\n=8QiL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"8.0.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-54977f-kdyaug3w_1597655545132_0.0010537901198504063","host":"s3://npm-registry-packages"}},"1.1.0-feature-99a7e6-kdycs06a":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-99a7e6-kdycs06a","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-99a7e6-kdycs06a","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"31e1222d4abe3d637cdb85c41b2077512ee5d13c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-99a7e6-kdycs06a.tgz","fileCount":304,"integrity":"sha512-jFlx0VbuB84+rWrobR/HL8zk6wAiSmny8Nad+OnLi0DkT4uboXIGaXleZYIcw4/dQSiA0eNDQQ7xiDlpAhKozg==","signatures":[{"sig":"MEUCIEElUrTrIArKdmAd9y6Aa0+iKZ3dOAu4HpXkkmGIyGRnAiEAidRPM/QKNsZ/i3x+40dD0CAF+GOJiDGGCCjRQ8xhzIE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497765,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOlanCRA9TVsSAnZWagAAV9kQAIgVzpBQxi7QMw0xDIeJ\nSOsf5P1woYiLrkpLV/VyhU1u06UI+VdJfaRdARo95FoJ/Z4Z+RPGXAmNGs14\nhmAfUK5SpdfPxEA4mUAPWIlwpz5ObUTKb567b2C2isAynoH80CkZRb0i5FOK\ntFRuS81QgfaDdMHXoG1MhkV+ZC5ql25pP83Ve0Ar+NPe2moja+Udb5opQx6k\neK9s5eLKoWql7+i9vJ/1x1S7sTus1CKphXbC4nXPRinMIzE8/K2fi8YF12+X\n83x2dNzcph9zTjbbKKvtAfJgjAYaLlPBkijRe6sDg8Xi+6ZfUNwsXXRe5afC\n0Q98BFWK8AWi0+m7mUbD7T4UuDufQE5el8gozrmnqRfim1eMUyvsNM+VnBB0\nBvxMB5Qamv6eF9RSEPY0D8N0B4LVwXrOeehWnAPMQABu06mD/qVrwk3xBHVF\ngtSbzeTwX9bBCvxyHGniT7Pio1ESaHt7NGV0Ku/HixYGhjnivyYDf4GoPHek\nA15UntRatrJcUChaawMQiKf9Up3j2LRQtvfBu1zlbwFQLzPDboc39JCDCVg1\nUkSmJDrW6rF0fNyLqpzRY9tXP2C2piyOvWuHldjqoGDtfD768jKpy8R9lIgF\nZVWuqQxvPNeOcTmYGvYZ2SBE2OTAL6QK0ApuB8dL8PpuK9IZ1DroYLB3gLK1\nUeyM\r\n=mXcP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-99a7e6-kdycs06a_1597658790483_0.6582186528485112","host":"s3://npm-registry-packages"}},"1.1.0-feature-f162bd-kdyerabr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-f162bd-kdyerabr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-f162bd-kdyerabr","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5c4c39b6fdc541c75c19c7e1bcf708a66e26e47a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-f162bd-kdyerabr.tgz","fileCount":304,"integrity":"sha512-cvW2BNw8QPwT/CImwql2gzhu2rlrB/HgdUzByUUIsjUeoQnVVm000dA2IUXKMpnsYAoAp5KQbCfuIhoc+dBs1A==","signatures":[{"sig":"MEQCIEFeH0DtZ10SV2K4uNcRg1+iFIjgV09BaALo2rUCjyAcAiBkIIIUK9ji2fIr/HcQaeP0r2QPiWVmHwToL5YGHoFbmA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOmOjCRA9TVsSAnZWagAA2TYQAItJz/2ihP0E0+h917mr\n4ChFWyvBNLMb6SUvKEkSUTmY7OA/tzynIjBj0n25b9nJsEc9vvYmFbyrIVzg\nMi8lyvF0FjKG2AOOi4TmwuQtoSgbeLaN98mL5MZqDd0/NUPN7amKoDaXqlEm\n19c+eIjsHGf9x9KbiAGQfEyBQVhYABNQu5FuNXIvKokvm3cRe8JLLdxoI/4a\nmsf2s0kVBGmKsgd6RzQJCQJb20NPDP+bQ0XTAu1JSDP2cFuGEXaD1fWrgXAQ\nnmxOyw1KHdOK1Sz/Xj1sZdEOsEk2sr6PUWA4yobDVqrvd3LDG1lZ72r+k2l1\nDGCsTdK9+YPCuXsiF4qQnteeWyLMyu2as9tIsCMevIpn5LUpaDQC4OD7jGxe\nBv/zmwrx3eMVjCPnzSbjfnCqN2a+rVWUIWddbE8+nW+2job7AVj6FSpyFHR6\nnBMqpbMnPbXgMK30eqlyk1lEffMsWo+/MOasLY0R1pdnntRIHJLJ0Je1rc1Y\nJwx0LAcilWYauWyOBXfwDg3F1w45Evi5c8HTAf+Q74nX2BV0Gfw45dGUwZjD\nh51Ja3VIkIjf2i8EnUQhbst27ZxNE8ICe95U52D+dR82Sh9K2dZJnyiQnBuz\n15CRZiRHnacy1xHhnd+ymjb+k23y0yNVhHbuTrq6Bqijd6levHcHkCh3Y56+\nA3Dc\r\n=JfJT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-f162bd-kdyerabr_1597662114644_0.8592498987306363","host":"s3://npm-registry-packages"}},"1.1.0-feature-8c95ce-kdyf81iz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-8c95ce-kdyf81iz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-8c95ce-kdyf81iz","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"efb9b595ed2922019d17deb9b74781e50fd20a1d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-8c95ce-kdyf81iz.tgz","fileCount":304,"integrity":"sha512-b5sSc6skuYHuy/zwGLDwAWaCNWmrWiFOix1u5I5IS8ynEbJKWZfTuwyxVIkAdvB1C/5fQcMXDDBfyIM+4SEhyQ==","signatures":[{"sig":"MEQCIHhRxf1fA/sV1/3lcYiPHZ6gzOjV5vFpBGzoyB8y0hwRAiBWZbuNyPwsp8cU8KVN8y7PicIyyf9AcOzqtoxsRdudLA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499261,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOmauCRA9TVsSAnZWagAAxLsQAJwZhXwu6801dxVUE5CT\n+EOg8gwilUnx7m5GiaJLUYSMbE6jHhQkHSd9pVPkOqDCq7Ia0ksAYL7ne/sd\ntvAi/ztIFuboMfhou1MoOwnosD8ZymnAnO+1BfaYReSoA4CvsQq8YOAFAI28\nygIWS3KvWlMZdgsqNREKJv5u81LCN1NwRUia+kk3azaUlvJ9Dm3ZQIoTgSUa\nC9H/YI9JAt+Bk+O3TzRc7CFNTjMC7Gm4vw/1hLH3vsTYSiOxgUOAS8ovESL5\ngyoI4XhAp46FDFypTCTb8ykvAcgfNCu80bV+VgK01r907UZz2I7nK94N+YXU\npBRcWq+FS/piisKFl5BW3xGzFDnOnw3G8QK60XHsGxRBZ5foDe4YqMU6CpI/\nTDtwmYGQIhpsbJelHH0Quel7BFUjAQy04CNsh5EujKmtKUQKYJmKdGBqjS3S\nUvvHU960dMtWW6/6uCXsEVpT1wYmvjMDl1zD39KY3WP0clFZwU58FBbta9j4\nQHr9k9aeM9xHtzPPEcgH04bwaahlwfN52aZSBiSvrHAi/huVDBOBcwrgnbWw\nI2VnrvdVcAMh3gcF7R1QC65YJ1ZeOFSdTY6LvxI/6kCjUU2fhfY6IH0cYxuc\nagwcWIctmAN5ETBF0gtyV7iGHDTRe7wCCYvQjlt81SPbon0MfqMgZmBQLBm5\nCDZQ\r\n=LJ9k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-8c95ce-kdyf81iz_1597662894172_0.8852032803724366","host":"s3://npm-registry-packages"}},"1.1.0-feature-f85ed8-kdyggfat":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-f85ed8-kdyggfat","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-f85ed8-kdyggfat","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cdc415daf8eaf0c2adc51c9f3e9e9da57b362288","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-f85ed8-kdyggfat.tgz","fileCount":304,"integrity":"sha512-dmGSL0Npd1fhPQnU+myXBSmpykQftF+nUP6qx8HP1BVIyMZ3wpWcTbcZB/dQQYvYQps0qYul2TYBcB/DEtbDoA==","signatures":[{"sig":"MEYCIQCm4LxqVVC2y7rbAAY2M0DVi7VtK2PSqynWJ4ZQ0C8ppQIhAJl8MTCUgbaZqPCFdjMY6n8g8QeobKOa2S1CLhhw2r9j","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOm7HCRA9TVsSAnZWagAAY7gP/19AqXRnfEzdJb79dwhD\nvNFSyljmr2VISltw+oaosL8daOVzsgXxAEmnf6RF6ay7IqG37MPDorXUGpQ/\n3yFJweLkh2+Jcse6kGumTOiDEeRUoU9NLavaLihgQJSaOtMpkQjwv87WDHWO\nctNf+V3uU6HWn24HT3bIrzjMm41SQNeEeXnHlCO16Q+lmPQJcwiHgYjYMnTD\nhIOlDs2rmE6WfcQS/BJtt6UJ4mXocy7eQhWidLPwi3VnOfO61uAoSfI3IF//\nj3IZlrd3ye/ygj3chPCjzJQsLMoT0j07w63GcUS06SY6h5kPtNHcx6lHrqMK\n5IKC4ylwIAs852N369bZ4RvavA9sVNZm6HxzZXC0x9py/86OKGmOulfA0j4q\nL+gGDSEkc/NgBwWPvIy9g+yQN6PKjaqgucZLanxkmfH3RxGB7kT39iyiXn8U\nguT4Ql0G5OZ64ZQz1BYlBZHUfSVCH2EPODWjJq5d7CulSWfCQD9eGnUk867K\n1UO7lKnbD1Rj4G8AgrLm/UtlEfYZCWQ3MWcwXgglZHyyLoaQ0PutmomjTLr7\n8waBs34dDcQIuXxLNJRwpuBOF0bq9aMko+dohwxV6f+7yieYCfXaQ9yyXicO\nmcaBZl4HIqksjk7r4Yos0J9pgHqICqUre6Zur+izPfZm7fRh5+m67gzUHojH\n+cuK\r\n=9noz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-f85ed8-kdyggfat_1597664966429_0.8967377038964879","host":"s3://npm-registry-packages"}},"1.1.0-feature-17199b-kdzmihr2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-17199b-kdzmihr2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-17199b-kdzmihr2","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"17a5da1d2714d81cb3964956d53a6a3901d6de04","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-17199b-kdzmihr2.tgz","fileCount":299,"integrity":"sha512-YQFnwlOYnTWLmtuHTNnjHTOffbbNpVSAltwE++Y+3QDZUhGkU1H1GfQeg2RW68UWQpZulz4R+oxtos0S5XYnbA==","signatures":[{"sig":"MEUCIBSUsrg5xxizA4tfJKbCR5ZvowWg4TtywjvJvSz4NDgjAiEAvQgoLb+u1rzrwPNCJ5IJAeXFMQ8WQA2J1lUIvgtUTlU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO4K/CRA9TVsSAnZWagAAMBcQAInuN1QB+yQ7zwUGHueB\n/EhRxY91RUxOFyJnca78/5iRDYbihYouGxQ1lNdOTx/Jk06COXo0xonZ7bjt\n+D1r89UTjmjm1qewGIVPZC8mp+s/JyauQvbWImmNomhrxIiHp3bQ6cl4uuIG\n2EpdJMV36I/i6z1igkOGwMEtKrzsTTMhrCNa9AyGBwsDHseWQINqetqrJQSm\nTovvd5Q90yHnmz8S6tG6yYBwmse8TZEu14mK66sO4oSd3FkIcnbUy9MPJ3AX\nB1RgcGP2JBbJB2VEt8CG02M3E+rvILZ2lMEbA5V0yFz5iFx5+fea5wcpGwZK\nK8D+fe5+ZhSRcHob0SjfznjukREyet5pAr2MLA981zpq7g8qUa4iLBKuQQhS\ngRZctygt+8LNBzmky0rvOCHYlWg6jsfM9dqGUHbjCzXNa7gP9weFmOtg5I/t\nrV6r63KRoq4+YXn9jZw+c4OSLGxarrtjYMbKydS5FF8cXXV951N26J3nF4N7\nEyMJRKLePMJfB3a+HeN3uC1b/R0ZmLc5SGjetDTKaRe4H1wj+rKeeYvhlYWF\nZW4YzG76usPPV9vkympkSL+euwlrtTSnA4XBvXKZEKJpxAX0TACMfIOyOwvJ\nDX9CGw/xNgTi2WRynOz1J4XIIjsPHsKy/zdHjC3jw5dZqwGN3Id3ye2ogBDf\nyCC+\r\n=nHlM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"^8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-17199b-kdzmihr2_1597735614693_0.2716236804604528","host":"s3://npm-registry-packages"}},"1.1.0-feature-163c2d-kdztpfqu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-163c2d-kdztpfqu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-163c2d-kdztpfqu","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a6d2306999c1869d0d02abe64687843727bb117b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-163c2d-kdztpfqu.tgz","fileCount":304,"integrity":"sha512-YLDxtAprE3It1f9eJF1k0NViUJ0JNBkU2UDbrpcR4lz/Vy+AkQJgDqmYcqAAcERFqJ7EfJwIYjcDQmoSla9kYg==","signatures":[{"sig":"MEQCIFoQCZxffi4sFEKNrjpyc0Ogj/zwIGlqE0+WPoJF5Y9/AiASTwtv5XVN4Pn6JjY16ah2q7qTqd7EIRkVuyPOJiEtow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO7HpCRA9TVsSAnZWagAAslUP+QDH5rAMuVdzYjdO9iEE\njpUXqPhodfsCv2gjQW+7qncBP4FoyIs6R2YzV43/cFeYNEf6hpXxa8TyVLya\nPoDahBJzP1AkisL4PnYw8bURZnGz4APmPnixI3P+9afn3Q+woxtB46XO0obU\nPPB30FTHp/KpR1JXJSCRkcIrelRSfuU1u1vx9pnSBnEFT8ju8tH0I4FPmMvJ\n+Bd9YNdYTj/j5Lco4w02X6Z/zh+C3RrLYy8VkaUWoSvinbSI2nIIygsvyQEk\n1+xQKDxsbHkjEpb1z7fEHRKK8/+DLtQfkNnKk1nsdXsGoWXZnU6RrFJ7Vhit\nLF5W/YaEcpl/6WW09dph0iOLQvyjGSJzKJTQ+cxI+G1wVAk5sARVJwvny40M\nR6WO2AEfTdF629nGHMgAYtGM48hD//0T/qR2S1UI2ncZAb84aoyIrlziVVuk\nxImWqFwqzvOYcpQImc9ZUa0cH7cB7U5MKJqjA/+dLzO2F5Kb2XJw1G3J+R0J\nUD3AqtzwUiGO5kcRh0jivqZT8lniDgAv+8AKhyphOe82ephl+7sfg8RFVfxa\nN6Rifjx+0GWf7RRNxrZkRyJFPslQ+tlvFO5RhFVWfF/7OqdeXRAnJ0heYYzF\nyyos6lY3iBYfMc+TLHnyGBMhy0EzjoMWTZruoDKDQ/beG7PFzya/pd7aV5mh\nht01\r\n=J4F1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-163c2d-kdztpfqu_1597747689031_0.47656000230979756","host":"s3://npm-registry-packages"}},"1.1.0-feature-8f99f3-kdzu6jug":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-8f99f3-kdzu6jug","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-8f99f3-kdzu6jug","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7b7051ddfb6f48853409093fb4b11775c761858e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-8f99f3-kdzu6jug.tgz","fileCount":304,"integrity":"sha512-zyLVy9BCMJ3pKyqrpu5ZoZdge6ve3kavN+bzxL5YCPddynlA/KFTlsXNIRwdTLVgxoiH8Qoyc5689EHl1YzESg==","signatures":[{"sig":"MEQCIAlr+DGajCUwDhuNJq3wnBGoATawsT4inZ8Ls1o+FLxfAiAF2eyqqpUkIta/w6gF1JZl+PPjwTZv2qUXgr4m+DA1gg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499558,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO7UICRA9TVsSAnZWagAAL+QP/3K0pvJaIg/Y3tJj9nVH\nIlKMSDGIssprOuSn8ypka8SGbp88b08dVRqI49FAuH8oXTmhk6egtamVR0Vm\nTb8xxLf0QYXa5aye23Fb5Q4BITWQOh5P6q2jVHNu8A4JDvOT9b3uvUsMSKqn\nCHVKpj9yooCemwe6N/f2odz0EQMxxmEsSDgdoMjYmv5K87i1OpqRYzTnCgz6\nNVjLGXWB+hMT73S0RKWCBuHDpd7F2h3anwp03ToqmNhBWgZ9SnHiYl2KkURv\n2NkczzF7N/+DWPXL+CUK+Ffcebg1fSbrbewOsbcGuYPWum7TpXQQLcQW75yc\nAxQ7aYsxUjJa0vzwkDfbg91yL8KmqmxtodnqyvcwCZWJEbnyPn/mWkuo0rkt\nH21H9Z3FGGTNRb3RXcttLv1lK/6RW98uqW3N1iXyy1Kt2SUbZyw1y0cpVWMR\njG462bspe3bVadKXfTMBP5Q1qNaRedDdTfaVGIB8KSSuLeUIhFmIzLMJe8aw\nuH79IyUjudTXUuZzMSW2CeTyuKvFSIPzl6iTZlRng/tY7ap4U41nQzFNxWH4\nUoguCPQexTZKHdXZdSsMQEuWyhgaLvyN1jZp2c9kkm8dPoLSIrgPaFyTBBUY\nxuQV6IrIdnGwW1PJFcl8JNBRN9CpUTrZHJWZGYtyu0pzzXO05c4/HMszPPOi\n54Hy\r\n=EqB7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-8f99f3-kdzu6jug_1597748487725_0.17406754005451486","host":"s3://npm-registry-packages"}},"1.1.0-feature-3989e7-kdzvdu2z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-3989e7-kdzvdu2z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-3989e7-kdzvdu2z","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2520ecccbb76e1f4313a68071e3d3673575a6439","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-3989e7-kdzvdu2z.tgz","fileCount":304,"integrity":"sha512-dff5SYYVo60f9o0uPRBvKG5WYCD+gSikxyYJbl2J3JWyX2NihN3af4m4Fl/5uJGRONIUgXjAoeT2MWsWdsv7gw==","signatures":[{"sig":"MEUCID28TBYLlEWR6erj1lzhybDXUwZ8NwVyoJAscUFpZed/AiEA6lwjDz+1jAwTOrXHbLAe7LMt5jqelixtjC/DaJSlFJ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499546,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO7zrCRA9TVsSAnZWagAAAS0QAJ3ZzWprvE1S6FPJFJVe\nzIXkxD1KY3gL8PBuMrDA2qoWnf0UWJyAwXD+YWMKZ22wYE1sKyXy3hogyIbm\nPgMelg42mqSUGj8Oqrf9+kk6uJg/Fz1Iay0P22jD7abUylI6t3psA6JLLjXT\nm0mEvS1xn0E8iPLMvPdUIkeDabQV82YcX65XcKm3u0kFB1sKb1ai0sQFb07k\nMuSGY42+Xru5P0cKpAyw3EBY+0mkj2WxjmTk1jgXZyE00Ir6xQJc/ewWzgUw\nkAoRjggfD/Er1OHRVWJJGUl5we/csGymzpehmkWud1lKsdVeJZMB+YdqXE/P\nKM7eD5jvwKT7m90YBG4LkLoYZXHcZ1MZljUQ0cH5w/7NQKUSX88aC22ARCKf\nhfnbEkacmgF8HQDltNxN/skmfe2IU5vxkCqISAe1Kh9IIh0o9+UueqAlEWLc\nreTsuWaxTsHyBu990w+5zKLXcmN3+iau7vN6K6upxrd4/5nHGDvgyr+Vp0JF\nUerY37dTul8/P15cohsahkEeSwmmu4I+wvDpyxtYdNuOt5zW4aXxxGoiYS3t\nD+iex9d+CRXtX9sKHwC6gj9dfLayk9EoZGPLv0np13/tNssmUWR+oY1toXM1\nQuUA65eNxCPP0duaBW5weaKSK9sc1x0PwgUztFLgHe2PNA1vNibMY/CxDpwp\n616r\r\n=zujo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-3989e7-kdzvdu2z_1597750506717_0.358520372003724","host":"s3://npm-registry-packages"}},"1.1.0-feature-9da6ba-kdzw51iw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-9da6ba-kdzw51iw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-9da6ba-kdzw51iw","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9ab46f7f7304d0f59fd4a1c12150e544c1e191e2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-9da6ba-kdzw51iw.tgz","fileCount":299,"integrity":"sha512-ZkpfLA2L/pWn3tVGGEKKy4nyjHLhpU0e7Kg+jhIgrqvxGxEXMqw/gKm07jiHf35Ux8HdxMxv86wvvS2/3u/VQQ==","signatures":[{"sig":"MEUCIE7d673/BjI78MREFH6P4PM8nBaP7DPBDaOQFgI71h3WAiEA/g24cp1u9MzpXTrJAvuIaHIKhVDsqJFjNC7+GyFzAFQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO8HkCRA9TVsSAnZWagAA7/YP/R/c7R2/KpRuzKcTCcTu\nSr1TrGcB3Zt5l6Mh2r6ViCUCIb0iIH7vbuy6cdKY5TUfT0ucgLzK2RJa7xzA\nwLUIeDTognF7N/3g6zcV++w9qbAAr+EvnggUIUq263q1fTQwCFo8lB/pRr+M\nlyJueHWg4qxDIrCN7m7J0B/f6x1RPrH0p4qtVqIKxcgHeot2DSW/pLoSfYMT\nXUk6sKXbEOgvwemzR+JxAmJfR3ANYdOaAn1I4Lc9KzKluul1Zs+gYjSKnmD8\niPSAE6ozJr6NoAsW0tPbfa88oDWjVlcvBEnWrzttKioRQtJYd2TTcUnTOUCV\nCHm4nvj6uLDpJHxGpa0h4Oy6bKdom7o4IynKDQ5hZnBngSAxaUwMPJdwKkD9\nMMkjP1nEXp3y7530+1ZxxPdKdMLg6ScL+6SNebIAg+qEkm/pVCFu0WIPXX2S\nmdYNN1sLoGLaoYbbXN/5vUTOmCnlwS1NOAIwliGwWDSRS9DidXtZPkwwhI3u\nxwMAUZQ5KyKSMEbMoro5nAw1rYK50l983ul8gxYvjGSpp+KGeMcbEr8sqO9h\nbxJqbHCHZZ+vQGEQ5Ncjn7u/7fHf2ihFZTL6g3Sh6A4+zlsBnffYrQM6zHiN\n3y9agjk7mfVmSkNsaxRXKhI2D8+WHQl0hzHftr2v/CqeUyXxXDqUWJx/k3GK\ndqbe\r\n=g5hJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"^8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-9da6ba-kdzw51iw_1597751779855_0.13122814986338738","host":"s3://npm-registry-packages"}},"1.1.0-feature-64b0ce-kdzxko09":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-64b0ce-kdzxko09","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-64b0ce-kdzxko09","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bca8c9a0a8b0c90c00af5676ab8063d3822240b3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-64b0ce-kdzxko09.tgz","fileCount":299,"integrity":"sha512-/sj2sA5WjRwr756T3CBkNSeal0Nq7zgCFm0AvFpAOBoLwdYmlEqVJFHsmjiQ7xGXOjmQbwluSyS0B8XOEjk6ow==","signatures":[{"sig":"MEQCICFAAXE+jR4IFp/1IS7eyT1LRbCqFuJLsbgC10exwTm5AiAu35BRrJXTmmUnRV9Wot6VWwM3J/xlRHLOnMkVkQbwKw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO8tGCRA9TVsSAnZWagAAMisQAJCLJxTES9A+BZwZjvWj\nxj3XMXzXi8lkkXjkq2qgZo7sasS9F8k389jUDAEKekmPf6YYS1pOMVp6asQe\nuZo32hFZEpDsv7LmpScPNkxUiNyZO5EQf9XvpVKLNktRmNyNyDSrp/O/HSJA\nCU8N7vzKgFeIFka1clT6F8/QG8KyQJO4KE3m0bb8rgHxt+ldjhyD/kVWLXJ4\njKwyckwus1eRo6ot2rMXiSz/AKmQc4ym8EU8cunhUrQ/8EsWETx0pg5DAxZu\nnO8Lvy69VqcrZk88R4jxjwpr+kEuSVOPAGMcARWsEEmp0z9uUPejOxxDbjHq\nqr7nUIyACOH1AyAbRzhG4SWHSqGeUP3xCL7sTF/8iaKy7IU82blqDn7Jf6/i\nOBsDyq4cRNLS97IgkhE7QYnYjUirZGxd2XBzCUbFVPYGPNbOdvizZeQvUM0C\nCXa8FOdWhMeGxrdjYHt4cj4THb5b7DiF/4qJAfdARlSbQ9LuoagaB+cqAmvk\n1O6tAVCRj2kO6xyXNlbF3xsqIUaEp9yrBWejeFs0OHkReLg/gm+r81FKxxwA\nzVFg4LSTcMPpbm24IurhSIHQveRjjTfO2VxHP9TvjikDf52XQwtveBpQne5T\no3CoLCYgOByGqG2fbw59s5YlP/JiulShCV5SxRJlXlg9pxYdutrMgXgQ6izS\nRiMn\r\n=7Cy6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"^8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-64b0ce-kdzxko09_1597754182086_0.8532032625832651","host":"s3://npm-registry-packages"}},"1.1.0-feature-0bdc2b-kdzxz5vj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-0bdc2b-kdzxz5vj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-0bdc2b-kdzxz5vj","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"498999d2f165a590b29bdb165a0060bb58e66032","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-0bdc2b-kdzxz5vj.tgz","fileCount":299,"integrity":"sha512-BmSX0N+JpLok2rO2PwmyHJ1y+2S3c0AanHjNm/M3fESWFb0FwsWMtwXg79VHHyYy2gmmKrA9HH8RWY4BUil8NA==","signatures":[{"sig":"MEUCIQDvQp1zkEXLQOuxuLOO1xSRFwB8PLAGllD1cRB9p4n67QIgbN+oJ064P2xa77+XTGtDWWSCTUGPEF6+whsX1kbGBG4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO83uCRA9TVsSAnZWagAAN3cP/3s3GN4DVyywLjFZF/xO\nNKNs2g/rvZWGMsFQsSTKxMMWlmvvRSaXI8vF65JadQzKWZOCtmxYtuBHTNB2\nG+3qXuinH8ImyozAXnJ0W6dZMnbk5vnm9lYdbdgepkSS1eRX1V95JMzXsB2y\nVIpsKuJVpaHP/MloTHwr0V6HaG9+mz14pwTKgs4i71JTTd62WtRlvdIHIZeb\nbsnMY7+pTp04IxwnRXuyX7BSbyvk6y8S23nqBlGGjEB0xaunHY6uTS5VYO6b\nml+1jVzu/WGp6AM7TvQJJjlIZo3nOrHnnZstml0MDl1FigBQfCPNBe80M6JR\nWEuJnJW1vATW2vE26VF//1HJm4eWCc2/WiJe3adaCb15eSclwTdACzgxzeuI\n2YkKcbejdiPk/rnjJJcTPtbPmGy0VcQzL7/8POfgWXGRLDuMHMxbjVc9oakZ\nFl4uvxIbDL+LQ5ePodKaMBlEXeETQ7ZKGZ5mot3HjI/xfcFLA7iogW/6ysGY\nMJ8OOdlBmm7srKh52BCuwMpL+1awRvsOKAQZrKpQqgKsJ2uitkD/zYmfxajf\n5S1iQ4LMj9HvLduqG4DNtBOgUYiDR/FXkWNvaovxEzJSGjfP6Z13IG08HMld\n8m3gtPph8M3yF4II1DllOAQMWGB2YqkoQaI3R/bTT+0JAsukXo/0ADHvM6vY\nOtPh\r\n=oEpR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"^8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-0bdc2b-kdzxz5vj_1597754862153_0.6467136094058401","host":"s3://npm-registry-packages"}},"1.1.0-feature-8571b7-ke01fu34":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-8571b7-ke01fu34","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-8571b7-ke01fu34","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2f59fc840cdd72dd0ae6e853991b69f647aa8ddb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-8571b7-ke01fu34.tgz","fileCount":299,"integrity":"sha512-+JJM9clJgD7jh9upm0J5tPztEB/z7qSYIJcf9EvHJOClvV6KGXZfxQA2nOkLwKIEG7FQnC0ojb+wYqKWjaYBBA==","signatures":[{"sig":"MEUCIQDpI/4BgEs0lj2LGy/vZCvlBLx5AzTPZ8WFBHAOzEHXAAIgUDhPbCAdK8fuhcgj8/+meHxpVnnotrhI4efZiFTFxlw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO+SpCRA9TVsSAnZWagAAfcUP/j1Yb3ZJQ13ezwig+KJG\nDTLYc+Ghry0WOTdazOaGC7zwVdsnvMVWU3s80aVBnKAIeaqQNumKKGzh1+41\nOkUPlLEXn2MVydJoTYKGVvrgxltiqebC8LAScT8fYALPic2VFtum8ZrFYqFY\nQe9pTRA/p7HMijWLTLhZr4tn6skza7uzBan1wLVKb964y7OuMn8XvtuiK1Lq\n9QrJ+IBfNNPbDz7SNRDcMhN6Rx3c/KLZxHyU+eTcfBZjCBNIr7gelcVxOAFW\nMs7/S6+ZA9zx8x1q30s31MIP+pHRsdesLAyjQGYrv2guOpIrpBQyylBRtEHh\nkPGLOiVZQoPRZb0EqSt799o7EfuLGrSc+bcO+lYKgZS4kD5rC2wUCsyqUn9F\nTMiObGJ2vnVEz/kPOSqRAMb80VHbEAEqea3MS8xZHyJ2neddfAzl3Gz40WV5\nilro3dO1p8/IGnA/7+j4ZWHssHHOHEBrxWru+sPETKvg4j5f5nrxR8JQSgN+\np+uoTI7svyJax0JF7RZbBd7veFR9fIO6KH4Boi3B0ehy9DnSmykd31KHn6V/\n+jJRQJRuJIMA+T3XxuCQ1VD3SlJxzB7TMOSEpty0eZkVxKxcYFvdQNZ9/41x\ntq0CmAQBGRdVNq+Ja6xPXoFCBeteXS/7JKieN/BZTafmc7RL5CbUKsH1VIqm\nN3V/\r\n=VPql\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"^8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-8571b7-ke01fu34_1597760681091_0.13825051115712128","host":"s3://npm-registry-packages"}},"1.1.0-feature-73cae6-ke02c5kb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-73cae6-ke02c5kb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-73cae6-ke02c5kb","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"88afbbec4f52fba7bb488a5725b7fd9701e43628","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-73cae6-ke02c5kb.tgz","fileCount":304,"integrity":"sha512-H4wtptIzikwmEUtCHWJdfytgE7jq0/M9G65cuMCKryLxBPJLM9Xmnfp3tUDnzumOTsPg2H3D00PjObNmFki71A==","signatures":[{"sig":"MEQCIBxPJy7gkLt6Dky/TTMNrzO2cmdt8Qo0ea1QB3/g1G1tAiA8o1kAB8wZqWOHX8Siyn/JBr4fmrjsFl/UgzmCq6v+ow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499810,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO+qICRA9TVsSAnZWagAAgXMP/i5U96ZifA77Xd+UM4L6\nVJb34yXM+mHdhOcL0U1ZpPTIalKvXTJxe6RZj1dNNQqvP6kzMcVkRVE9SbK7\nUTnJDsIlOQAunydQnN/8By5MajQ0ClFH4qjA0DcquDRHySq/rSsFn2vKl6Wh\nIoaomTSTjj9jHu9tboae5ZiPFdY09i0iblOML6oq3X5NNXt5Ln2lwPM74fOx\nmrr4ei5wXB0gKWYAeG6w+gfMW0E5hSs76WsSkoT+ZeUP/+tzoEgId/tk8q27\nifv52wAyKMW+j2KNk98qOd940ihZmsixjXBFGYg+fede1RpWUob7ynq5CXHW\n9xRCcScClm/Ea7NbCpH0sQfb5ss/DGDGWxF3w9U/hb4/7JaEIzE82qPigNXA\nmVE6IdxZT+6QzfbvJuMwqJkEkReppuWnUXVTQiNT3nwm/8uv8jjsQ0IC6Slr\n6Oh0LeN4kaU15ur4HMScpV7yzBY8itND8j9zfOC3oUQoIax+m/W+Tffp7vm4\nPehUWFSNuePLuGz4sAEgCF546rjYtbpz1qEDly+6CwPxzsJX4hhG6lh/fxZF\nwC1sEIaAC8ifs3Y5vlOLA4ct5HrK2acBzQRczFOQQ8b5jUbdyrt89qFID2hx\nrhu9DfhmLAvPnMjKGWy4oHTfoidVAR5VFCBqAuU7HuANScJuXy9IbxXop3Ir\nkb8T\r\n=LLLu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-73cae6-ke02c5kb_1597762184088_0.2956683802054785","host":"s3://npm-registry-packages"}},"1.1.0-feature-e4a0e3-ke13r6gm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-e4a0e3-ke13r6gm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-e4a0e3-ke13r6gm","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"112f85e26417229788ea978994ad7e1fecd2a549","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-e4a0e3-ke13r6gm.tgz","fileCount":304,"integrity":"sha512-slqUluQbS+BO8l7Mz2q4tj9GaORu5JiSLho+ibDA2g0qLKs/zD1Fg0FdXdUew/lt7SPEgruG3Z9j6NsjU0oirw==","signatures":[{"sig":"MEYCIQDMYr310uz0KaRiX/KgPUQkheBAztej2O02tHggFLH2tgIhAMEgVGKMwndoK7cmP/dubm3unqp55GFobq8h3ecchjPH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499810,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPOALCRA9TVsSAnZWagAA7B4P/jrWnnVvXjOY8O7Ju9dg\nuxKf2PSODnfkf55Zsjb9bGhP8M4XuZ4IBy1khuTN7hMEXK70Fq1p7Se2Qsqp\nWk/YlnrC8Ftbq9OoY+DdUjt+ljHCqfc8y3MHYw1//p/+YDMMzKB/lsaiKpde\nKmQ0liKllzOKvx/1bIr6Ohd5o0/HnZZogW6o7vKjVw6HzNF3QjP/KbwTJEuZ\nkngSTahNoLhSc7RkL6bZ6Sof9Qs6s+PVBrTcEf3017Lb05oK2mfYvWRLVkyE\nfPf0RZ2lCb0fevdf5e4GjedV+GL0yyeinY8sccKh9isRNmEe6IURWTXQuHnT\nL+vHTUEvZltQDo9d6R46L4O+SVc0aoOgIux6zZPaEF7FFXdchDpbZGj5r+N8\nHRpM8w/TjIza59FrwHj4/7OaFEohkm+TjNYUhF81Q2V2HHPhnjI39htlb/xe\nlXuX9a6o+VzXp71yVgxrMuQpOcauDUww8Yfi6dKpiL9WG6Rl1fMkzlsZMT4J\nGWwXyp//U6uJ3Q4qqwFcIWSASj6Bl2W4LY8/wRPITBPuYc2sPZxbW1cMkwGe\nMGPw+9VPoK+NqsW8CZc8SbqeNZtZI0JXRRThOFz//G7KN5Z4ZRexsHX1wUOl\nqIZIsjtbPx85ufUngF1W3YF5QbpDvJW8gJjTaG96Qo8TMBw78XgAI+/+FQQQ\nNcIr\r\n=dpH7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~data_objects","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~data_objects"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-e4a0e3-ke13r6gm_1597825035284_0.20081046056174978","host":"s3://npm-registry-packages"}},"1.1.0-feature-41f66c-ke141eg4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-41f66c-ke141eg4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-41f66c-ke141eg4","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"35a1d3d49b7d53697c7d8f3d217adf03f91a57be","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-41f66c-ke141eg4.tgz","fileCount":304,"integrity":"sha512-PaXBh+dY1Bv0FHe74swMo/QkKOE9HUKiLJKwqoK/wy48LbQXZqZgObytSvynho5099o13md27PrK879pylkkoA==","signatures":[{"sig":"MEYCIQCHDe+LyxodtG8aRiN7LoAboPpegYdoqxFC9fyO4SqkLAIhALA0akfLw5UlhqgaPeUTMONRI5ATHqvfhecK5VwBwlHo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPOHnCRA9TVsSAnZWagAAAdoP/iVRCf7BI3F+9UOtfe83\n17jLvWx8GudN66KDypL/fKYsqlPoesdFbL2nvNE/vk2f+Nb3o2I+CgdBoz/5\nYIM3p94Y65lkv1kDtLe2N7VWD3DqrNTq9ZNO3gaWq8Xg1l6C5ZEtvmYcZ5zN\naaonen8srj0JotM18AZ1VtlcbebvN/5GwXnFSkRrZdyseRbiOJP1C4yWPrxh\nPVrH35zbPg44vyMikzgtoXrnIoEH6lWy6D8EoYDVA+SnAmn5dB4HMogue5lS\nbAmZic61LwbChusEE1tYIbwJjYeyQJioMWigeHpMHn69TW4KdtxHw+ZMSECr\nQiPT/cpxyRLttM42MToeDdWCBkpLl7l86eUm6nUQT8suJb2YIy9VVmgMolQv\nHmXBx62Tvst0jXiJpuiQrgN56JfkC4x5vHC9QxSg4V3NsXjOXs4mnj700kuD\n8tiP0J6S4QfjTyKA3vsucYMnmGi8upMMj3oZk60rLGkhZhRwaaC+vMFOCbRX\nAqqsq7lFd5rzxcyh/uTC6l5XLM6+bu4NN5A4THy88EE7AF3b3XFeGuxBySUG\nQwcNXCHexR4gaSOX/KvUnpJjOsJySyH6ccFFSbwyNjjNQi0etxrxLT0LuJ/P\nJaz6j131tcppTOvEVG6euphp0OwR3cOPEPP/ncl8Y4aRa88yDjhYdwzZ/N6t\nH52j\r\n=vRp/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-41f66c-ke141eg4_1597825511358_0.3916003279744149","host":"s3://npm-registry-packages"}},"1.1.0-alpha.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-alpha.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-alpha.5","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d91bf080a27c366e32a00ed5e36391a939fbb7a4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-alpha.5.tgz","fileCount":304,"integrity":"sha512-+qO03jwcJORIOSGqwti4oDhJSr1DKXYjemG7sef5iw+33g2q+G33cHp488RkiXDTKzaFk6wXKddf51lsOep1Mg==","signatures":[{"sig":"MEYCIQDE+nfdUEvEc5EjAqrSDlqKZ57xpfzbT4fcLjhrLXZ7/wIhAPYQ9CDm4pF/tpI15RftVmzVyTbJigBXKB5m3jLeGaj4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPONGCRA9TVsSAnZWagAAM2kP/j02o/mkZcm6ITzHACaF\nd6FQWVH66vPA5aCMJOtwoN66ptxenZBIoz+bDqQN3VsnBXp6yGRl+nUdHlFM\nn5AsYwLMlsG5DqtVABiF300PXC6SDCK0DPcbs/rKf9iZC06XpaBTZD11CDTJ\n6HZKQlhD7wxRthCqgyfPjjak5oEHk5b4Y0KFQzhpSG971VPuIVgBRiGyG5Av\nWlJ3DgXSYDrxGFqRk84QJG+d3YaR+I9HnjpalMmB93U7WvAaMvpH5+tqX6Sn\nQ+ZgUKHeK++TXB9Hox4oLQxtaUXqXrS6Jop8QkBGV06KbKBgiqeFy4eu9IoM\n/PrlNoqz6B8dJLZI0/oYzSmUKmoU51kcLJhM99oeuWYLM9WPtsoq6rtlm9rx\nOJf91zFsuPAuci9MxF7UrwZv35SQ5XeCihxXt3UnLb4q19x9XBkPH1B51oyG\nWz/vQJAUB2YLPCFe5SfccUUs68OkP85jei3mDS7kkIe9IsDjSb/AJDgjcRQK\nLHkENOjS9HzYrAeK1koNPENn+nE+7HUL3pCnfDQ2hLPwwNbHJD2D1jL3rywc\nrDRnKGaEKDteLKq16p7k0x0W8B+tqbNGsXd+z/Ml8wqEMvzJiwjmlxpnvmXr\nBms/HfJFIp5183GrTTF+TKZvAw/JJ4anbwE2eE862V7bgOw4aCjyP/pV5Ljo\nS+NT\r\n=2iRP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-alpha.5_1597825861567_0.1028964697888668","host":"s3://npm-registry-packages"}},"1.1.0-feature-0758fa-ke15xfel":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-0758fa-ke15xfel","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-0758fa-ke15xfel","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"37cc68e8c5ea847f800f708b94f0ad54aa9f22cf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-0758fa-ke15xfel.tgz","fileCount":299,"integrity":"sha512-Kv0/4c1nqjNsdr9mGtJjv8hV1PYhLpGsciPjF5kacJecJMOIb6/U8Az1u2J3rqpFaqj2YoelVC67yDnu3gkV6A==","signatures":[{"sig":"MEQCICUThCYHVUw16eCyHUTTcCUy6CzXNYdiGyWDOzEF/GhTAiAFN7K7shgPumbmYvM+kE4vMiHAuMew1RdlI7rIDzuGnQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517662,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPO5LCRA9TVsSAnZWagAAjdwP/jE+tKVDcpd4xdMMtLKr\nLV0lZBo9M2eUZ3fzklGX3R0fiYin4Syc+gsxZxfhgIrmZr+NWMYDWePEwfbs\nTQ8CiQTnetzr0dF9p0TEUiOvSGOGz1aA1l1kv8qVMfogc8um2h2N9gqNVLQb\nGj3uOiRyenu9dMk7GTuZXGiKbuIZsCf1JZZivepBBWEuz9zsd7PukF9bjD/e\nFwkHZkz2Hn9KHcGQYtP8Ge81O1KtbEcQGOIEzWBUvxPbIg+nuMlVoVBb4TWF\n25bVPRCdxZls0LvH76XOcUuOwesmygs9/pbALmfKKV4ymsUu7WiCW1QZUyxY\nc/Hbekrc/QjdN3UjZ7A1gxdtaLMHkS7NqKcOQB9AfaiO8fUKbgpZEdPWU8jq\nt8dYqHYMsUtrtb3q1SjYVGaQZLCG06H9j5IS1sp3BUKuu3vfSOeaFl+MwzsP\nImZvuoYnrTQIBOnE3GzkPzY8qG+auKuI/WkTBaAmrNI7/zbffF3tYqrZ732m\ngHJyj8AKh3mHHDdrseojWuf4zLS/8R7o0IgAP2vNlfedOFoWhP86PcJKnCa/\n3nyF9nUsR+XqVEOVJ2/e76vXam4PD2FJEN/uDsAHMnv4QQqXE1gKtttLp9xa\nGalrvlv2d/xS4kooTZGhwkIUroYUV8O5N4UgxKiwUn1ZX1g9TffHfdg0VsnG\nJgsc\r\n=zpAt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.2.0","clone":"2.1.2","moment":"2.26.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.15.0","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.2.0","mocha":"^8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.3","@types/node":"12.12.36","@types/mocha":"7.0.2","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-0758fa-ke15xfel_1597828682359_0.4960620675615304","host":"s3://npm-registry-packages"}},"1.1.0-beta.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-beta.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-beta.2","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"baf8b240e5f69139fbab552109750149ff2618e4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-beta.2.tgz","fileCount":304,"integrity":"sha512-OGZl/sJIJKvzUGFKuMrAfiZ0k5RXn4S0CV6tOFXU3Vje0tWwr93Xb3eZZ+Fpfu5sqL1p2VGuFpsb/mF4eTarLQ==","signatures":[{"sig":"MEQCIB/DZI4Of1euFJEz8pFyNUPqY8WLtM87QQkS6DITJHZFAiBXWlDHO5//XmpTUttoLhC2brlHTJrpgmDv4YwdwwTjcw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPPBSCRA9TVsSAnZWagAAQmMQAJ3yUpK+5pZED2NKkZBo\n6VsnG6sMqXHoPbX78YIPz+MP4q1ubOFdI9wJ2W49uli5D8hVSo3OfUA1rFSG\n8cGf77c7qGgXB+rxIdsLw80AsRcgNJajy6cArQmYHHk+cXUifDHueRxbok2e\n8ZiwCPYtcovQgmipZ+HHc8MHE9bMnbT8GeRdVnNiVA2JBTEKgZEOV5dkjPIX\nb3EozpOIlmM0/tN+HWXcTb/MIN3S+Ia/xIYhKE50LYrBoGstcTpYABMJFr75\n6Egs6ED3IT33rc6DyZQxhP94jvaf/fDX7dy0euluPDht0lIUUClQp2MKbZCI\niYAB/G8ggUO9jvPecsvPF/8SsJrb4vin6GwgQSQzHXQB+EXosv6WkF+bw6hd\nKGCFuoYhezk+f4VySf91n5atOal+HKcTtJx5ANkSqbfvmVRaLxU05DcsBfZM\ndD8puf3QuNsd+jy6aOHqg79nmobNAe8W4pOHK5GFkSOyF1XcFLNghGf5lC9w\nBKzf4GkZb3p2S7K6Ca2vYuo30Qvf/os2Ztu234YTIfq4TjLQPz4+hVDT90rR\nutpo+7MrOle2DRps0F+/0wFnuS8FnWO+UxP7Fj4J4hrFsMMjpoPy0OKr0PnL\n9MH6Mg9JUvngoe4Mzq1K7PWpaP701OP8Yq9bQoLleb+QjT3O9lJfQ1aCNT7W\n4ygw\r\n=l5CX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-beta.2_1597829201828_0.6236640733098304","host":"s3://npm-registry-packages"}},"1.1.0-alpha.6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-alpha.6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-alpha.6","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"993940adef2d5e122b33ee3c1b77023b38f5ba93","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-alpha.6.tgz","fileCount":304,"integrity":"sha512-ZbsLtwQUZTfcRca9Is3z8JBnX0cxKU7Pfkv2GXucnt5WYtBZSdMeHDDtlOxdNVpZYcUEHGoixx/24jRHYirCOw==","signatures":[{"sig":"MEYCIQCIh1CDoIV5s4Yfel946Od+MYplrh+BIoTzMQdMRE7hLQIhAPcgKsw1kl2id2F6ueyQK3o80HgwnT/G71XrK4oXUzcl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPPGkCRA9TVsSAnZWagAA0icP+wSqnwdpmEfiy95q7/4j\nXEZUiovLW0xoaYJs19dlgQ21O3zu6OwZkse7zyxlz9/0rlH06kROi8jaHjpo\n+2FzUv4rh5/b8KxKcC0DndlPv3wm5WEC2VeFIvcLdC0g3a/rJVNoPDc9C9pa\nJW0Msd2cJkinDH8qff4c59p6ahe7269xoEsGWQrHMsOmL/f/6Q4NmM6g11Uu\na5w3Q6kDxRUfbP3S24BmU2hLJ7nk8FGwJx4q9Vb10EWGsfCe0zFcfeK6cDoY\nOOLkbV2fQsL5qrViXoYd21GO0VmtEBSac/x1ZRnviHsI22mEAcXAM0s12gGm\nzUmtRmL8fXs8UZgPCL/Tg4lKNovN76YklQL7mmUCDMURpYdCfzJF9JZLz1Ne\neyF1r5nhfTh4fZeyYBVVRf2FZdJiYdwT6VmGFuJ5F2/2+h/bJzW7XhXLSzwV\ndMxWiQRNZKNoVQbZoT0WYh2Uzg0/rJEtP5HSw09cAyE3H4SgJlosCUKgDsHR\nWoeiudB7ZHhaw54dF1E4lkJjrScslNTMPnAW2HhPr/TLP1kIXU1H0hEA7GsW\ng+LdND1qB9RL/ryGEvB7HXeL/dAjCZBmcs/XDnfckygGisfjrpeKKcZ3Smes\nv/0sC5X7pcuWeGQJaZ7CCNbCp00oXwaAQ7jKxPFZ8aIDbltKrgP80AEevztn\nX5zg\r\n=mXCE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-alpha.6_1597829539940_0.15630509844408924","host":"s3://npm-registry-packages"}},"1.1.0-feature-79a323-ke2hn8fr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-79a323-ke2hn8fr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-79a323-ke2hn8fr","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bfab088c309e75dbb4a996957f84aa9c9eba8d57","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-79a323-ke2hn8fr.tgz","fileCount":304,"integrity":"sha512-Dl0Rp4QFJMCyqbV/9dDcO1MnFnFP6W20X/LJAhL2O6gRMLoSl9jb/867GZ3WQ1dFgAJ2DH9Sh78XjMZpbyCnHQ==","signatures":[{"sig":"MEQCIGVzJjVxjuP4uG7YNENoFgiP4QyFFT9PtX3ZgnuoZbnkAiBEYGYucXLdtLbSaGdk7GcXA16GRCq+xAk9beUunE3rzg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPidgCRA9TVsSAnZWagAADb0P/3g4V3ZacgijmHKh6BLD\nvrwi+JsoUBBGC4dZ3lCYRAqELRwpTNFzuGIgOYlrFJMSQ/upi9NG0OFdQjiX\nlgTOHIU2SZBAUHxbbHqd4gQ/IbC0bc87TRK6YGCbX1W7LWq2HcBC+8F4Qh0E\nI9qWx8LgAsc2STgeScdsuw3A/XJUSqQ6CnDEqU+s+Jd2YeBMjh1A11n+q1Kg\nzgVAGnZMRxxXcUcJltPjriAPzHyXGVi6rMlsZErot74eFzT8/WY/wKgDcplR\nv/YCyfdcW1SqJjtGMuBAvRLRSktVM7obXLRCHTUHyNCd1ZyUSAMHztWWJRkY\nzQOkaG8WjAOeL2rtvas5c9HTjd5TRBlgZ6Q1zH3ND1KjAV5HkHGFm6h1aGZD\nDsQtB3r+gfol+aG5++S6HTFQGMdHf8J3XsaC5XikHgo3126MOWBiA5H3IsVM\n269nLINoBzMctKE/qa7sBUoUT0B+3+KlBwvW65kcu9Ggl8YwH+ctwzmcTKvb\ngzvsp8p+lvYSsVTRpAAqNGXUbCC1SF/8b1relwZLjjlevVy+VEjee1QQiQQU\nDN3yP+wti6vGQe4Di7fi/p/J4aC8lycN6zl2IRe+1FJvqM+XhrCai6KzhKll\nzSWZAQ8Zx+3oxyvauapfzvlJMhNiLIPxDYaPfrmrUQAgUdbz09/CAV8mf1hS\nmyYi\r\n=15UJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~rename_preferred-control_to_custom-form","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~rename_preferred-control_to_custom-form"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-79a323-ke2hn8fr_1597908831985_0.7927364949060243","host":"s3://npm-registry-packages"}},"1.1.0-feature-aca9ca-ke4ce0im":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-aca9ca-ke4ce0im","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-aca9ca-ke4ce0im","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"686252b903a6c17bef1e9c2e8d4da9734db8aeda","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-aca9ca-ke4ce0im.tgz","fileCount":304,"integrity":"sha512-MQ8J2pPuUE0kfmvWO/I1BETT0yisI8MsB3XxputiOaiWTSiudVSqZ5bBna7Iicev5+O/HWL/djWNTiay165AZg==","signatures":[{"sig":"MEQCIC6NpjXe2uUEAtVfotVbenAMQ7v0rH3jqE/xVjpLOf5ZAiBM4emy5jqxc6lkSZdZoYWRKqvUipvm8BpBMgdEZBE/qQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP91ECRA9TVsSAnZWagAA/98P/jNJFG61zf9H8TaBlDkM\n4UGM00I+m0DfVPIz54vH8/KSt9+ipWcTamrzwcet0P8jEUcVzdr5vNLzsjdw\nA6rcwf0HYnKNwJkr9krEW9AZcuf+L0Cy3TkSdxTlB9MB9Gg88t4S1lpYFrPb\nqTT9zZhZAQI2NMYNFTObcQWcaiXOA8HyUo4IS4+M2a3AxmFTrChBuRcA4k88\n1yxUrMpt/cDVmjlJgvQV4rgIwvIGq7opznXfpsqCsa1kReCNlSPoMGYV6bFC\n8hOkdXsSnEc3aMwTN3V79pge3WI8NTP8SKrPMv2GLQMZPmj9gn6hokWtKpLl\nJrIlww2++Yyp55g4ohDiEFVtcuGSlLz4g7PajLr7Oas1hSCC9d0Q7ADsD8N4\n1xPcYKtT5N/LPWBgyOIS18sI0A7ySKXbByvLZvNEaxCHr2PeV0LAXu8rIm6K\nMfDn+7qB+UWKuH3H+JH/+MFicTD3rvOTlvrUHF2g3wocnIvdHx/kh7jrl+Yr\nrqUQE8C5sIzuZBlnBIX6uo+gDpK8HQ3WzNvBT1uTYPzYeD0ev/n/jPRcQ4jd\nEs/aUfx84n918OWEw57qoOU7zVhOpPFT8Ya5mqY2AUF6BrfBTxp36swxKyiq\n4nADJWsFDdJxO+6jkQImVuz6AC9GoKMSv28fewLS9dR8+Hryl2+UaeR4ICqQ\nWl1D\r\n=Hgg2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-aca9ca-ke4ce0im_1598020931585_0.2171487035203694","host":"s3://npm-registry-packages"}},"1.1.0-feature-1c9c47-ke86pvzq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-1c9c47-ke86pvzq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-1c9c47-ke86pvzq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a0c95bb012ad2aa315c1b0e4e4058de59c2986f0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-1c9c47-ke86pvzq.tgz","fileCount":304,"integrity":"sha512-DF6csMRAb9IezgqKdsfSq3hEm6OeleOTlKrL7fxEidEwtYYzu7CbYHhPzyZnEkTTSEtKj8Kvgcrh0aJD+B3Dcg==","signatures":[{"sig":"MEYCIQD/XKMjG4kvQ57k5AkisYwV2Lx6eqBwR8HgGHkvMhXjlgIhAMRHHkRi5wDH2Czl7F40lz6+1l1iLjMqFMYIQG8lMV+/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ2jWCRA9TVsSAnZWagAAJMAP/ij8jaG54th3EKCozYH/\n3n4o5hyy7TmTVAbCYKx8Lw+imaJOb4w37TzuKc/OT9Tj2dvruIQ9BALwKgx3\nO1nYyszNt8cziZGGgx9NFj+yIJqx1VczP4eNCcy/QYDQmrT/NOLKxDsh110I\nbarNLhMs4Kv2VejfRpLwMDRJTjc8m/DZM0Qco+J7YIfJdxF1rDTVF5lz5feb\n4Xa/bD9qeSLxT9Gw3i1Aceu8wl0sD19iMiXcKsBbb9pWQb6U04U4R2p/xqA5\nzupJ24PqifaLz3qx22NcWXYgPyXwdkxWo6K24alsBmRXOAr+orKxGLfr9zLL\nO6huCcjPYV753Ca5Bhg1lkB12AVSUSKgFPkMXmJ5TwJ1Y6JliHQ1fR18lanJ\noZTaRin8KwTrXt2TxEYtCev2ccTw/LSZLZOAUXHkMwUiRloojWouf6LF/eIC\ni9JzcwrBCc0wM5FTR7GXBoQf+kid2bgsFg0oTGe1FlJ2X/ymbOrTuMytgvTA\nlzetN2DhvP+E1bAY0bVFRPamUyU6O9XJVK6WSvkrckrSIKHeorhXrNu394hX\nWr01kPb4NIBxixfvNe+fxibUuqTBxcfZrsrk6voryoQt+YD8u48YtMGZyRj9\n2UGRKzaQ+xz3mBgmDecE+sjQulesf24yHyUB8vl/jKyitemFFIxCXVGAUWpX\ncRZz\r\n=1lxN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-alpha.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-1c9c47-ke86pvzq_1598253269602_0.44844872648079614","host":"s3://npm-registry-packages"}},"1.1.0-alpha.7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-alpha.7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-alpha.7","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"dab82c8163f3faf8b92185477935aba539be55eb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-alpha.7.tgz","fileCount":304,"integrity":"sha512-0hVSTOv03DZUrBKItQ/glAy6Uci8NDqny6hy6XJAVrYxuSMaor0hncv2Eqvg2x0Xqpv26LrXNBtSZO+5IfuSNg==","signatures":[{"sig":"MEUCIETSv1A+V5vgCB5f3oYXXp9WBM1PvoZLKI3oP9q9aIUnAiEAjTlr9YRf7B5tlE1o51u13xYaH3v0SQdTaRv+aWk45jw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ2nnCRA9TVsSAnZWagAAAyUP+gJ5MtoBmARAsj1KKcJb\npL5+Ub47O4lqeq3HXyISWTXH3AZ6t4SCEHhEQb7YA/4iBP9l62nM2TLey6pQ\nyXSTkhDDSgUSR5xXbHfHUpXw4o9F4I6FwiDCxvm/jWT1idaPqR2T6XglUNt/\nvMSiMypmc95DQTIRWJebndQYutZvA0fiF2/tJimhGwnUTQSQtsPddCu3Qf1U\nmMJ4rNknZS5/L/hkQNd84eIlmjKjxRFIeHBNbhH2OpPYeOfSSvmp8ak4QrIy\n3P7LyyhhGXdqKN+su0jOThJQWHASl1q2+yqjbD0JjcGuP9d8kgwuN/n7CizA\n7YlkKm95cX5DO4t2xC/sI78xlQ/bQhTP2tm/E9aKiud4LX2uxj1mxwpLG1Qs\nMi4NxGGgp8+Bc6acg2hnt8HIn90nQqzGAjb8IzVW3cUoQ+QAZX1T4EFonk7W\nQAwdS663z+8D5KCCNEYoS1s/KWv1VIy63UcW9oxZWjhtOneDKHIPqDwcXfQz\n8yntHgzWkqEfjQyokK1M1oaftWL/1Tl46o2QaQ0qitZaXDjEcNbilgWKldN8\nEAUYrTZet5a6gPFYN0vpRPif1ACfhWl25NLz7P7PQ1O/nmadcbmM7dea1GgB\nFJZVreMza12QY1Q4r7CWV0icLVkPhqTv0kFE//vaxakpUbSFgpk0VG4gMR/B\nLdRx\r\n=SKB+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-alpha.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-alpha.7_1598253543411_0.6078055237004945","host":"s3://npm-registry-packages"}},"1.1.0-feature-4293c8-ke8bcmm9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-4293c8-ke8bcmm9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-4293c8-ke8bcmm9","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"31bb6e7b0b73033a2dcefa7d751f97870956ae34","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-4293c8-ke8bcmm9.tgz","fileCount":304,"integrity":"sha512-jjOXj/FdBhee6FUr+DhEp3Mfok3dgphJPG0Jf40dye49uynELsHvL5KgpUsqZZm69sE+XuGwwZaz/FsD7i/PUg==","signatures":[{"sig":"MEUCIHXIwgoMGkDANeYYmXF5QS29VtypbFikXhBgrEq+NzbiAiEA0Az+vUXFIr6D9lKmov4edQixJh8Q+z5bT0U81V/F+cI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ4c/CRA9TVsSAnZWagAANv0P/Ra8E1laht+49KGj0yZ9\nDxVzftZmFp1LcZvCreqNoc/rESecIquSMxvCwC3puWGCEdo6EbtPXqN02sn7\nMMJ/CGwlPYQ8DLfpT5XqiQDq0zEyMZRIHGeQnK/pknSWPt9OMYmUW4TfIs2Y\nQOQ3HevxIh8ygdJtHf+Xk9BV0ggRA8VkLwaHsJ0KloDFM5OasF+D61p19+iS\n7jmJkzvKgu7NV49pBjBYTDaoRlupoc3F0yarawllaFxKg+7US47j2zrOgmHh\nW0cXm4kIi73O7jJZwSH2GDayqWbqf88uxC7WkKUbnzQHCfhg6z/v83yIrx9Q\nbN8ceUVA5btSYSU7bWhH3WZIjHhDqgc5t4RxFGTjx1s7sv+qivNgWzPpcW6Z\n6lUQwRZiA5fzdWDNjTL8e92NZUYGDo4h5Lcef9eQHxRYWk1kyhs3o4yWdK8b\nLu8e4dMB+4fBY5TY995+Jmb34EadWZy/oekt5Ng1RGVTi+oVzuSPezOppjCk\nPDSiH4/g2I2htQ4F9Ka8mK5lrWuOK24Tlxt0jB5nQ073Op56nCIh2QK2A5x/\nbLkXEJ/wtrK8zvE10weZOB/ggFEDrt7oP7DWVolu79jMejeml/yNKmEGwdWz\nFSk8Qva1MNk2V+yxAlUHTKc47nryWAoJ/FPu8OHgJraHqQ22tlHIrHugq3Mv\nlGL7\r\n=2V1S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-4293c8-ke8bcmm9_1598261054859_0.7127762214160243","host":"s3://npm-registry-packages"}},"1.1.0-feature-b2fc18-ke8ehsbq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-b2fc18-ke8ehsbq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-b2fc18-ke8ehsbq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"410e2ae7b91c5389efefc5de570aac40f4c9b0a1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-b2fc18-ke8ehsbq.tgz","fileCount":304,"integrity":"sha512-cBwfIa65M6i7O7dolh+/Tuttf6XS6GJ+v7w7rBAGnkJWeke6qdIfaL/QuyIT3ACglLHuuPLH98qhKUyx/A1+Jg==","signatures":[{"sig":"MEYCIQC94GNHzmFlbfvVcTwCJ2NyfzHgTtG1Ladxu+ApgPfmDwIhALCpjCSIydT/WZYuS43vDDDiu4ZdLueubvlISIUmBdU/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ5vcCRA9TVsSAnZWagAAtnoP/0q2Px1sgz6tsbRuInKB\nQZD03Db84Gg1bqUtRHcEI7nCVLqXdRS8XKJ6/jTPViJWWKUkDGOT5jfwV1z9\nQKCgQ7RfGH3I9jcYIXnEWO3Bk91UNcAt/Be6d04uNScO5V//J0ayGX5RfaRu\neoeDWf3GNWk/1UNNWjA3mx3yuTD90X/JqQf+2AAMBiTOZzrd6IQrWi0Ulva2\nlWVgo5Pjo6m1o8G00AKLJHfZ/fSw9yadn4LlicHRQHDtWtDtvmVe3FJ8owEg\nM3kJaacsW4mOXQ3i0VH4vCA1OVg28OP2rM0JlATCc5ok3LE+yfT0N50qn3eF\n79+G2eko8JuOWyUEPGAkxa1HMF1U/SX+aZwEmP0vrEvZLrNJbczuRGL4WmCG\nrkIXXi26Up7Jpr9YUePx8BG7hqOGcdt11DzkQz8iw3hmfki6rK1srEqoDOEb\na4beHsm0KdkkuRYqUuo8Qh1IYjeKVOqsWR43d6dwwrinn1QsR7Dq95zZWbQ4\n8PizI2FKEVsvTci1E/hTZWNY55CfBvcwVSce47pp5aHmP/xjrmDhwsI67mzB\nhdJiSBk5YzGgse1ORxoop/mWahfQKhdX5RZICryseynXNcUVck4KVXjfZJeu\najzUTct22BVHTH4mvpsXJTT/veC/UaAnfH5W4YGSOIRg4KjQfaxSRX77/XrF\nFnd9\r\n=RqlQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-b2fc18-ke8ehsbq_1598266332008_0.22247323856743728","host":"s3://npm-registry-packages"}},"1.1.0-alpha.8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-alpha.8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-alpha.8","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cbd28a5111aef65eb1fd5b451d7012d5f03fd93f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-alpha.8.tgz","fileCount":304,"integrity":"sha512-ySD8sr4jMqktpV46YiDCYk6oO5ivUFwHfr/91P4kft6ILBEkYbnNNclKQ/8UDpXR83Zmoyu4QlHl7Ipfe5pc/g==","signatures":[{"sig":"MEUCIFCKrbzwV2gt5nXJl2PuHKkuBA7lLP+SUhHQYridcngcAiEAusWk47Bkm4fsbZMaKynkcg0o+d2Ux1vGjeabQdlk13E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRQLVCRA9TVsSAnZWagAAN5wP/3py7dvVEc96oWge947i\ns01v3F6sx26mmJFDmYxH0WJmnsurqzB8i9Y/NO2KnwknUsUTb4a53HgEDejP\nKNPAQeI3NiByZEN7EscGqhVHSws3uBi2tVa3JgZLg0qnR93+Cv24dmU25UFv\nsanPrt3E/jfmIy9T+E2nixQnX4h3/yTYxqBLoTU93konVzEylbS8/iKI2PHU\n4kNxSG/Lv8VQ+NlC2HAwe1C35MQjSNFZUqP9eBOggXy2l9QOxJMowZJ47cKr\nIoUHreFIyOEmdY4fCMTpj16VVIwpHPzSTNBX7qgV1JhAIeBS/JsxzdkXiWlX\nozGx9DUncyI8rCMEibuOErJjCjKHRJCeaVHJl3i22bPzGRuGvvZ3qq2qrxck\nITVcjnQ9cx92tE77tqOm3YlPm30GlTJSMUaWBVZfS9Jv57NEfOqb/1iVicEn\nTLnbWjl2PvGtAccb5XhgcIxEjbXyXUm+tkaPmJZeg+emTljOuUYbUzmfdpum\nVIBj/CEoXtS/e+sbZcSBvN6gByyYARL5bL18ma5XleCzi5mHdQN41zYaUIzG\nhxiFTMO8X2cgHx8taCVl+c1wS6jokCgrNKorG/DHJa+qDz8I5wkLXwHQR9hu\nFuybIBu1IZWDjuGzvEZ7EzP4sYcjIZrRWfQOI/ylz3g7YoaNqDqeOPCT3OL6\nSn2D\r\n=SK+z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.6","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-alpha.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-alpha.8_1598358228463_0.1531242946286584","host":"s3://npm-registry-packages"}},"1.1.0-beta.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-beta.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-beta.3","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d366d71b521f332f88d4e8e8959a5a1c40fa47c3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-beta.3.tgz","fileCount":304,"integrity":"sha512-Xxl7kRYrOKMR5cZBfgHCFU/1VQC43UK9ZmQV+ofWB2PNudP9hyctWLQMSGfoN/t4bxGjKg8s+/IcxFv0QT2Tnw==","signatures":[{"sig":"MEQCIAUvIhN4Uk09OISOd68RL70xt+U0G2vhr1txDNKXEBCNAiB11Gx6JShOCi0H3jESPo9d2pbV4Q5DQc10+rTJEoSPNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRgs5CRA9TVsSAnZWagAAWEwQAIPsc2eOg9fOUtcf6qq1\ndcYw34+on/2hX+D+rgvC3C4hZPW8bjuO16kKm85GQ3zJf4gtbskEXBcA2O8H\nFWju6i88vavfRJObEf8sFKuX01t1fmV/pXdPF6y7Pg1E2PwTsUUOBaKDOBxI\nBEi+1NxjOiy+/fKPHBSbPvfhn5HcH31xRFg8cHeDoAQOK+VtvQv0uIQDvQlU\nwE4qVHIoAb1dZE2HoVja5mBLcjoEv8oRq2NZeO1weGFjqHgR8Uy7bVZ2IbuY\nJWG5lgeopGS51fY0H5nXS9+ojIGLC9bltOKuDr8+U9R2snTDsRoCu8I47SIs\n77YS7I8qH9jDIev48xscrXUeyDdgcRVx3+lCHHPmJknfz8uDOZ6NrC4d8qTk\nO1EFur0mjVXBG7m72wNSc0j39v1YqDKyPq/VVFBBK1+58mf2lSfoQUNoz+hC\ngUKq0RrG/nCEcQLq3Wt1arZhEkNP7wYUs5YywrlF/LkiFecGFlbC0FN/C0tZ\nyqJ689lDpMYK+MY075eODpr0sp4AU1h3RnHy7oSlt1dMpW75iNrtZEPZJ6Tj\n+LobbYF6fg61U5AxzN5hoB0X1ikwQ0SQqe/tVnfu1aBP4i0gxbsbsMrqWruy\n0+XDUtfe4/JLwR+c30ZsKz+MettM92O2Vu5n2ffKR+wuBJoWVp2BD90o1ZSK\nqLRi\r\n=sFa8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-beta.3_1598425912728_0.6679882898235605","host":"s3://npm-registry-packages"}},"1.1.0-alpha.9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-alpha.9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-alpha.9","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3667090b88caf1de54199a550a1a04954e023375","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-alpha.9.tgz","fileCount":304,"integrity":"sha512-al61AIu3o6AS0nQi3tCtQ1zERFUSbDzxTjBJuptspIv8vbiyB1yVPg/FKm4IZ4ddqEOLfATMVwRaWY7cuFU4Rw==","signatures":[{"sig":"MEUCIQDkOISBArXwsGMRzK5C2Ag/BW1+8PBeh+UrtZySHPEvswIgE2aLUaPlsyfWsSKyYI5ZNtbfWpS3xBhjm30lPbutXpA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRg4lCRA9TVsSAnZWagAAEScQAIYcDsLQppY21QjaqR2d\n0J0bOxIAkVmju+zeVNjiHNsV+WHwozhMaLqLH9F+RekYXisoZuHcN9siVE6D\nNBmVqK0xHSUafJEbWiKJakenyUn1H7ZBGy5SOLBUHllaTQ/az3Zllf1VMeKM\n4D2OvUYVEYjMvYLfpC5lskVyt1BU7b7NTD99cH5ysStjCHz1wMh3sVuMCCcH\nPwtUN1Cto874dUrYoC8fji/IzwnekDMiUycMIgR+cWLHU9TlU0EsxKOf1oJX\nf1nUSGJ+7UJ5V9GgMgBjJ3TwSNetxVyibvcpSDIuDk13mqmKo1RpSFKnQ+g2\nOTwHx6FUROtfBrsPqP0oQ4LroIX6x+pgpnfCaKoAvHJNgTcB1+dmMNlgv7Rf\nD3wYShyKoArUrZf7k7UzhagnC66wP6raZzGhRcXHWDb6JJavqeQyDpwxT/n9\nTRQXmQYqGK53+XvliQ7rCxyAotysKydY9LwItPUNCwAT/Cy36LIYqvq5PNhc\n0PhCKv+DbjFHXYGcJmBSr6jZDwiJR6Xy/p6FiTlI12cgdLx1Iqjqq6ahlG53\nBgScfnxId/ISmpBXKH+7bYiDiXRcDNgMFqu33FpeLn/Lqh6DqFGo4hQ/gjwt\nbD3twaTDA1pkK69Ysp50QAwIotv7NGn2nrrTj+ty0zE2Zv1TZCcDhkMA5lMz\nKzsa\r\n=TBlC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.1.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-alpha.9_1598426661284_0.5686062122341469","host":"s3://npm-registry-packages"}},"1.1.0-feature-93229e-kedzd2bo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-93229e-kedzd2bo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-93229e-kedzd2bo","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ca16d8c2790f69813dc6471a265345c0ccf77e9a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-93229e-kedzd2bo.tgz","fileCount":304,"integrity":"sha512-BGH2a4YEyJfSRH1yFEQ+7qtOPeOl7nfDh4M0IZQJZP4iMDH1peeOwoKzCpi0uB5m9HbRhtZWjAExQuN9PjrVZA==","signatures":[{"sig":"MEUCIHUK/ioE4I9nnziq7H3louUVTxnjHF2COiQ2Sjum3k2GAiEAm6yNGJY4m+t7O7R2HYpV9Mf1iLoTKFPLMm5P34cEfW4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1507850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSMHKCRA9TVsSAnZWagAAkugQAIMam7H3ewYj10aYfBA0\nOXlzsnfQ6RRaidl9WSMyN8WRwUswi7X5Msc8ZqJdAXJSr/7DMM9t6ctZntAj\n56c5TWUu9CK5J5tu5IHpx2GAyWeeGcy02d6U2q3wGmcq/R47IZ1S4u4PMYYO\nIZnnHxbExwbNEg41eGYTVBsSS9gYQoQuMsIuPllj5sZMcA1ghw/eMln5i5f1\neMR3ko25VqZ4EOyC1cBd4YcB+qzeGNRl5umLHeyhVffF6SD0qGA+Iwl23leM\nRHV8+9nGePiQapPrR3+cGDnLStckxc1WUeYCq7MLpju4/okjo2vgR90/Hc9B\nHWxdDOKQk0efyvjLr3ivJG5mvb5G5evNcWwv7v55JW5M9uNb7unLL4knM1T4\nyeVe89/+XkOe1FctmUQOlJ9hLVhjVObUx9dA148muf1PpMEd2945vR+mBt9X\nylli1EPDN+BiagOQvDZ2oO8+L0sTfOR3tzdcnXwujJgaA8HxrqXa3aSyd2cz\nMuVVkDY/M3i6fuunQ6ja135jYbEeKa4HoARnUeOsQPk1Iz3qSoRvOMIoQ35W\nGLu+ul2BIUwoucveDw1BTCUu7R+lYF7x/0ch2jeAmT5LHNo8YRxSbzBUGJD1\n2g+7B4ZCGCJyv2ueWAzNK0Zzo75VpTtIRgV7UrracVcFM0gDTVFvFPvmLYfg\nHVor\r\n=4PgP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-93229e-kedzd2bo_1598603721381_0.8190034470797949","host":"s3://npm-registry-packages"}},"1.1.0-feature-d3e579-keifnlkw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-d3e579-keifnlkw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-d3e579-keifnlkw","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1f008648c36525819e5c1e4e0fd0c389006cfa34","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-d3e579-keifnlkw.tgz","fileCount":304,"integrity":"sha512-u9+KzlolFg27dYmK0OTf0dY2y3FSlxu7NF9zxg0R+XZxJ9No5760gdm3Q7qPfIOULMnbvGy1iijVGYjBdd5pKw==","signatures":[{"sig":"MEQCIGO2psdOLWXmktSWONuBapJBomt78w5NDkPP481R5XkhAiAVg+e/w2YcutmUu+UZm9WwHKGu4Ldh9S9knPouuP7suw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1507850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTN10CRA9TVsSAnZWagAA/ckQAIZZsb/G8fXCAS5zaHaG\n2Y973aowyJ6yiuiJCUd+5lmLc/k+8uEg1m+QC+TQZ6gNKaRoKzyUK7fu3hnf\nIL+tHSkFGqIjhpSC6IUnfl9o5mwYBw2DE2/5SUtKZ8Qtbn7hs17gVOLAXpQD\nuRCRx6mgxQSEI4vrtHv6wGG3ABG7wa0OtqP/8pTbYORtgqJJx2dAy4mel4RZ\nQs99agkBIBDqPSOTsFBae419jhUyA/khWvHlACu1bcnYzdJlDdBSwMVxP9kF\ngZABmCvACGB+5TNQcddlJpm7R39bVPu/sLxeUUssiK5zjTC0kBbmPdV93GOz\n0T8AY1ojhLvW1gWhLugTuNnOrtOQI6EwpGoV77Kq/fXO3mquxfClbOIGrFFL\ngGl+ePeTtNoATQ0iIka/P5ONsl+mUdJPu7J5qljdDQaPCJnLCDxltRNhMg2k\n4Wbia0Zuw6LsWoWhEcJw4ov+N2oLyxemKU4Bv/2rnayVFBaxrbt/VExcVo01\nR8Stl8idId372S6B4fte4PZtmBCNb7XYBcySwETwNsHntxKItEm1X6tfcBGy\neaXHw/5NkC74+qvJGJAkhf2msZut+WF/pr57CKNyDbhJLC/obrm0IPMwaqAD\nOIvMJPojFl/wWY0KLDvo8J88FvxX8ETg4ue5x5GA78lOOhd4Q6g2+vtnIjVm\nq7U2\r\n=Fuuk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-d3e579-keifnlkw_1598872947642_0.17499937323933246","host":"s3://npm-registry-packages"}},"1.1.0-feature-64b06e-keijj98a":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-64b06e-keijj98a","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-64b06e-keijj98a","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ca4dd93e66dcd7becbf08781ad0e7c0d97d187b0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-64b06e-keijj98a.tgz","fileCount":304,"integrity":"sha512-UAf27CG9rxgh8nPibqCoO5M3ppG8rcoqludGttBUhwQwQpjhmKTCy/Dqdj9etAhrlqrctEvuios0dhVnJihgzg==","signatures":[{"sig":"MEUCICCXsYL2PnluMeKCrGG9s2vvRfosdpKzC0CjlbZ45t//AiEAx+YWXf2S1OpQdW26aJz3kU6rGKrdHFOgkW9ch/uWb4k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1507926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTPboCRA9TVsSAnZWagAACpYP/0SdiPqNsD12e9ueGBWx\ngYT3X69PhLGh4Cn9Qusp9yrCSeyGIux6F9XqYkH/hqKou/tEgjoazqehsIb+\nFO710gNTw0pt/HDFHQajYsVDtkcNUjTK/7UFbXYtVV53i+Bg/jZ5Xmy1ErUK\nzC8uk1Ayzmp+3M21AECn1SSuWv0CjOUcWD3BhpFqa5aH4cfkGbGjt4lZo0FL\n5JxhKZc8KcN/m8nEeB9werf8j/YAu8gMWXkaF+gf1/k9vHE7meny14gLBbGi\ny0DwUHVChTyKgpe5zt3O+0mGOgELYMPwOT48eAYbjkQPkuvrbpdp/2NolLaL\nElRPIBq5LYvPYGwbDJWqWRROnvQuF2ErHuaRO6nvZXQ6+cDwz4nFAs1vx1n4\nW/ngxa9cxY2v4mDC3J9LbtaH1aX0eMbWo9sRghqImBSZeyl4vtmNR7gMU84x\nM1mGnBQKPSORpTlIw9+OzMF3Ja2SdcB8W5yyBgUlm6i9MiLwZ12qzWhwCiRu\nYu/RYZ9WudqC4dpfFLc9h2WtucLWUMrm8KRvlyuQlkhnS7wX/t9LroEBJeGF\nrwr/cz1a/cZKLQA4oXKVgZpqfkMCJGlLUu8cWgXSJIGjxpoAQNouYbbsAwWZ\nwDs4RKaU6i9ezKh/oWewPeGOePsPjHOEb2BDmp3vIJyzucsCZGQuPM2Yxgle\na8pc\r\n=Fl+6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-64b06e-keijj98a_1598879463382_0.973790330298766","host":"s3://npm-registry-packages"}},"1.1.0-feature-a613e6-keijxcos":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-a613e6-keijxcos","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-a613e6-keijxcos","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bd2749ddf2b84695522613562f6a519e63f49718","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-a613e6-keijxcos.tgz","fileCount":304,"integrity":"sha512-uGMMQNGT2jqOueeCqJNuhl2sTJ56arE2eZ3LWnzGr+RfvAlbtXNbzSUftl1YHLEBTYMhxsYPe1MpRCnj4uMJ/w==","signatures":[{"sig":"MEUCICffWLTcLkAFVvA8mykihF0eCyS7emiT/H5x+hA39jzGAiEAwfd7v7BYUoWu2WVUuiRjeDQ7Ggpqp3q8OEe6AQ8mz4M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1507930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTPl3CRA9TVsSAnZWagAATY4P/36x8ASl+FPluWtOAvbP\nrnryoUHwGsIvAZ99E9MwdOI0Al4sluDA0u/yhDeUBO9zxMbDTAbD1Y3UUPTn\nconrPNvjEBqmbMJ2gSF/ugbmQX98YWa0jjMbHbuTQqN9qUbT2U5gxH1tZX1E\nLvqY6oBb49HfC3Okw470J8A6pxLDYgTxVbg8/WQZJTKCLnOd8JT/INuKFZBU\n87fHKwOz5tX9AzjBvDjH5cQPe+Wyn7RUkOADgrCbLFQqsumLPTn4TKs18R52\nBA0/SJNtTj2XSwykI3lNtSsRevDuc2lxovCIuhpuTJaGa1tHHBl9FNXIee0m\nCDWdjAFz9HW2HAuZb1/VyHngb1f3YwlSxJZkt0Th00+J12blKc1O/6N0ne7I\nJNC69a+KJWX1F18Q0Sfx8Rw3W7cLkQq76nA9kQHYFTQv2x/kW4ZhS3ijcdb/\n7rM5QgAub/fmieCCnrlzbUJJuhJuX+5E2g8AMgPCckNMZp1xYbGWSN6Xc+9v\noDzY7aInMM4rSA6vJEsKzgdGou+R4l+c5mol6LbM3VqT4dLfZf6+mUSt6UPu\nbZ9iyLjZFwWOs/CiA3HXuU1nSm+xhaWMgJzsQefWIAdkSN8tDG48AV60tkDk\nT33QRu3koEVvknG7daioiB74uXNQ62hg225DjUzjMoY4OrpwQHWnWFRyZL1A\nERMw\r\n=98F0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-a613e6-keijxcos_1598880118662_0.6347392695556344","host":"s3://npm-registry-packages"}},"1.1.0-feature-f96289-kejo3qb9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-f96289-kejo3qb9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-f96289-kejo3qb9","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"894978a4339dc5d6e46277f2bb8f507cb12d52b4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-f96289-kejo3qb9.tgz","fileCount":304,"integrity":"sha512-qGA2ZSJu/up2M0bb8ZBHfLh9ccvuQL5RkiC4XyGy7RGmaclVhp9isUkQNHuP9xX9QdMCsBnZ9oHDAcNvLKqZXA==","signatures":[{"sig":"MEUCIQCCzttZB7xlM4VOvI8p5oZSvJ9C06w/Ho2PGv3F2fD1UAIgbovJOod32mgw3FMRZ3M9FNq9xLAEJyAdCAuwhyQ8RII=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1508861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTgESCRA9TVsSAnZWagAAlsMP/jhAu6qY7MqwED1Ju3/9\ne/j9GaErnCMkxEvoHpt7ec+J62p46ElPmI9/KjUTEQyIH7qRirKb6PUlrAGr\nv4GAkoDEZjkIOLgvZKWTGx/ejfUAw3gDVzC1lWPFsOaOtgOmPIAlTxRtBjTm\nB9kNbynhjMmIMkccGwc7rjdCMBxw8rCS/w7MJZE+TNYIlxqhQCui3QNFuIi6\nqd99Jjas8fCUHFJCyypMaH1Da8NzQpyTWXethZIiY3QxWSmzjOQLiQZ9yaCS\nnhVqoTXr5piqIhYCHzXirTzHcX+QIXFPl3qVn+0aHuulAqeoGViIMOvh6JVT\nF2wN2sRXRAmHsYozaqz1qrdSUmWFtHpJfV2F1uxONyPe56eCYI6f911nUu8U\nrDh15j0FVrYwQ24v6ag8a3seW42ppzgrOCafVbTgSq496/esX4G7TCUF7Pzc\n1riidsB7cCI+p1G0x6SpQXyxtO4kfThJ7B3VO9f5hJpE8GYgPQLmeuc5+w0U\na2yxluz7cRrmHrqMTLoJ4S4rUYK9x2dQGyyvG8EMJmVNaQsV6+Mqw2urSnq5\nvjm72VLIYVFff/03DG14inwBWT4zNko7s7BfHu1OmoJQiRatmIxPKi5lnbYd\n/Ae8/Zc7806MFy2OYM7l2hGGE4YYw5EiOHYarVLSsb/e7w7hxLxulNjo2qnn\nQGvK\r\n=5txs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-f96289-kejo3qb9_1598947601377_0.9068796738965463","host":"s3://npm-registry-packages"}},"1.1.0-feature-de78db-kel3k77j":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-de78db-kel3k77j","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-de78db-kel3k77j","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"11db88f0078eeff6dbcbe0a1c351e37bccb3210d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-de78db-kel3k77j.tgz","fileCount":304,"integrity":"sha512-m2hDXPG680Pa7VyIOKGfyxGSu4WLx8nRhHksuHh1htfAgk3rVfsDKKniF2akmII34CmfgNa1pXe56aV14QbpHQ==","signatures":[{"sig":"MEQCIAz5XKJGhxzpiZdaJOE178aingdONr8WvuroHhQX+fYqAiATr+KTbbNR3fFaIo2AKwYr9ChGDU119MPXoxAmX2dJxw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1508861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT1KtCRA9TVsSAnZWagAAaokP/ic8dX6wC9lzkqeN6/qK\nxbWKZW5rWVyv2ASrRPJEzTA53IYNZp5hlqKCegnD1YhWiGajZ+hBP+3nPQCL\nDINp6rLJ9Mny7YdwmNpV4Chj/PjO8rkuqZAs5cK8otEvq6XTjrk+DNYwUDbn\n8p4sFmhtnP5CWAVIUDla4KK5QqVXfWiSDpQk3SJ7EUjRL2X2LgYOn1Yf8Cvq\niqvZvEiGv87TkDffY1d3jj0+hdXYB9TFErzXzFSAT4/bUjky2zYXifTx0GNY\n+ujIrSYKGR9gYe1MesOlwV0eLlCv9ZJCsjcVTay9qqXgsjVncyTBMgRLvvug\nDIXDCSsS04XAqdCeYWKC4xj4h3AAlmi/bZvo2b9m6xs2QmB340jgGEbN+MMc\nAB8Z5kJNNpihCee7ANPRT6X43LWs6Aj3lB7wQKHHdY8pwdO9c3YTAsAsVwfM\n7GA5ENQu5y78MyMUgdZkvUL216WjLMv7c8txN5upTor/g6KnQkx2rAd5DzEc\nA1QMygZjSDRnhtLA/0lcuehOMnKgIAtIizq1kVIoe0KphQJFb/qzM1mDVx/K\nS+cxQMtSeBXMtmgL6RoQ6v9zWUmSwX0chLiMRlElG281nTHk0pJxhA55HGhd\n9C9y/81cn+PFAylXSIfTSiNx7ndHsn492Fr+IQcs35IV/PBoTjh9Zk/GCWUm\n6qtF\r\n=Tc8R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.1.0-alpha.5","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-de78db-kel3k77j_1599034028989_0.6095239921586753","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7a1e06a3aee35eec04d9acaa4b9aa458acc3cf82","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0.tgz","fileCount":304,"integrity":"sha512-L72sx4wgH9sm4Xu9oSDz26JEx/7fnrIbLj8FEcY0+kgfwKVNPhvx+i9XZ/wWp/51XmP0y5C9mk65zc0et2aDOQ==","signatures":[{"sig":"MEYCIQDkmyzyU/QzWlu18fMsdaqCvkd1DoQqSB65BkRmde8r0AIhANqtf09KZelolgQ192l7HEUeQqCSloIBgsW9chx5pSlQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT1f3CRA9TVsSAnZWagAA/NgP/i7tGbxgUwXo7lbXMRfI\nJ36nzybBs5UJ5fDkuqSYde+vPE2xbsjjw8PjPROemUNGub5mbSj1dzusHNoW\n3zQDKEG/VQylj63pmP/kb+Kg7ud0lc120EgT7Vfjj319erdxmV1SxAwHddsF\nh0uI3ICILVaygF+26WGYZ9DibRl9YFVbxaKk8uxjrCy/MKd1NDEIfMTkyFIp\naenGDV0teQ2aEsV+mmYoQjSderEg4baFhSo2jsMwBvm513g5ter0DDwcZcbM\nS+6hKIHwn0/gApfved2zKSwJ94DsBaDVb4K/d5tPVD8v+Hy8E3pSJFtk58rU\nYCuQDVJNZVNTqoaGajspKPZInFl+4ZM5h6lYiH2KmotEZVWNGSnH6R5W3PPV\no7lNni/98EWZ3uGT3qAUFAimuQ292VMFHFXZW21hmhC1W6RsBg+Ft6i7WLZC\ns4p4VrY7c0P7pxLCWjmrUZFsRsfWeCi/hDcF3wlOXjQA/0xtttKXpZsBL6LC\n9STVOlVgRAis4iStAKGcsh1pI6jaC1ozjZDI+JpUzl49B/+uY+s47xgOOdZ7\nErxQ530E265OfXc8xcuBdvocqGtmwXfdlgaeAguSBLeEMVY3mexTWJYbk1Zs\n5Hma61FVghgWG3fnUhkQUIgUFmsAkdilX34GLY+7W4K1OraQmXgRlrPGnC3D\nyaeH\r\n=XX2j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0_1599035382505_0.8920487789925116","host":"s3://npm-registry-packages"}},"1.1.0-feature-67e027-kel6erea":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-67e027-kel6erea","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-67e027-kel6erea","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bf128c439e98802a4f3a12fb49c25fc7d6860358","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-67e027-kel6erea.tgz","fileCount":304,"integrity":"sha512-7dt1WI5iKw34lHXTmPV6bf8z0Yp5jiqeYBygJhrfEXEFFUt0ZfHwiktIUCCnZ6pKx2RdWie9bjhogRVC7dQ8AA==","signatures":[{"sig":"MEUCIC1n/iu1rnFM7XJ/h28h3jCLS+ShONz6aP7N2dMIkUfiAiEA/n0H/wy4Ng9hYW+avMt4uAe7mtB6ls7vQHoJ0V/WXyQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1508854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT2VhCRA9TVsSAnZWagAAetQP/RqP/5sRV2Ga6w/2jany\njVdjRgQRhhZm5UC4HD0z75JDxN/e9IOd6sExyjrO/bkF4CF6IqKLdOrho+ej\nWpGELdHFGDFnWo6TNnIqalQUfzeOLEa4xrWBEPSkeFnUmnUdCAwkzUEnT5hp\n0WXu/JriPZAIpdCuJPUSDWibWiInBlLVSikxuAHtLOAFG5MAB0nENgzNSvJD\nGaGeGqRuH6CGOz28guMnAqyNUZOgJ9wQHXa2NfkWZ8q2EzWKHMFNX4rUUu4p\nEtCDD14actzrK2bKy+etrNtnZ8wvCut8kwP1ZepGuqsNmjgoNL6O1nS2V4dg\noHZOKBuAEU/hWsrquqx+IkZVA3KLla4V3+Maw6PLiMeHQgsjhiBXmqxiDX+e\nm0uPxODs7v8WDJHPtI4KNN1oeKf09iyGPFo8ZiGVTsDbeMpUAKNk+/nMQbyP\nU4W+Loq8J9gCC6KBjkc0zOpL1PKZFkRb5rdjPVl7TjmUqKbQAO6J+ewG+eH/\n2bo5UkExVfNqrFURXepiJB23X0AVSJ/yHeiN6UOfZIU1gblm9TwpZJapI1dZ\nezF2qwKIADbAEROmoRp7Hglb1UBzwTP2GNPD76/hu2HFT34iVATqJlHK3kvC\nqpQJpipz5ZAUaaN+gRoLJJmYbB15spvOFCCpgg7aNNCXTnFw9vvfPydwPVQ3\n+a2a\r\n=mbL2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-67e027-kel6erea_1599038817127_0.9440592721702377","host":"s3://npm-registry-packages"}},"1.1.0-feature-2371f6-kes6tikp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-2371f6-kes6tikp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-2371f6-kes6tikp","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"235689c9ac5086f0f275cb0727e68321facb0320","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-2371f6-kes6tikp.tgz","fileCount":304,"integrity":"sha512-qgFs6Fn0anQ7WMwC+4cICDHHKFGovhhJmweZ32VSd6GvzpIEdwGcmX7FH8Rwrwnf0RMG7EqMP4N9BQszkrdeCA==","signatures":[{"sig":"MEYCIQCwHa+UjnlFLjNN8mV/eZggcH8jaMNLPr3jHrCih8EYHQIhANMbHuykMb5WQoprbU9Uq7C3e1z0pyc7dMkeUiKTXnNJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVd1vCRA9TVsSAnZWagAAL7UP/AzTkaDdc/sP/ZJeQUmF\nMJYwHk7zyfRXQRG33yBBPmWC+fmvwYQuk087QBuTzBIr3Qpm8fn6DU4HEBin\n6RRQYHFscZ72bNyyv4pOhjli81igvDBS+9V2LmWMp8yqIVd0brUdUu+llMZa\njCtcEJBxpYsoouD/iPqSpFly+SDaiBMu5m+uS1/rjdkTbSgzXyL2D3ekuqDn\n7vXPzMcextw9W8l+GLXMuxKk2sFtKkKXK/0tyZ7HeJefEX4AxQtSHW8yd1w0\nvevqRmL7tDXdRm1TmzAYBhsu48yYgTCryiLBy59VlRPmGs6x5s6Bf7E63Lz/\n3fdNiin9EzBrtG6tkLxTXyMTeuXPh3lBvZR3Aawe8z6BBpArn8GWayMoiVO8\nb6ZXSrVw2vawKYNJ6NJ5XKiQnbrnLRnA0MA+rUu9vLWsDIx5jJONWs/gfWcX\nYpT8dNU3bQhNkwPuFRHxSQxWqJYxnwwvxgeHd8/s82/c0BpS25I/stlVhrkW\n5jEH0aT1LK5ttMvaghr5ki8mtrhyYCFRpv/KIvHQj+HRmUns7GDzt8/XzE+q\n/KERXdqYthoMIPqTJj96Kshs2l6AR/uI6k0Bvlb5VaEAAVcoW4UYBD8Hxr6l\nizASVkySFjyviFBx8bvwPMhp9mRTTpQMQib/dSx/GdnR2TkbZVtYos7XUB/X\nEeQO\r\n=oQdZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-2371f6-kes6tikp_1599462767263_0.7630911181556246","host":"s3://npm-registry-packages"}},"1.1.0-feature-77de2b-kes6uxwd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-77de2b-kes6uxwd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-77de2b-kes6uxwd","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3f2a2a8484fc746322558c0a2cabd5e67817cf39","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-77de2b-kes6uxwd.tgz","fileCount":304,"integrity":"sha512-kEkc/R6bmrGUXA8WjRJY6xA2BaYoAjCnaZAKBmSA4lVzO7UGyt8wbyRIKkq1dqO8lxWZXOMLCEmjDiX27DrKhA==","signatures":[{"sig":"MEUCIQC8MtOqvbCXo5RfFkqj9t44GXpYtSHE/EUW1Skn5qkydwIgL3ezJF5NXMqEQcERNF9tM+M9Lis+Lpj33XO6JIVeg3s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVd2zCRA9TVsSAnZWagAA2sMP/jb+VFzqYVMzIUCmY0AT\nlGxLh/k2/O85F4eFi8fsKaM6yOH8zMkrtn06Z1SvSSFvpYmtbVyMtQcqaqcu\nwgUMbX8LXQViE67if3VjgdKtsudV2Y1B05lp4/gE0rMCZj39/tmZ403R9jDU\nbevOcaRXRvM0MHvM+khWmN0CS8AE3Z0M2rkl1mar1pPq1dyhETRDwOIOLpAI\nPPoOBsdn8knXYbp4ojMdrQllUU8huy8a6Ndv4swwO00upm3Z+aYFHT3mcWAA\n9pQkRwBxVBJODjl9NV8F6ihOfJKBhMoRRMlOLFoKeOVLDwxRVApAlLUqE//f\nDLaO2hm5va1Hzw0vlbwQJ8RuTWEsDH8203YFd5BXCztoBIC56JB38s5m73+O\nK8z2o6tUhmrymSAVGSEumx++fePoRkVGqcwmUuDqZJfV+wFmv9D79E3s+7Zh\ntsLMz/z5xwa7yYsONKA2llDZTpPVDC84BdYl3k8BUgaFbRS6cGnQYp26gFVV\nMvzLWCRi0CYin5mCmwSfkrhd0FfF/94wuUMhdxf3i3LsFN8vCXtypESMo6wP\nKN8LIxIdE/dduY970UXXvGvPlsjGOqW+AoNozQGs4PcqboWYiuTeukZbbY6/\nD7+xTFqpqEHV+TgUT5Oq4t1Q4cKQuXDHZaaHvsQtwPPo0RH8SKOtp51r6TjU\n4dUv\r\n=xBpX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-77de2b-kes6uxwd_1599462835110_0.024389927794994604","host":"s3://npm-registry-packages"}},"1.1.0-feature-7917b4-kes9ojgq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-7917b4-kes9ojgq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-7917b4-kes9ojgq","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"85efc245324622656a91c9aebb363a07318bada7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-7917b4-kes9ojgq.tgz","fileCount":304,"integrity":"sha512-INLtEhATbcjTtlNZR58KFOn2vtm8kX0TCy53iouuv8IDp6h4lhrr1/cAZFs7aHtcKBp3jkNZkB7VhmWk0TGwVw==","signatures":[{"sig":"MEUCIGxf7lI9/uQs7FGkqJsbgzIx1vpNHoE9KXEVNV0538JaAiEAzsgbdfL5IxkmQ8mQY2RiptWIqT1rvwXXoUs7CdBM26U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVfAyCRA9TVsSAnZWagAAMnEP/1Tw6Q0nIZcdxEHex8KC\nqPjWV8dv/jTQ3eI3Kk5ZKZdsPnh3J3NZgboZgbLxnrC0HlzEeRicuNxpiJMv\nswomVAPI09bP2YbBi6SkXzpH2mwCSZDmlbR4nmG9okrrkiplrzoBee63ItXL\nxya/d/6sXmvwbuoIXtGN4OlH/fcZRc+Zzf0z43BJxQLSjTHBXiKfKkAnLpli\n6grR1IZ+eTztexCUNWqEhJOs+WpjWAYyJqvt99S9xUscD8IiD7XVZqAGGfEA\nFh/u9XXABquwzcKeoc7j8ZJZD+QRp6XMEHtMT9qQFPAHDr89i92scNTuvXG3\nZSofDW/cFu0Z/Qg6XJMY1yEKV79JDuE2QkOTm7H17FOZWgaR0WMEUtuWUU0T\ni1nVc34+r+wjjTVgY5KmERAbIJKn29+mxGt5XW2AT4dyxvhCo3XPgVJbMvR7\n8IwOm5Y+Dxl4dAL0bfSVdi+7cqF2Ul4Hy35WqxQoK+NTHukTeXVTpB6Qw2hU\nf3Gx4jplrjgZzfld6Khj4TdCxA3Mc0zuMWnJhASwlrnwSrhmvKiV1ky0ZrBK\nu7HxS9zufrKiRpVTsNXXVdN3mbRHkApGn6WUZFg/Wg5X1IuPoz/MJniqqDNC\nXNSQAv6+DDXhL1G3EJ/QZpXq4SVLo3/ZcQbnVc5X3SaZ3EG9q1SHBoabg8ir\ngjb8\r\n=TlQd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-7917b4-kes9ojgq_1599467569663_0.5901558197103725","host":"s3://npm-registry-packages"}},"1.2.0-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.1","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"432e36b10c27923ef46ad1f0256c11656b2115ce","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.1.tgz","fileCount":304,"integrity":"sha512-c1e/0jkiKk2JRBBpjPaY50mdqNYeu3tqsvQWymEU+49eEQGL4xeKiXXNlF0i5ZMkv+Wy2D0FMkOA9v82ABpPBA==","signatures":[{"sig":"MEYCIQD9M8OelPcdySQ+wZ/Z6WFNlPauyK1ZzyvioeWwFcDNvAIhAO355o9YNfu2hLChkl1xKSqIejTYYHCsH1HW+m/fmXeW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVfCWCRA9TVsSAnZWagAAijUQAKLHxtLiYWYTL+UsIYL9\nFRmCkL7ftI5FYAOh7zxzyvO3m/7OetagPdcRfufS1eVfCkMTdB5Y76H47/07\nhB9Bm75ojSJwzLMGX39c9BueR7R695ShTqRtdR+18KUVtG2GYDzm5Xk2zFo6\n0PJZ3oylg9cb2Pjt4DY6mDn1Q2sUSBhvlfU1mUfIQSyTze6NAfE4A45HhakJ\n+Aqd1VseHe1kij5BZvHwhDf4P+98bcDjXds3G0JCBosdFKxe0vQdtzKuwFbj\nDB22l/6xwwAslNxMcgf2SBCtVp/AMZ//vA5lghZE6Er5YOi41ItR0qA/kYzX\nNSumyEsyQn4l/eWZeywYYEQH7UBmMg70o6Sko+s7pQX49oHOI7RFzFrbmUh2\nIhKPpYb+pcNJU7sRc6v6L8nvKzOKwToOO2SmMI8bqUbnc0+YXZabai+uX5/8\n49ZTmF5fD+Lnr9/j1AQ1BPci9bvQxfCB5Zq/rUIZ/AJKAVhlQoZaad6t1HCf\nzJZ4zxxDyNV3AThQ6z2HE2Dq5B9R7IcG1FNvK9AiyeqQvLdYNpRdMci9TKoH\nnL9IzNei65Q9X5Cq2mRBLuC9Vpvaq/2xvLwYRNk/TLrbedkuyzFBEoyz0zuu\nSYTUBphdeu5aR7MMWwjkV/GR35kpJDWQnKnZys6JjczQa5Voc12JGrz6LYYf\nwjRE\r\n=UJ0w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.1_1599467669940_0.11122013075457438","host":"s3://npm-registry-packages"}},"1.1.0-feature-d0791f-kescaswv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-d0791f-kescaswv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-d0791f-kescaswv","maintainers":[{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1931c73211c0649e1081ea03a019145207e6f951","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-d0791f-kescaswv.tgz","fileCount":304,"integrity":"sha512-/MxotkUsnsSAC/nGLyoOXEAi5YGBRnQ0MzixALEBhz2Xc31WFE+fvJVqMOkaY4CIWwZy5/YbAZSIrRlGUsyoEw==","signatures":[{"sig":"MEYCIQCXMVJ2DbBt4OC+o7+0w1ho+QpyRYRAYALDWfELQ3UgBwIhAIuwJx254r5EKe+n3/ZZXLh0uRR86rsHTiUFcCDzUQkZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501533,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVgFlCRA9TVsSAnZWagAA+gAQAKLrwdQy+Pirj2P5A3L7\nl5kc5V6zWSx6SGxUKh93H8LAAvAapJtGRnviJGJXeYdzMWQGX+rrmL2QlP3z\nFjAf9yOopDI5uF+Gx/ykL9SLjLz5tI3swsbH00qX1ed0sWoaA75b5K9vrL1x\nHbabyiEg6Wj+dlgRmk7z0pj0RhgchM8H44DtcODz2Z5YFXxKIwp+WOuodU89\no1sc5zxKvlrSQoSahN8Rwp/rXgfL+hTb569q4SWGqteXNL5qcD163HTrDMKp\nxyT4TrlUgodDGiDLAzOGdjdYmvm9qdNIODGo6CS7DlYgg0ZK4OepdA9cPqv2\nRybML2BHsk/WxPwBsaB6y9tRFmliiksVfd8wvjRn0iTPzKH4TPMYvsAb8ADR\nxTrhVCNM/V8WClt0+JF5fiYjejgHM/0PKeSF/NzATcaY80bIUmgV59ChnGc8\n6dHJnoS+x0BBAK3+X5B/MvgFaaDxR7T9kbupuWThuQQp8bbvcUYBZRMKlzqW\nZliJJ6GVOkKXZZSCafyb4u7WGU9og42aM/rDrZKQolVhsHwsv9liS1GmT38P\nLWwIA48rG2ycejoRA1OL+t3CQUe8+Iajl9HK1n4blnH1+lCcYMmZBJ5zezrY\nloIQKz6/UZlntxfzXpLzZwRl3KIV9HhAUJkGnEiDHnq0KTUAQC9SIFWYBamI\nv1tN\r\n=ar22\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-d0791f-kescaswv_1599471972550_0.07600560871216189","host":"s3://npm-registry-packages"}},"1.1.0-feature-5775c0-ketl0do8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-5775c0-ketl0do8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-5775c0-ketl0do8","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8631c82e4f56ce971161b5ebd5830327fa594b0f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-5775c0-ketl0do8.tgz","fileCount":304,"integrity":"sha512-l0SHXbJY8DCFDvME/FB8T3JZ+NCLq8HQu0GupzEJPC8pP1SEf+830LknDqb45v1vEZjaOwv79aaT9sm93onCVw==","signatures":[{"sig":"MEQCIHMEFAqKmJ1eLyu+WRoRoEETtBPP7xM61Rj8SkDW+s7QAiBU2JEzrkQUAzLStgFYm7SwYZD9tpjrU9zjHjhANShE2Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVya/CRA9TVsSAnZWagAAQowP/3ezrwJElSoF25ILrOaL\n6kJZTcX/eZXl/aW5xZAjLek1GbG2DgPfnurdLiRot/mk3g7bGxqTxX5P1++E\nrtAuiVZ3aZdaE5zlDZoLTXsbvjkMhPrOZSB95YskdLxm+XO17MFAVASGlKiH\nXqqc/eFOaRh4r5QT2TocQVgM2sGeyzwbqAF03JEcB8x8o9LT9mPGTf0M1dnZ\nBUaHZ85+GhD5NT3b6BNJWDf63kxm3/ZnQSZoiaAMWcd4IkN4Sxj36fuJYjbe\nM0bzyX1RjEFtE6glbm94HcGJ4m+u6ronFA0CMfV/lzNoP7/XILHXrTMHV+7W\nd+iS3gJLqHzgxmTKIzRED/U1NCIBl9ko6y+kqQqkfFkLOTl7I+8sP9ZEzT4f\nMtV0tQVXtpetpksCWIvp8WvdWts4/62I0nr/5Tfy6TaHco7tuNt66UHDyunb\niV6tQZSr5bneNKad8aJZEC5343WrmnnX2z6tvH+9L+jL1LzrwdYaIJHzWLGx\nD3ilTtAhbB7XUE9+fbDYuKB5q97NJrK+c3OQb4TIH8+vcR25RJeaFekQqJDr\nVvEYizAvCB8ggQ+bfu2TwcZ2PUvidn33HNI/7CeKTEAdRrkzXVybZIMtJOjC\ncDephImwQS9GotTh/ZdGbyDu/+Jrphz3pDzb/A8oMmzimX1a5+Iyn972ekZZ\nzEko\r\n=Lv+V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-5775c0-ketl0do8_1599547070720_0.9398282604449666","host":"s3://npm-registry-packages"}},"1.1.0-feature-8b8bbf-ketl1prw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.1.0-feature-8b8bbf-ketl1prw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.1.0-feature-8b8bbf-ketl1prw","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"81e8d66217f2a7aed7a26214db4b938e4d482a24","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.1.0-feature-8b8bbf-ketl1prw.tgz","fileCount":304,"integrity":"sha512-DRqoxmpjB/wPNCNaDrkytwbUPrQYA1xqQp9qmW+oEBkPSLg8m7xvaO+arSZnj4FIYdE5ponC5bhTxbH3Ek1m0A==","signatures":[{"sig":"MEUCIEqI0DtlW0D+FXCpAKPBOs/+iaiSSsONB0v5xWEcawXhAiEA7+Rv2WbbzRo2pTRfA/pUZ7qb5hyeFonEetWD3We1rpY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVyb6CRA9TVsSAnZWagAAkXwP/iRZ4hmSBa5WHN39oxPz\n5xe/ifwz/GW0LuNnSgqvsQ2ClnNRLxJIZO1ZyX79qdGfJiUBrJSwIXJKcajU\no9QHoeyxrmv6Kz0Z+GxICt/6kQ91EoVvatRoqNRvkFVOiL/oIBRbzB4r3B7Q\nrbX1z4/ILr0HzdE1YOM9mg024ZUnn0teEeXkWd/lZYunBXVhs1zitsAhoyTU\noKoX7toSAqIHDkKEkePGQVTcL7HmU769kDh2Wj9wiB8ymgrxJrXPzSd5KpZp\n8dGqeGxxcWutxj31XRT5N2v/Vo4P1tTFPRa8VAfQBTP87cS5inODD7ZHp9Zt\nDjgzv9efAamZGT5k79lJsYebYQxKjO2X+OTout+ASFJTXI+pesi79TQ2NYoL\narIvdcDCuG9TIPUeeC2r8U9E5oxan5HzjtaOij3j8BbiTrZbO5/ZIx0RJGk9\niKSyB+7M2iEJ7Qz63yPOakcu0yWHm/qll8E9tNPvyBVhqZpiq7lpKfVsYwuI\n5VA6mwLiqQHfGaPqZ/HAhPJ8BxM6MEK0sMiFIrCkvfw5sadrrS7esKka635p\npQPAeI8dlx7ITuxr92dP2tlgQK2sltAStNAjDaxrSHVu6+xp5rkXVWiRwKVY\nDAiGv+lTzAp64OjFKxMCEj23fZBYeboIbPCx4VtfhgTPeAwZ3SlEJTU1+1js\nRzMC\r\n=xnpY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.1.0-feature-8b8bbf-ketl1prw_1599547129589_0.9356309080754641","host":"s3://npm-registry-packages"}},"1.2.0-feature-2e1c42-kets064k":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-2e1c42-kets064k","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-2e1c42-kets064k","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3aab4fe72cd4c0fee0970412f01c84c37b7f2d41","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-2e1c42-kets064k.tgz","fileCount":304,"integrity":"sha512-2gaWgthR9CVAhq9na3B7xgtXLySX6wzYO2jiZ3eK7jM+K/KDFbkzpSYNCEaeqD/XPYaRRQt7E3tya4OgmiPU8g==","signatures":[{"sig":"MEUCIDbau45Phbbmj3NesczsMFI81wRbRMThkRlmJp/8hV1mAiEA8rwv1N+TsKnxUGK7u6dylPJzpQoYJwqofwR51sgKZ9U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1500659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV1SlCRA9TVsSAnZWagAA1D0P/RQUYuMgWCsebaifXNtz\nXg4FS1ESv3wWwjsFz1xL9esPVZTYradFLzkyBUMiH+PwYuZ5/mk/NK2jyB9H\na4hcy8fGHZp0kmlPv5tkM+jvHIAAEDT2PNXf+2cyxmGLdhVo9epKQH7AxlNv\n5i4VHRsB1PRWTf5RDf+VbMpMBIwvboomPgPnJL+Kiah57zbeA3ebfT7nhebn\nENZCBGf1X2yx1y04QA7ueJDat9Z138T5VwknjLLTWbZu3SNtyz45JwYs+Qym\nKEIEvKFFlRPlfk5ov6iOF5fBgO0Fkl90lg9ZslaScymUuWfqpDePKI3pt6M9\nZZdepoZM76c5BZwTt1/Y7F66JoU3rnKvY71Ea4XK0XBoeGr+P4S2/NVYy2bD\n1XU94hwkOghG7LwDpkpmVHb+2dtRveC5Lae00d0/LOdmJWv6WAHeqzRhLSA3\nErcfoiwI/gvD7WG/URYEVePhrMg1GYLRPmOqlXUu4ZR742afp5FyC31nLHWw\nww+HybIFayQIrvmL3U3svYrCPdhM7J49phPCdXeJXwRbJOAl2Ct8TLTCotXh\ntdG+ADMF4BQTaote0SQiqXp2fqipIg/miRfe1ONo2WfR1QYqiKv8fSi0w2eN\nE4rqJcUrNhoWD0yNls5ODgC+V8reP/WRuXKM7uaKUvdsUYPRqgLFktpaiNsd\naXeM\r\n=DNRA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~add_lock_functionality_for_user-tasks"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-2e1c42-kets064k_1599558820830_0.23933280718151506","host":"s3://npm-registry-packages"}},"1.2.0-feature-6f4a42-ketyxeq8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-6f4a42-ketyxeq8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-6f4a42-ketyxeq8","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"26d856cdc511d96411146ee913b427b86193cb00","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-6f4a42-ketyxeq8.tgz","fileCount":304,"integrity":"sha512-dESyeT6WJ5HGa0a3O5xeYlTmmpp97qlrTUt/dPOEA68I2pHYEW60hZeI3vo/G+zyTffrA12qM0liRRuxeOLQLg==","signatures":[{"sig":"MEUCIGbhiaGR7quy5qa+z1dFO18FtOUfx766pzzt6Yjz6s5sAiEAl/y3HJqc96K1Qcbj6RPgrSc0iafMhuE6fem1+3rb6iw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1500627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV4IJCRA9TVsSAnZWagAAM/8P/2xNzlAH75TI66mmPMb6\ngSCGsmFjpLzjRP5ZLr9KN+uvpyz8FbEIgFPv5IJIJ7Kb4w/m/l025ruJ3Ot6\n6Nym5618+PuWMvr3zNFJtflPrz1LfH7/2+e4yYCdEB9njNCbwm0gO37TN0+2\nvfF1Btav4ccfiWYz+HM3wGDm0vPyzZtmTNHi4vjva1LIaTdxgH12IQOM/Md0\n9iQL6Ir+mwSjLyAHb7Pio/Y3/ut6i4GQB4D2UKtBNO6m8EZF6MNnDFd1zkZs\nFymDRLJkqAn4kZzgH4IG+O9BZ4LB6Bku2sbwS8Asgo+LKjkJNkPlJxlOaANT\nQiqIMx+2s2bja1Pk1LIIFgt0CgH0DZcK859D6yRvGPnm2v6wWCphqK11vwJa\nzJBoZBv4bFcMKXIXyj80q3NXzUiteC/sj9lAYKUh3o4QFBr/N29rNOXitnk5\npeY+35YUU7Dr6e/oThOzFNVnXD0hHsd6gsrKCuKVsYN9jVjOrEPkDA29XF7m\nH2/oNY2cq6TGQGD8iEEQX0peABCF02V/WWtrwcjpU6AnmotcAWHhJi769Jm4\n3NXRfT0wuuPl5eHxV8sOWYbN9Lxc2BccJYfVdpzWEqBzSsoQxeDBDabBICiM\n+G4Va7tQonSvRiX68ZT1l3c918H6S26wjDHoWurhJ8dL3DkJzJkk1w/pYJ5V\nNgAV\r\n=iXX7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-6f4a42-ketyxeq8_1599570441315_0.7751058188165671","host":"s3://npm-registry-packages"}},"1.2.0-alpha.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.2","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8f6101bf9e1aff9d656d7a0ea299172e465ef875","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.2.tgz","fileCount":304,"integrity":"sha512-p5s8/EOJd+M7lsY6uCfxDE5AJx6cjpDgZFcmMT5UaUPjnHEHYCeIPPYbamYNQac/4yccS/gkBMzRwA3c2DYasg==","signatures":[{"sig":"MEYCIQCQPaT78YAopUxoA5f4I/ILLGyu24aA15eWbs5w0YJHUQIhAIeR++tl79zlLIveSjf1lbDAJIp1c2gmFSfCdGjzYDfx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1500611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV4KuCRA9TVsSAnZWagAAFD0P/RMHZSWf7FivvJpNUH5J\nElAZisTkl02q2+y6B2nCPhl86cqpL1b4ymhTkkgqHBxqJfh9tECsZIVy9s5U\nmjOWL/2RL7oLAl+1XM2FV+aWMheS4e5eORdNpFOUgWZb80LMtmWhPOlE4b+t\n0agRIAz2Ixyhw2J91/IEtLU9CGbXTlA27ytXS2xJM/Ju70xUakx8F6F+xeUz\nLd1/gK2RTOOCM2YfFrRHKh72XxahMhXg+6fmFCX9aHrj1FXzQDEq0yNadKVH\nRwJygXr37LwHT0A1xe9Ww7etpjRCOv5thXe08zL/QdmlL0eZcduFSzOK6SHO\nRsXLlgpBhRGxDFzBrCp9lUxynO/XLnbYLCcv2/Z3BTb8f1rShPVoEtBj/MYI\nGmlw+T+naMNFEhmfZWs43rtgsUqZ0Z070gLcO1eCGigPXx3j4p5PoxZa/Dt3\nU5+R65qDYwB08pMjlwBWVbzu2kcDFOOXtDoMA5EngfZbOu8//aKwEvIb+0IM\nP7oDtNMIg4iqb6t7fjiquYb468hz8e20SqhGm4tL2rhqIbv0qo78cZVkOlqZ\ntl4qI54keVxmgsVpHsAgRyz234tM9GlrIwTU1LfQj1zCzkanecpVRuFqaZIK\nAT05zNPL7/PqWWi5J+mQAWOf2KB9pOzOEm2OwGd0T7Aq0ZC0qfSfujRh1HPe\n7PX/\r\n=XaJI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.2_1599570605404_0.1706846446172443","host":"s3://npm-registry-packages"}},"1.2.0-feature-a175e9-keu2bwio":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-a175e9-keu2bwio","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-a175e9-keu2bwio","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6a368d38c0347780e9fc87eec8a9b2995856eeab","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-a175e9-keu2bwio.tgz","fileCount":304,"integrity":"sha512-s0hXZbwpDh+mv6tF1hs2XPXhBVgOn9cXTHslm/BvaFfQZI6VAxV/aWOjyvfiphCOb3fynt2iBsW5sLav3c0dow==","signatures":[{"sig":"MEUCIQDy4E2iC3oiu6fZCTuWZjRhicM10vkTI4qHpC3aIujo2AIgCfkyPd3Lf5b6dz5GrWq8YxV5KO0VlgjNysSxQsWbvEM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1500585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV5hfCRA9TVsSAnZWagAAF/4P+QALM/UR4XTRZZEIdnTO\nWCHjJHAdTr2aEQhP5aQz7tSFc07hR5ToEfJlEmowlvLzZdci8CiOndzaFjs3\nd2yPI15Q1X6fDccV7yGicCSC4Epl5UXVOwH10WavfmDAs2y7fS7yXKMflT3M\ngwmov1Ev2CLHn0+6sad0JlF6Bgz+8MF7zi+GraTkSvpAZP7h9obkvuuUnBs+\nwV/DZAx4v1sMf6QZwsnU1DYQec2xWb5hAuoZOUPiSAnAvsoDKuOOeVS1BKu7\nqUupkfao7haVGYOeQojvd+/s8y+WvPGtW14ejtMIXoIoYhoYihYfJHpU4Jnr\nb4H/CN0YWpbTgsKT6YgsR/e2wJo8yEivNygjOaux2KvU721GkoXKR7Gmxhgi\nMnBR21RmFOjE4K9pNpUfCa4OqwdAUA8QwYNZg8wJHukTwpg5+pGANXXqvKVX\naFpwGOJcHvfAhdY0y4nEop7Xy5YWiVA7RL67Hv/xc2nmgqMmIahkp7vDCoGQ\ndeBEXo3s7MKbHUOvDXKzO2qz/eOFzpZZsqWkG+1d1GY6Ved8zwAlM7B3mEh6\nszXGH18sdq8RzMw17dNyHgn+882kDHi0e0c1uRuDUzSafLrY/xnYOZHaAOhA\nr+hWTQLELshjv34RrWkQIictGgSmcsIGtxNgntUvTOld1XgXJ3GfDxsHuKEx\nlUZG\r\n=XCOn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-a175e9-keu2bwio_1599576158816_0.062218136356468445","host":"s3://npm-registry-packages"}},"1.2.0-feature-34998a-kev0yaj7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-34998a-kev0yaj7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-34998a-kev0yaj7","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"134e72efb5a4db0d6b9737d03ac476873a902524","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-34998a-kev0yaj7.tgz","fileCount":304,"integrity":"sha512-fZ+0IWVSXxqZQwoefBs6RdN3dCkzHfvroO7GuXCIqA/9jvfzrpOgEP94vTPrttVlRxwQFXXEyYJz+wsJpWCSSQ==","signatures":[{"sig":"MEUCIQDeLGDkrKQk8KlLnBo5jSn8zdjb4pZBBirO/Q3LKxjP1QIgHOJsQihUzyhI3KxP+STNh/LpLtAokSixsR5zov9hQMI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1500483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWHuFCRA9TVsSAnZWagAAp9kP+gJ1QZnHjLFwHtlr+CmR\nIQYinRMq1PuVaU7mSTRQn/WztBcnkp15X1qVZMULSvCc66tiWg1G9lNuESiH\nGz1RBj/yVKWBa/noWBmmBiAST/EikNA5cmPrBXoClHBE3j0lZTuyXGCbwChy\n5uYsgL4FyjVClA/8FWhz0xnT/0lpiyknsLmfQzbncyEiKQKlG02Xaqd6l56G\n1fULtA4VVGlVj+nRZymR3PvMMr2lWDl1Kfax8GuHrqgZQdD/x1leq3rqIU0o\nw9CL6zs43/XOrG5+8NveuhrU1Bal7ALYxKw8fr+DYTXLotOxU1acQipnuOrp\nurGY4gOhGOTbYpHHEuJfRsYwmwfRvbU8FXVx9Y5xfKmjuma5o4LTcn/fWLc2\nAzMw+VDGJDLbqeu7rz31qDin0BygJfNWR0y4In53CRnLY+o6kSsRXqZusjmu\nczcwcJPeYr5COocQ4Przp1WoQaB3KO2kYKj8XO4MNLsPyhM+kHcZIEJQy435\nh2DzYKTxInAoLH11XBAgQWUPVDUA6EgIq1i8DnDWTFEKFxihkYj6YirC1MBE\nV1mg7qh4orXBX9V2oXiRAAAk9cqVgcLPfZXxvtMDoaiKMcGspTe+IzhPdkN+\nOu1/5ZiAn7DoT6yc0op/+1hwMM/4U54cfTlDvC7lVoFdy4Q6lIBYIWvnnB7J\n5VsK\r\n=WeBf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-34998a-kev0yaj7_1599634308567_0.7714736766371804","host":"s3://npm-registry-packages"}},"1.2.0-feature-fd2b8c-kev86946":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-fd2b8c-kev86946","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-fd2b8c-kev86946","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f56c93c7ffbf6cb545c52d9f6d760f32eac9e040","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-fd2b8c-kev86946.tgz","fileCount":304,"integrity":"sha512-YBRBdQWRRLdiAiBAXXlhlXxSmqH6UOuSRnfoz7kG45D1gMx2U53idUcpYmw5WBIUe66TCMrpu4qDQGc7qry9aQ==","signatures":[{"sig":"MEYCIQDHXKr54sskTYCgdMWQSNra4vqXfWWhSOnqBP3CNmZ6AgIhAPGxpGqcqaXZQkJui94wkqPTv3B0+VTckN/RiTdDMnFO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1500550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWKroCRA9TVsSAnZWagAAk50P/As/JMzJFC/BctuKXvqZ\n9AvKj2KX5KZF5lqkcsOO18gqTInvTuVfPM0NsKQOzIkNChUPkp8nRsXbC+3l\n5DqmxwdbK+yDOkU2WdhCPPfwKK9sXvvcazRMhRYPS0HbEzuCW1UxPMslPLCA\nuX6SdALUxaG5DwoUH6fFgQ7t+uEShEwUwP8C736R3fZuscqNQfEGUwWelrj7\ncVc/GlXry0Rg3T1ExNcwUP60C0+2cXnGaJeElYCZ5zY+d0Q5YWKviggmqQAj\ntNAgqiMg4hzPINRRynK37HgnzpY7bv6ZiLhLxDS6ztRWYmWH+kpKH5h918FR\nRo6W+nTevBRS53TpctN2PBLS9mIUc8QHGdOsaFNPsHTsriOQEHo2VX9fry7q\nQyrM1TT0UCB2+OWlkLukGPFIPgmQm6IMhhRStLOZiBG66NIZ+Oy0eF5V9bA5\nUcRKAvCuGNErD0Ib1gt2lwsor/ef0K13YiriM5LroJ9sfKjCkJE8QmGWN2a5\nqcDAkE8+imO3xcshF5L9JpRKW3iU1PW9TLMbZ7lJEIOkPac6o3BENXl+1Q9/\noNZX4ql0qGnfE/cPx+i+IGZRwKwW6gBkGHvkZ9ABG/2P1K3u8tbCGjoOZz9A\nedh5yQHId2WvFvhh5pVU17GP+Ep6p26wjOIzOD4N8xfRt3pOT+Fsg5AuUX3l\nayz0\r\n=Iynw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~fix_claim-check_for_empty_lane-name","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~fix_claim-check_for_empty_lane-name"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-fd2b8c-kev86946_1599646439702_0.034662693964059965","host":"s3://npm-registry-packages"}},"1.2.0-feature-53e65d-kevaukvs":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-53e65d-kevaukvs","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-53e65d-kevaukvs","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4be4b2b1c80b54b10546ea08c1dd3a78f3272b4a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-53e65d-kevaukvs.tgz","fileCount":304,"integrity":"sha512-eJ62glKqAFQ5nNIp9fZQImq9fGcXOOQz+f6cwc9agnKoypEDO5jX0MooIl5glkCOQjuq4gW1lZkbh6YR3t/+4g==","signatures":[{"sig":"MEQCICFX+KuJdvYOgQZtfiEk2LHOBB5Hrgo/4/5FVmsyjPOiAiB+h9mlWli2yfhQRktqZHqojJJrbtr4rEDkvcPui+s6FA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501199,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWLx1CRA9TVsSAnZWagAA/BoP/jsLFFYaTCk0DaqYGTL5\nsMzUQFK3lYBn6+CLpVneGgzuDMPYVw4I/ynbRAQ1lX7VEjdQDi0gHH6EW/Vt\nhCveX0rmhfW6ixOhGI1Lf8neHQ9jnZEx1cCjsT9oTXWLVMyQzxo7x3LAP1tx\nb5Gsc7BTo0rfaVi5Vq/XmDHLgmzUM4BzSFYIRR1WCmVD2tw3122fzlt54pg9\nV4GxSAPOy7PXG+5TBUAiaC0i8PNE3QeBcY5Xmp8x5tQAFcvgX23qafhfNJP2\nwAi0yc45kT+qvpJni9CpyMgRFTYOEZEt8/UtLA4LWOFUYlhbw6HeWZtv4S+Q\nJfavL+torAKkcOoPI8qcgC0XBx5ZxU1CfREj2kzC0OOkACpFOWY3+FMdGZv/\n6+ZOj+z4lOkIlrV0WuFXH1Ujd0+XRRLSY5C0FxEqJeiRv+z207Av9YWr+Q6N\n7yGnJ4hlHHQU/MTK+fzeDpLsNpklHIrUZY7RB3wof8FuhH6j8dh02AS4FPlQ\n6qNXnd5hsvHn6U1GbpVBiuuzF9iiYStcQ59nsE8UlUDtoO9n7etGMm7CLKfM\nNUtsNS6D7J+YPOR48UVph0zIo1qnTqA6iojXe5ex2tPfbm+Fcx1862hFyvMN\nV0lnxEUmsPgCXobIrj+QDavHSYP4hgb1My0LJPYe3+Kv8ITGtxnfvWNr4Vjq\nn+Xh\r\n=SjCr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-53e65d-kevaukvs_1599650932749_0.16340538532109328","host":"s3://npm-registry-packages"}},"1.2.0-feature-6e1c59-kevbohes":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-6e1c59-kevbohes","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-6e1c59-kevbohes","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"377aef2abc231d03d11d201631b4651eab6b2f4a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-6e1c59-kevbohes.tgz","fileCount":304,"integrity":"sha512-fm367/X2zK1Zd2i7cF3WGo/uWaDmf+zsnyrR0vQxldPiHQaQ4o7KzlizeJXrR4g2gWlXLhzrXxD6RDEGRmus2w==","signatures":[{"sig":"MEUCIQDFyLyvbK67eFAfJhV6bVwzdfgJ30hQBZhQdzhc135k5gIgDsx2DCm4YNUDVHKoGr5RrBasfD4hGtao4NEPQ1OYrkw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWMHoCRA9TVsSAnZWagAAVmwP/2kzjxRDf7Q8bqSKjR25\nfxcuhDdQ/vVbKuW9gb2TY5va+3UgfOfZpEcBBiBipTHBFZoZpZn26EI6VKRa\ngr8f+TqYY11U3gUZ4j2Tdmv3gfVB8SIWzg+Cfq0Kv9+/t+rhuQTgV0wXiyHe\ncC/68EN8VDu4ST9zujDKqyBd+F02jOfH8Tox+xQDeLyEbGKIqG65OBvrNp02\nfAbRnS0O7EfI/4GslU4sRD5LH2AF+vynCzI1OCtUZzzAeZn/Dg8TVEK5/zRf\nEZBZVB0ZG0NxsZr80PNSjdUdae4bbhAy00JIbYFi2NtnJ185xP/1B3jTwi1S\nRTXivRDgS3mBTT+2/tISp4xGX5H0gPGMME3emCcGkGT5FkfW4ys4Qmnwv+LV\nC7/j3L8/CpPO476p/vU7FVTae/s2Ye2kqqIwrYbUH5rAFhgUgsncDrKxlQBj\n5++Ib4L49VtErpPwp10T43IC2F3VUr+nJLkiKGwknGeRWKd81e8QTTV4NuUO\n6fuklnUofp3dROXayxd9p7l8CY3ml3B1XR+qtKtWm3VAU8vF3MjXxvSMNMFT\nrTVZPler1f2q3VQNXhlUU/XtzfUsnBEFNyp5I+irG6VcJcop3lUUy4rYze4O\nGLHUiGCnTGp5NOVPqyVwNaI9V7/rzCc1FBuYnKRlegkdST1pTFeG1JVoZLX2\nvyIO\r\n=QSzw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-6e1c59-kevbohes_1599652328142_0.5139980677326763","host":"s3://npm-registry-packages"}},"1.2.0-alpha.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"095295f18bd2f65d746579adaf931ac5bdeca0f6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.3.tgz","fileCount":304,"integrity":"sha512-zK2CZYVgs6x9NdyWpZ//7cRhDVw1qkLIrKjpcRLj+F6BB4f+nBLsLdZzqRupFIU31HKM+Gkp0XWojK1MQUIESA==","signatures":[{"sig":"MEQCIEBvvKFYb8ulSHJ5ujLlDDbHaojE8UByQ9EYPRMKd+U3AiAlsaD5DXTRnso5xcQg9kv7mFuILepSZkSrvIpvFbAFvQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWMVZCRA9TVsSAnZWagAAY4MP/i1Mw7cpi7OtcStmFiid\nJEbEDx94dY9RfKRkyTpwfw5qzRhq1tMcQaQqizEK9Tbh88ht67dVLk295yuv\nzHY5XUc15pVLXCNuY+uTwabYw6Y4vBM4Ck0r1h9Y0W/RGyQflvWkBfF/Em2o\n9u9hC5L7iAmGu/jh5sBMoTvhrdzdulkn+Hzm9eN3/neEqqrszctR8fxT2SiB\nfkrBaKbqvKbAwVSfTaYqTSrjIA9ff3lIOHdT0nGY+eDfBk5gew6g+U+wyjr0\nzRlsIZtnreBylgktm4yL8CDREzK8zuOokjgcqw3sSuLKamU25YW0v1hysMYd\nxvtYKMUI/cyeSaoyHzMKDr4zzjn2SZU+bamfgeYOcGGcILHIWl290sgvubVT\nB9/qSFzaNwUt0LS9kNY/St2jN6QVQ4bqaKB7mPLNFEfLFxrWpEzjMWktiTso\nDuXx3mCQjaFBqsSZgGkj3+z7b5iEGg21yf8ijYbhqsr9UVi4RgIGB45IfGtK\nAycaBaY3fFOuS+T/KVBLjrYuPG4hEHU1T0uXI07V7lEQp2QCK1KnuNQhqHKz\nfnRyv7/AMORKr31Bepp/JIu78zraONydUs8trDo/unDlAv1SIUOxPgDGQtM1\nWzMpJEGGwTYWmxszX54Q59YqtoULmGAWsEUOY1Wmuv4q2JlLQ4X2flLJAfFR\nQuEb\r\n=Q5FE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.1.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.3_1599653209275_0.6927590644533699","host":"s3://npm-registry-packages"}},"1.2.0-feature-e0e244-kevdh5cb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-e0e244-kevdh5cb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-e0e244-kevdh5cb","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d66850443839acf9584e4508ecf81771dbd175c1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-e0e244-kevdh5cb.tgz","fileCount":304,"integrity":"sha512-lzOoxh6sa0TomLIlhH6bAqlmlTc+njj509gj4nOJUSuXjcnWiNLX7NPvTQAQxJyYoIUFybGUfm6I6X5Mhc3x/w==","signatures":[{"sig":"MEUCIEL3lH+RvXLbamNjNcRrXqrwHtaqCDrbtTfVQy8yqbppAiEAoEMnspAyVIOtZBp8m7RadJYRfODkCAbNhXepJniApaI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1500490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWM2wCRA9TVsSAnZWagAAAB8P/jv+NDWjCfbtm/v4Izqh\n/wIAqnZHd6S8K2ew3RwvwxyKhVpx3XI1qxxHBq0krb/vvw6seoxr/IMhQeBt\n25510JzFksB8QBGuKoKa7leUncVz7k8F8W1BTn8I3SRE35AZK1jjuU5TVaRS\n0peYJINSeL0yNnYw7MMs/r46omNUFkmvqywMiNauYy+cnPq1E76jCKGJxu4I\n/piF30QOG5kVd+bwmK+balqCzak3w9XVZ4wxU502tkkeb5cvdsRTbGHW5hII\nbqdAYuRjFHtLb7V6AGJjip4FKZJWkE026qULzAQN6S0cje2N6Z01AHnlJuUW\n1uUOQtbT4FMxjv5lrZphl+wsL2G90Y95KVyqQce6QzjsQdf/7I/bgl3iL5mv\nwapIDYrGEKgxCch50DBVLHFJbMtntqx49UoHlxCqpsNcbjs1VLA7li0xmhzp\nchtrjcD5z7enWK3DZX44RNqHxGT7qgUkKkWOKBqxZhEMQja0BZjxMLWGysL0\npAS5y0KNpbBBygfa5zvUqUBT1tLrfRKbt5oZDBSpUP4P925HCCHhd13EX0em\ncfVbmD6FeG7hQP+SQ1Al8heeJk96rPIDyF/uUnveQhij8QM0jjH0v5iecBlN\n0dmeWfEmMNc93uaB/QFBnjV8vc2sKZxGJdSS2iC/eOm7LtrOR2W1UF4VZb5R\nNfO8\r\n=ok1I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-e0e244-kevdh5cb_1599655343814_0.9463370880165471","host":"s3://npm-registry-packages"}},"1.2.0-alpha.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.4","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3d1330183ec3b377994d5bc338c28b1d6bb79c16","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.4.tgz","fileCount":304,"integrity":"sha512-Vr/z9YjkboUhMylmPPWuWG2TZAiFum5rQpw2ANNncmjH9rdhSJ7tgAtTuF+GzLxveI8s71GJoxFTBub50ggjbw==","signatures":[{"sig":"MEYCIQCuFU146KfY3KOXhh8gvx7q47/vNz8GeHjoRNX6daYMuAIhAMN+PZ9BOpRSxnfmaZUvT6cYip2Db1UNMBCZ+Cc+aTSS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501098,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWM34CRA9TVsSAnZWagAAWg8QAJWwIh97hLiK+OntJUmq\nSpptIIuR2FDHGUMCS+HDusX9Xy+YMwYLHV4r3LYkn58Gz0B57MKkfNbFNfdF\nbkmbFxBdjkXEf8G8caPqH2lDwtVsImopwHaXfn+DY0w4xpy3pHOZ38b7JflE\nLc5/PwiN2W7QRDUUB18dtxpeEWNKY8uKtgZ4HRCCqElnTbCUl1EYKkHN68El\npW5dyjXsQO9dIF2h0nJ38nAzQ1+A9kGCJHCAWr/WVLtnXfCbTt0WueTmRPqv\nIOOy6ys0tOG9ZUNfDAIffj5eQ/Qw8vEQovRdFYr3Xc2WkgIxDxWShBP2IeBS\njYR88Dx3t9uOCQD2Bd2/xy+GgwX2mOhIjzEOimbC0y6NxOEzO5BzNW4tHHA2\nhLW/CB1lEHpluWN6HYbjfBEN43fJhVuqodGL+Nj4M54+JRGOnB0ARnPkH+91\ng5VFPP7WdR6HZtB8/ELO/3VpGWIOewV6KY55feJb77zATLvfi9dc1RrDPlTQ\ne3ErcGWf4UBc8OD21JERngNm0ePXSBnsimb4P2PbG0WOdXWek/4YFBXVzgtM\n8AgrYC2tbsQOk7UJ4CVABzYE31jOB5HBgKqgUBv/y+QJ492WZQHwgxxeFFTC\nt4XyP3onyforeaKPOLUJyRV6wsipRT/ON0EgmFyNpz7BmDMQGhNeklbtHKxt\nfSyG\r\n=JE8/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.4_1599655415382_0.10990989340078694","host":"s3://npm-registry-packages"}},"1.2.0-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-beta.1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"34de36e1548189a8cb23dce1834d71487f175869","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-beta.1.tgz","fileCount":304,"integrity":"sha512-inkaPKbtMF4asRjG4XiihEGowQPP1oxRNZBqjWgpbbF3lGt+42HBohtoilBX0jnYTj5ts43DaUq+We/lunuEgQ==","signatures":[{"sig":"MEQCIGJmigyATj0TeDZz+20hSen1N7d0sjmAviE5CROu7DzUAiAsQiwWMHs3GFpbM7TlYw+wt6bQM7z3Ncfj4ebAddtw2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501095,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWOGBCRA9TVsSAnZWagAAjOUP/j4BQxNku4JUkrO0Lq/k\n2PT0tz8jhL1Rl9cR04kg8fsIVr3uqwKwy+iWvBvVhTBgSD2fpiVrChK/s482\npmDAGJwGwtGIWN8UlWVKKxYHc0Htm+Cch3ecvGO6SnvQMr+fwLAUKTrGsTIu\npZ7FNTU571FjiBy5JHcbCMZb7L+1z7PTf43/+x0Q3l8cvvDQt+eTy4QMdJhC\n+hwx3SVujmfGeVtgMKPaKzoE9kxpg8yrrZHn+S7NpVXn+LkzdTvOMDGZXvAO\nCXOI8d1V/qJbf1SVnlzrnAZZYb+kcyKYuvBBGptUOK/WOIJnGDs7y2+xCpXY\ng/tRB4R0/mX/gvVxW/6vQrKIXJyJlkA1q5qHFEccmWc4xvRP4oKg8YKHv/4q\na1D+jOsfGBCYkagk3Xb6yjQkBi2vVvoPTH6Xd7kZ/SQN2fbohLvRLtuIzibo\ngMdIqNSwK9020VY0WeZ+d/cuJMly/1w/kkEj64mIHtmwyXJ5TDjbwsXzKTIt\nwUBHa2YVu9T6a8IYSBqqMf9MOVAAzT8Lx9XWvQxHOTyO66kAT1CYwP9ixSN5\nQjOk+7aflH5mbZsv3GzvhQnn39girlM3L6Gl2r/mDDc7fUCTMe9vnRUT/wPz\n6AuAVqRaMYA0a5a8zwduBJ3bMEZEanLjaUy99qFlV8siLTtdu3YGVC5oQstl\nJDch\r\n=DDT/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-beta.1_1599660416840_0.40876466498251474","host":"s3://npm-registry-packages"}},"1.2.0-alpha.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.5","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9c215947f312305ee275e5132dcfb1778920acd7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.5.tgz","fileCount":304,"integrity":"sha512-miZlGg2ZpHKhG46gpqhF0M7ZeHPMSQ3b6SJfkgaLJD5Nk7ry3DcayJ9BDJQ/R33oCV3PftfK6Eo99IVJD47VBw==","signatures":[{"sig":"MEYCIQCJkJnrmXDOTDH2Y1Z1QNZmQDt1RHO/sgZxTavaNDQCnAIhAIwrCmxSd0hwuj8r8qdOATkvs1gB7irgfWpl52Zgr9Kc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWOGPCRA9TVsSAnZWagAASBcP/i9LZYi5bxPFukkz3WDK\nNPE4lsC7VRhTHikBRL5bk3g6zi6biJVtOFFBXuJRvXn9/RRwW/sT7nBoG5IL\nvJP28nIOSXsOnNdavkk/YB8LgHrSM62hW5Q4FGPlgYM0bLRYZzyiL18Tt4zK\ndhCVPVx/GixSO29OVuIHAPjHndCaIS5ze3f1WNnMI2+uwHsNEFhuwfz+zEvV\n9T0aY0tMPdLn9qeX6njLcya8V+XYXIVcwyxYn0sU7F+/stDjmV577bVxgNMw\nP11jGBGzsaj7NmxI5KZVB6LyDQIJ63YFeEpQfhe1b34IZpZji6bm/bZ9D0y7\nSkKt4dK5rkSnSnMsw+Rod/2RMPEn7MbuHhRdTuDm2ugP5JFcVUABlmjpO68s\nsdlxGgQihNZDxb0MM/B31b16vmVBEU2LzSoKOSap7ps9eDK3AmEyL8NHqQym\nvS9x+8Xi9FkFaHcGcmzQYJZZIH8BpPooRC0UW+un3OPDbcZWX4J8ssopxyYN\nzdLRBKVJiXgg5boDRtrc7DnX2MZv2lXmkhDaPHoG/YIxGtzVJDjW7qbjZ+s5\n8eY3mLMBzFsPvBY2V2eBO04TizfiHC7ZrwJ+OgejUv/kZBKw11TSmf7yUT/6\nk9JhcodMy9TFts5llsNCnfgGI+i6/Qnq1ZAoLU4LjOM4OoGK2VJaGj2NjTnj\nPZ0n\r\n=uk0B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.5_1599660431204_0.3441199782910316","host":"s3://npm-registry-packages"}},"1.2.0-feature-12d203-key0twn5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-12d203-key0twn5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-12d203-key0twn5","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1fb31ab5bd93c8513ccc3f9f7241ff77ce0a9ff5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-12d203-key0twn5.tgz","fileCount":304,"integrity":"sha512-KM5So905fDw63iWgYOU5tG3ZkBdA8zXvSyXbgM+KlgA824RqjZxivbF9/wDwYohNgCulJXUD9jUVaOtyGu+8yQ==","signatures":[{"sig":"MEQCIA5SllPkV+80yBAe8aqyOUiLHyOfuuhKMbQjJFHB/PvkAiB/Ikhp7q2zWZ4QWwuzDBh1BW8/68XtHVRrK0f7kIsufA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWz9PCRA9TVsSAnZWagAANt4P/1fN/uVfZMrjO0lUnwgC\nT7ju2iPjfyoPGhAc7sQ6mL+hFLoAMhSWg6L91JFJwHTBOqA8C85gmi7v7C7x\nn1Okp226Vw8HZQmL0nou+ueIrzv7ZNvUwafcULdAd/9sFS8i5ryWdosX/J1H\n+rSxY2Si5RNT4wJOpD4deI10u8krY1/mRml+acm699rhPhXMtYQI6wtwL0kR\nlJm0tas1ZGQFW+4WCJotBdkD00mm+bJ+vSBcmBISAVhI7NBxKk6dxb3dnML6\nlvD0BN/eJmRFaNpZhrwlhcWBWdYQ/qy93QB3TJQos3g8aHLIJ8aULnlkTOwR\nOXiT3O6ElID1rVf9rZtgTEZ92iMNn+KkjBEcb/v1BvPj8N6Caen4+GfDXJGi\n1Xf1kXD2eYnFPCxbypoM/Q1DLcYHIRni47Wap5llbekKkHwQjkZoKrNU22hh\n39w5dstYuARyat4QM1WpGkGsmEuB1VwoL90+usqvpYiZcDj9RjxtyWC/Z7kA\nmyx0Q1sFmODZeNnLkTHKU1KNX/T/XQq0HCoRHlAiEqUNyJ7rHVc3Yb/naXTC\nNwOdbtER+g++n4wzOdiEk/+maVHUONeF6fWLa+MFY/L/LgxqUCN/UTQFZag0\nfUxdRCOuY/zOQI0pMob+Ij+glqOih73TGPj9mrYi9aUWrwAPS7pgs/zAOU9E\n0k7I\r\n=6c3k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-12d203-key0twn5_1599815503294_0.32896371642875866","host":"s3://npm-registry-packages"}},"1.2.0-feature-c2019c-key0vmwq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-c2019c-key0vmwq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-c2019c-key0vmwq","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b20bdf8addc25c2cf520c733f794855a65c2f5e3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-c2019c-key0vmwq.tgz","fileCount":304,"integrity":"sha512-FqV1yu363WKW/+0cchjjTqNxexUf3Mfgoz6zR+riGZXQj54vVaDKQdBuyB3A2nJQEvh/n1Fo0Lvh/197JGYE2A==","signatures":[{"sig":"MEYCIQDm1NRFGm2ueVU5s7o5QLkUo4li1WpfVMKXvPGCum3v7wIhAJ3ecVRQBLgKCqA25tyO+5CL7+xfvXhyobAzbOOXhSLZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWz+gCRA9TVsSAnZWagAA7TEP/2yeOqUZvD8rqZFC82ip\nkQdSjyOEj0NSaoQrYkkuuIc/R2PPP13xNhqfUz1fPaopQyjS5/x+cSjcK3lr\n+JArBeJwBHUtYL6bpIGYL1XGSekbJmTfidrTbgkpxg5k9ojOE+BUM4QQoNwT\nNpD+vfvO/Li/SjTf8a7HWiMLZ57zi/YMTRwo1znEYYSb6WsJH4TSrnFohmbt\nAbiUTaaJBFFRP8VxtSlRUuhVMXTuNEqlCwaHFfeJcjrLVglwH3RYAut59kAh\nTSqfrH2bZtXfzaCezSIt4oiMqiXmcbOKxmEC1tQ0ofkEhvxiCWe7VI8ZSNPP\nL7Ej4sjJPSPkDHtiqSfV6T7hbc1kyIYeZeSI2lws2ktVYFIxJBi5kPRbZIjO\nkXpCSMD3VaOm1CdMqG8qIq6O/RypQZ65wm6iFgD8YfIk3dPeIWHL9pGnJsEb\n4kbxK+bwkkh/zY3zv1GstS1z5KVpCB+7Q2FjpiMfqBCPItx2gcDRWtSfd120\nkgJIzKZQojIJfJNLoCcnTOMzmWJfB+E53jsSZQwxWew9m+l/pKFKBws+6j5G\nnhNsOmb7+RwGXFaMIyvt3EDe4fpSxNce2iaXwCjd8KEgyls7K/H2x91151yw\nZ5UhqBoNkIJ9MEMUg6Fg+n/Zaf11D4WPg3wEk1ZkU0IcUAqVU4nbfEQsPHtT\nAavi\r\n=XFGq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-c2019c-key0vmwq_1599815583810_0.0990714200807139","host":"s3://npm-registry-packages"}},"1.2.0-feature-12d203-kf6vp26i":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-12d203-kf6vp26i","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-12d203-kf6vp26i","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"75c90aef6b77e3c742ce68e619a7b2246c6cb425","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-12d203-kf6vp26i.tgz","fileCount":304,"integrity":"sha512-ep9oFz4Ou+OV4AD7l9u7RWLBPgPpqtu0ZwKQCcaCHk7bvJeOI+ih5unc7OH6/WQGOcDIIpiy8vueEr+Zty+mHQ==","signatures":[{"sig":"MEYCIQD1xDUnLVD1W6y54qUJ+s1+wTy0txEjruPcTdNQ7BjR/wIhAMe3iKoQ6zJEUkkw/0LJi5omNGInMBF/rrfYWaPdAtAV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY2tkCRA9TVsSAnZWagAA7+IP/3fxncoD6dxqur4i1PZU\nPEEGAxt4lQjZRojggPyRHtjTVSbVp56We6wut2KR6TTw+qYnNLLfhbu6xInn\nXIGzRuEc9Hnblsiv4CfKZoL9TkaJ/t0xW5qoaFE03+TsRUB9Qa/N0P8z0+xk\nrxeeXXazQeIciVbkqPWg++/2IVxcgJSuJfffN5lh7ybVoSe4t13JZ6ivig4Q\nXoKLVSG1iqU/z4tb1Sn3f01KrjV/MVNMUjWBfxJAgcTabS0jiMw3kxjIrvnX\nnuwsXPRW39GPmJ3XsvXNTv0PFFqSZv2cZBn9nlFlVfvCgkMjUrOSK2O1WAIl\nVQSdQMuGZLqol0y363IsZDQBSOPm+oXspIn9KyZZI3e3Tcayl4UIV0HtxQ2i\n54BFpEINGGsZ0s0K1gVwWUNzonpr+yXBYjSXE6iH+O8mun0vxCps3XK04XHh\nP6T5dSSX7HJLnEhabi0O1zOfuO6Q9khGFnm6zP7obywM3GQce15IbCSsZPk6\npPLs/4aL3rR37lfTSzWKo8qRZRDE1iUhCK1fOeTpdD0OhMFkC3sBBV0eA2qQ\nk/kd6HOU8k/kZkFHqjOCo0jv6KyN+s8qVI1P1nutFFvDpUk6fCpoNIWmrsk6\nlRf1Y7gbCENHlv9/PBxNk8/p11i/Pqy/KEhTK1q4Fd6S2MO6abgP6oJY9+G2\n/kUC\r\n=Cq2j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-12d203-kf6vp26i_1600351075422_0.1157547090204949","host":"s3://npm-registry-packages"}},"1.2.0-feature-d046f8-kf6vr552":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-d046f8-kf6vr552","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-d046f8-kf6vr552","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"23cd1028d29f082bd7bfc693f6319f589c39a539","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-d046f8-kf6vr552.tgz","fileCount":304,"integrity":"sha512-NCE+QequxH1unRjP6t1BV+QLdOhf4fgQ3olHhh6XMPr43YNbIRyp8kl/b6+AslN195AtspecWAUeAveWwf1+XQ==","signatures":[{"sig":"MEYCIQC6DDphZ7BnXW2JHD52zA0HLwsawv9rfFBUCQj2FgoiWAIhALLxj2LfESdVjuVeZ0MyVGdrwt0xxnLtSuXptvQC7T3Z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY2vHCRA9TVsSAnZWagAAEA0P/0zgirRkq1BWgauyth8H\n3aWuTwEkamY+NClv2hVUwPcZCHuByTFtr0OLDbhVrXKB5d/qumqdBbiMxYsa\nnR5J5qYrgWAqZ1xzWnRTPOHDOllAU09q8b/BOZpBxY2RvUzP+uX/+iD8NAxV\nsp4WYn0RGGxV4EvQ0uLbD1+Rhk9Jf/Is63DxrWLL00xfz1LhR5hG9xCeyCLf\nsAZdV3iM1YkF5ymcirLo8kZ7t45/+iU3Eoh2z9jDAXh5h7xXNrYCvNmBxwmg\nHrVYfnDkJq5Hs8ys7wCVjHalNEMdTpH4KjMuaZ4j26CpdD/cFaq00wXplCXI\nWUPlEIgJMCBr+Cetj0dT9Bi+O9BLAUTVD4yClxPnSVnck2wjUIxNMNA7bIsF\nINlxgKyDr+5lBgU0RYRg/NbkneiUBIBQc9qrnBocCk69qYbbtXYnTIvXRhak\nof4SQDNDmSAAdpgCjVN5HdOXcSH8WCVmYmpL5e+FmhfZ4k7qas2RXHLaAH4Y\nTO/jlPbRT33seYTEOltW84cAU1FmedMlDdbyiVNW5Sk3nvtUe5z2aTu4scC5\nsOJYJdU7TSSz+I3E8JLglNJ4PIFKbJhAbojCQcR4qcRv+iEIjNaNkd+ZGuLE\n0O7PSheoeFoS9nfpnYEV79KEI9e0/A0uFUY+1qbBSwveE0QOze/ghao7NkJI\nETtV\r\n=vVRs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-d046f8-kf6vr552_1600351174658_0.8199521495779347","host":"s3://npm-registry-packages"}},"1.2.0-feature-fc8c96-kf74tdlw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-fc8c96-kf74tdlw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-fc8c96-kf74tdlw","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"844b66b824582befc9caa8c2dc8b5f4a83172f2a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-fc8c96-kf74tdlw.tgz","fileCount":304,"integrity":"sha512-z002wm3jQUQR3BQHfYOlqWxNpItguwl20fWe2FRvbtOqK5+fiVTvk0zSE67Sgg6aFHFZCm3iL55dZRosK/uD6Q==","signatures":[{"sig":"MEQCIBE+Xdjz3QVa1SJOAJM0P7WomHtuheRPOnP5Y/nKF6deAiBXw4/UkNIgH9PAPTFBAzndyCiw/GEMPRXrn18N1VI+BA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY6c4CRA9TVsSAnZWagAAoMgP/RutnGMYMdnhzi8SdfUT\nmlz+svJiTMtty8anWuh4dk+aLEHyFy0HO9jPRPFAGy5O0M1+/5Vaaz3fXUaq\nqgb19IwLNVBdHjH1BDFS4czLstuMNGKcudcCxVTQG1IrV1DuIAkr/zECka3c\nTPpY1Hpc+Y9x3j09L7XHrojAj3DNyHyA5R22M0gNCfxn74CUL1iJXQPCXbxb\ndC6YYqJ2uLp+j9O6hlPcMjpyEykTewWa/OXfVBCxJmf3xr1pA6rwHzc7KiwO\nq05BXI2L3gmFGWWaBWApq5HUcncsw1JYGAnkfKbSI12/RnKrKml0/KE4xjrA\nbPlkqCoRkkFysEfm/l6uw2YyCYHtK8W0dD3ObiXDcDrA17wa/TEh2NNYKg4e\nV3H7KJG1MqJLg8tCKxL29Xatbp+ej7T1ICgS+ZuwQbcmLel2IBvMUBU8KF/V\nd3VcTgNf0tUUS+ceGtH3OAyCGalYa9JwZrnsk2qrmDW7NQCqiPvcEairO8Mw\ns5Z7mAk9Nunu2oqJO4rkWvVui+RNq7k+Tl3hc5t+rWmwS1n/t84W273Ux9Vq\nHb3ZWEsKV0eNO+FRSlLQolYAovquXcNLZtuLE2/Mi2whzE+rWZ5xdU2jTWpK\nUpWfSP30PBUARvjw70/8Vy5ZwrNxe2GWnKth10mpUoJVPXyk6kyHnNowfs8X\nK2cg\r\n=ky/q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-fc8c96-kf74tdlw_1600366391170_0.9946286621486564","host":"s3://npm-registry-packages"}},"1.2.0-feature-35cf64-kf75w5z0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-35cf64-kf75w5z0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-35cf64-kf75w5z0","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3852783a827427bd250f571df9c7f57a5802ff8c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-35cf64-kf75w5z0.tgz","fileCount":304,"integrity":"sha512-lvUf7DpllJ1loZ5zAKO3sI0KXvjHhHpWxFYc6fA8NJjn2BAm9r0Ns00cRqNgZrxcEZc3TuFgIyrymAYrB8hdQw==","signatures":[{"sig":"MEUCIQDaSvssfqRPHRXxcYlqD7DBBrmr5Z8b0OirUWWfDFOuYwIgMRIQGYNdYkOuO/U0puaF9S56d9pwtaWJI1OY4+Vf/Q4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY65LCRA9TVsSAnZWagAA13wP/0I2ZDZExOoQ4pa/qHek\nkae/uhtC9SanbNJFJXP3YFpX5UVczoTYeAICOCCoD6W1ISNiD0VrUXMJrKJP\nJL79dm5A1agHbbkQUMYkFawtn/3KaMv3TdelKhn8PXRV9610dMVFptiF4xm2\nTDpxQU2m08Ghqtzg4kFEyU6q4gF8Gs295O4dWWMjArquDO+hX8etlg0ubAOF\nUc9LDp0zDKyySA3rv5Z1OTSAW69LaUbKoWeMCJ/uwBiIbOmPbqoeeX01QmtB\n6hb9zXI3gnZpYfHRLR5eSnXlrv1dIOb5QEWvE/kLK3cTa1BFUWTwcdobjFmg\nswp6lqxFgSm7VBds4JCHkpGbmHyPa7jqacSsvjtJGWPRQwvejHIFidIwiLZs\n81TTKSDB0LbE3GfXw10681SPl7RhNCnZtxo3CiZsTLq98Dwyit+Lb4fPBFSC\nk4upAvwf21sD4m6XKsWLBlnO8Q66ryL+ZDrtzpL277KjU59swj7RW/LJuWBO\nJm6FTbAD94UKkqUq06JRgB9Y5I6xSKwTj5J26CrDUe9k6CBb/052Biee1Mrl\nD4PQp1p+CMIUNFPRypvwqsY0Bvn3gUBvxDynU19yiEHOw3zS4yVjngLqGitN\nQTS7njXSF0FCDvig58/b6TKiO6dFSHq0tx85tsLaYhh/KUEA1seuuZjAuoHY\nH0HD\r\n=VSV9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-35cf64-kf75w5z0_1600368202536_0.9875963072291221","host":"s3://npm-registry-packages"}},"1.2.0-feature-35cf64-kf762pfd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-35cf64-kf762pfd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-35cf64-kf762pfd","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4dc300facf806834aa56168814a97b7068167870","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-35cf64-kf762pfd.tgz","fileCount":304,"integrity":"sha512-tHcsp4qPauVhQTqt8O3PJwfUeAWfNbcfb9zOLurNI22d21xIZ1VNjXCTVL9SQD78SB6YEzKvbix7Q5I4SQld0w==","signatures":[{"sig":"MEUCIConKFFQAYa/pyTKWIzrbvjtaIaNTBYffOsj5UuesPPgAiEAoyVkj9YB0jzVAelo2KJb1YHT6B6BNVWgHICqBwAFb74=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY69/CRA9TVsSAnZWagAAwCIP/RR37qC1bSy4ekBlCbY9\nbkUj6qtNk++Nh/QLsotCVHjiAPJ+hWKhumapfD6LOkWxGh0OtRIiJ65+SGMf\nIsHZpkwgQbWWQZ+c/t88x1zg+GHeCZNBHM3NzElqVTbzlfngX2tCIxZiBSm2\nftmNgSAd7JfA7Gdob0dC8VUfx15sDhDRHbt/Bg89J3hMwVYYgo+mZOqh9AaZ\npMYyO57y1qNmfwMMBbx08GQ87zHjHkJPimGMQiCF71HYn2xXxlqVh8YwWMKB\n1pW+cFj429YSsYXuXgzLvMaMU7w2RBYIVmHQ2mwqvVGxDj7qVxmnu70kre6Y\nKqLXxgTYm4cX3qbkY9BYwCjSH8GBnT0z5NfeFnA7kdmS2is7zUGGDc57rlh2\nuMPPAq/B1B/YBO9YEbB0iFMytfajRG3fD9drsQPpGplBnvAPLR7L+19ZgIJe\ndbyyXGREp5R0wym0YFyX3QhK72H3JsU2K9M7YyhDKuaxOYSsZPGrQlqoxjEI\nPZnuJH3bzRktuIwSNbunlzkn2Hq4gy3uUxq2Bt8a0K84+Xqkgr0hTgXn1A21\nmD5U5o1u1OjBOvh7l3Sz5c46BJrhUGVOopbgUKxwhS/+kI+e+OT3Q0CK+3+z\nb4z2sRpcMuvMb70wL9i+tmxDvTuYKn5pLcEKYaeiLw6zrFBZVHR26YYNnCUn\nS5GI\r\n=Yx76\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-35cf64-kf762pfd_1600368510817_0.2655661822421611","host":"s3://npm-registry-packages"}},"1.2.0-feature-35cf64-kf76g0xi":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-35cf64-kf76g0xi","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-35cf64-kf76g0xi","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1716e64bf35d2a4641078e44aabbfcbba2b81507","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-35cf64-kf76g0xi.tgz","fileCount":304,"integrity":"sha512-kiLiPTSLKmttQ9TpuDmi9UkbM0PTz8dqAcPu+CTGCF+woLgZFj2FEMyDS105mpY8GlktXjsmNB3AHmacmYUgHQ==","signatures":[{"sig":"MEUCIQCqM28tlLR0RJAO9K72urdCdkmH3GdNCUbhstiuW/28mwIgEuKiEQukr9TTt1KOXsFTi9egd9jRH0o8rkMn0PwkudE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY7HoCRA9TVsSAnZWagAAVi0P/1xd6oxYH0ie5OtU5TPm\n0He2Ddfl3vXWr0LtVR3xv3iyJZJ38+2y/YAVjd6hZ7aqrwoJqtvpNJ/ZvM2K\nJMLWQuzDNIpcO+EkOr0wCJYThofXQbG3iGXvnXlw7Is0/I8VhYdzRFNZwtTf\n7goDvunDaNaH9sAa30QvRHYwGCEEAXf7+cQfJjwrdm1tcTRaI8In7trgj4YH\nHnDbGOZ6JKzCpS+sWFGip/JIvHBaJnN8IsFcjz1vv68Kr7Sn/wfsBYxScuFN\n12Fsiza5qFdm7wC0lOwrSHbFVsGfdiU7iMoLEYoWdB9QCK+r0wWUSEgRI36l\n+439otvIi8VyuKM8IpX2MIfcemXYhFKUtp0SRR9jWwR7SekLl+k0HAEGfyNT\nlaGO+JjkrWuW2WlK5NzlcDHO5wJxjViCOBS/8h5KUTT/0a5x2PwOnfP+kREl\nw+PAjgYhWtOxwTOcwZg43OaqaU3qywLMnbQdjfJhmHCks5Q2u0f37htAxPD1\nCGqO0OARwpJ0xgkBsP6Tkfe8a3NJTlIy6i9OReKOm4S5gTZyOO+qxvYRrsXe\nje8Ldzmaww8ACrfvuIz6Q32BPQP9mfVoF7p28IPbFJFQXMQJl5gc+2s9mblf\nUyxrySPOPpUu4zwnIZ+CPT3IaI5DEkoHtruS8xJ6tU00LtzBz+Qs6Py/+KvM\nsBEg\r\n=dmoh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-35cf64-kf76g0xi_1600369128275_0.6796291067936819","host":"s3://npm-registry-packages"}},"1.2.0-feature-aefb9b-kf76zmaz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-aefb9b-kf76zmaz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-aefb9b-kf76zmaz","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b58a111306828e8d7a04ccc2b9bcf74b05f1e506","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-aefb9b-kf76zmaz.tgz","fileCount":304,"integrity":"sha512-OKWRek8Kai2r50WzeBVkBCFMWaDb3KwLcIAAUyo3XNBFXC+W64sGpxERDqg2lMQheJwmWdFg8jWebgisoz1daQ==","signatures":[{"sig":"MEUCIQCDILaljRW4fgPcnimCygKmEoW/Bm16fTaI8o5WOmDbhQIgKm0dp+0InPrDroAK3dIZoe1wRqk4BSt5igUKTDprJ14=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY7V9CRA9TVsSAnZWagAA8goP/jjy/1Oqwc/qO32A7sOX\nHHwCzeMJpyjPmmbPu7d8s/QluGhAFB6HysZuObRMIrySZFNC/mXNl/kgTeHC\naL8RpWgLOLsaY/vI3b+lEklDHhyXQzzPFandxaFVQsdcB2dPSUzsgQDsIDLu\nbm0rmdUdTjUyRHlZrBqw7VDlhaMpD8JtzRL/F/8k70h7BKlW+GmxcIhJLp2p\nvtBAO2kBXEnSFoYtlMUde6VqxWbuhDIrUPlpxrESHQdaYOhtoB5vXbzaaPUo\nO/EjNWIQpUFcSW867P35oVZyD4umCTxn+9P1SYdFtWo4jGOK0H/NRXlEiLU0\n2g/8B4YYWUY/nxfYyJIOt6JeHIgieTNBTnRIknnjeCn7lF5GpjCgoO8/d88n\nhmgz0bsjUOqffHkSsJXUBhFg1LSXKOEKnCNw1Dzmxf2r36bTJ92+6NTNfe/w\n76d7rBdE/X43omS/tV0XMaYPN7rIikTBsHoNBnP6EmXuW42oEaV29qiDi88V\nYdsuwagCM+SDj2cITbNozUGR8D9Pvyvu0RMXtf7wBpA7xzr3sP3m1rlcsaRS\nd9iF8bqJXJxcIoTxizu5u2QgW36lER3yHqJbjRZVd9cNzvy4eObEnXbzdEDg\nWm14tSi3081A27ul2J5HZ4xWLbQOboUiloSaUXR+mql+TBYz+YUgHgsswMtk\niCSW\r\n=JYzj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-aefb9b-kf76zmaz_1600370044661_0.8994774043731006","host":"s3://npm-registry-packages"}},"1.2.0-alpha.6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.6","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"eada4be15ca049710686b7abfa0396e2d2c199b6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.6.tgz","fileCount":304,"integrity":"sha512-Otrjfdv6HSjOiaRuEaJXvY5mYi+9x3CEEIaIdjF0LHyMFXpenDoMZUB8/SiCRwviiILht0DJReKUsthhDYE4Hw==","signatures":[{"sig":"MEQCIB9fLbRKaBv73nArUY+yU+E7UNVBfSnbq/IMbQo/LSbxAiAhSTcXq9EW7MGPhf7k82yMwm0xoHyE9v5UReLonC/v6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502319,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZIzuCRA9TVsSAnZWagAAjBwP/0Yxg0zks/1gRkOUfYyO\nDOzHa+ZcPpo3vTcQVFVa51bWuetBuo/ndZ35SVF8zZuVUBr7bcOw3CXzViGm\nOYGAbDnwF2iYW+pXH5KPjcBxJfTDNJ+MB/wKB5b4mMevEluJ2S6wZuWrR5Ro\nTQFVpXp0Ua+Y4Iy2TLsBbl0gXnK592rhF887IspMcLHCxGtuqZ46D2BDfI0o\nKGj2BUtYNHPco/YsDcS6MhmUlNqherwl2rxMIR2rYycbAow7ahj/FOtUygJL\nB6gttETx7rTk6J5iwKhEQkGjZc5izFcdp0701LNW/beVZMCTDiQwD2beV5Yr\nrRlHzAxPPe6BAiGOZuh2v9Qdq9FwLAmcJbJfFwju1tI04uDCTv0fGTSmB0DR\nvzl7aIESQDQWxRW3334xoiVd1uz3gA4CTQ9mHMyHWYr1u3DbFZ+7PY25187Y\nzq029ZbR245ER9msIgPaGqPrMsirvgjAqAToF1bsLox1OATz7XeleHYZr8bk\nEM86yDMfYKFYW6gDttWyClBkioG/i8DLmB9534E4pnnVOFOpKRjTVr1BtvcD\n9CeD0ow+4W0155KisXrD2rfx7tY673J5T+fc1+OtOq0YoRklpg8nwhE83Ntk\n4+jOdvjmZ/nJdFcHbM965M+72pFGRqjxXcGgm8MtQj8myojcp/K2QTvhxFd6\naaHu\r\n=Pdmy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.6_1600425198227_0.24234567123061956","host":"s3://npm-registry-packages"}},"1.2.0-feature-93b007-kfcby693":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-93b007-kfcby693","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-93b007-kfcby693","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"83d9e5c43ee4c53f6372150ca41ca52e55f74517","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-93b007-kfcby693.tgz","fileCount":304,"integrity":"sha512-waPBFihlq8OC6DfDz7n5HLtoI4nD9eXHDoukjjJhJhF+if+AmIlF7+ZWuEaceuuC+BHuXplmw5KefLx63p6Nyw==","signatures":[{"sig":"MEUCIFQ3A+OFEqb9HgEHnSbEvCdIIqc2zN4mo3qZCFibu3xsAiEA+jGX0n86K9j+YlAB+5EsjJCJSPgmqRV94oRK1AKFFVE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501240,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaHMCCRA9TVsSAnZWagAA7iMP/19cKeNqxLakFgoQ9FSz\nQlQt9tXFg9Bzb9c1mxQdJVDmc1qdmI0D7U2XgKxGYyk5+aDoY/wKbkQK4lDm\nmXnlx6GIDZVrxYkBCax3eqAkfpdLfYAKs1nzy58JoNrAnD+/ffbYFHex3jUc\nDoyb8TWdv+eAsrMbanvxLq+wZZpF5xB3V6gbBIeo0AKk6duohUTmuKKkvJOk\nj3UiWNMfIGDRrKkOP6lrn1DerYxMO/Gz+SRU3a5KQ5maVElFGCUfpwZ5T687\nqe/3ROO8kqTmQBKoKTczYEKpqyqSgniZdUO2ClyRnW6cKUKK97khVkt4l7pU\nDbMmvqW+zCuM0mjil+Oa/RSBZ/D1FGSn5Dmue+Jk02ft0o6xWQbIa+2CSMRa\nL6SW4kxfP77KMCsuAlyu/tjKo1ExmGZMkWcFMaKAaDIxL4rkGa26qXdkr3PV\npwk9AiDcX5/ldeDZNOu8YWiy2xqkO+a8aAWGhITuGl3iHnVRZ5H10QkF+tMV\nZGOcq+aV9sko7dlAZvVEP9xhY+YPvtHb5NXFlqKB6YlWiluovs9PcUgKyJea\nnxD+A1BEKRIJwABJOMrtLF07WJGJ+Pbhf0PzkuR1+WUk01HVPGhPHghZjrML\nfBONtj874CRYorMuM0XcLSOjorObXS7/hCfRt3/m4PRHTK0KqxJN66TfQ4fe\nndyo\r\n=haCl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-93b007-kfcby693_1600680705536_0.05377004963385623","host":"s3://npm-registry-packages"}},"1.2.0-feature-7efb76-kfcd9emj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-7efb76-kfcd9emj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-7efb76-kfcd9emj","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2bfdaae33805df50dc69c5f8969d78e3e94140b0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-7efb76-kfcd9emj.tgz","fileCount":304,"integrity":"sha512-EQW3UIq1QU3t/RpJW2E9Qy3+XJ6pIuuv3LFVcXZmTf9gpJWdRImfA4DssVMW/3I+iSoCyXwgeZWsnB4LzirlvA==","signatures":[{"sig":"MEUCIQDS/Hqqr13X3HYNZcd2QAL3MJwzw56FzJMyOPdGpeYpcAIgDToa+V+zxKt73hcWZpT7sDo8nsg8EJSnXmNZtw5i6Rg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaHugCRA9TVsSAnZWagAAzyEQAIk3STAS+zVo/uimI5ga\nJhWdPCULq+aHvJJWNrmAjHxapJ2I914FneZag+R5dOy9lTUyDPS/ctK+0XFd\nGq0OFTImoMCm6SBLwqxGjWQzNIXjvDAdTALu/NZfs7WOXl/LaToFSpwsQLMP\nqwpDVbF4VrrOQ6gkBayMG8gCLZLqP4Zb7KWoJqjQqI2FmaDzzX5h6fbMkwpD\nfUKKRvAqvPHBf0otY2GHGFvmUpR8Sis00cOZ2BJbAU+y/8xKPbiqLotFdW2R\nB5qpN1YhXc2xs9WzlPeEX2tESZ8nSZFRcI5UFFbe+m2EFQFH0C+1WhCGegcF\niZIfyhLdB1zflNqVapoH9gQOYSoUgl5TidauqDFk4comZUhOomt9meHPnL/5\nf/CXm6ZFwNctRtDcRuOFid4SSTnmGrRRLDxOCzCf4YBwqKGqjW3xgdkQHmt0\n8AptGBdwkFBtkeDGsj32rvrKKIhxfGvZsAujpEinWR8xvYVzn3GBvaUUyoIN\nHiYDkG4seZnf0GpI+jGK0BOMhAdHA3dzj0LYou6OBSfaDE8k+IbW1FC9dwGe\npHHWPMQCiEwaX0j/lPpY2CEpSdicq1Mccx1OB+yPYcpwZ3CAljdCdC+3znpP\nbSCvpJz3Mnfqvx6bcptftLasmH8YJcmODKbSYEEEqboUVkHTYfK6mm4ZjPSr\nP8rG\r\n=S0bY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-7efb76-kfcd9emj_1600682911934_0.05436242427265481","host":"s3://npm-registry-packages"}},"1.2.0-feature-7efb76-kfcdfy3e":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-7efb76-kfcdfy3e","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-7efb76-kfcdfy3e","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3fdeaf9dd2b6d92b7c321cf3a4ae032f2df995a5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-7efb76-kfcdfy3e.tgz","fileCount":304,"integrity":"sha512-V7wX7Apn2gI7760xJ52P1hMg3aS4jey9qG2DYhMcstJYYM+mpLyMeuQIct1W95p4VaHzfBjc/fPIEGiFbQPySw==","signatures":[{"sig":"MEUCIBZRu+xXwzuM+kGspt69CEB7x7Om36rQJZqkqqYfqXdjAiEAjFu0EiaBUzk6qgSDtkFgKtj4kXmfWn/+KYe8mvAItvY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaHzPCRA9TVsSAnZWagAAb2wP+wSdwD225F7jkEAxJKOn\nqGRuls5Y1dX0J5ov1DsdDAjc/s/ljBIswzD97v16M8VQBfi7WGOoe0xqTJom\nijoSeY26UYogwNYRbDjd1h3HjIQORBVvWHCHgILzDE9Fmt3tsureKSN/bFSc\niWbB9VI9dSzpeXr+OJ7jIukMK+L4jrmmtsZo/Lh7HMp69n3V4qOyBO3NDmzV\nEmtM4xnpgl82G6qstiX9RZtP8cKuQtRkiDfbtLm2kDOkTpuGVffjwEBFthPy\n3eUb85QD6evhSqMOgk+N39xt76Ts8Kc/D3/JlEZmmvunEJ++B3fHs0W3B5XH\nWE5y/9vrOUdiTNbUjtBSYJOB6FiP+4vxXl8YOBPHGQJUDU3QpOh4qNApx/4E\nMHHO4reRA+FN2vH2Mxlh64rY4Y8cUrhGsKrfsSpX/QcdVWFka5BRiALSZqlV\nXmXA5s1AJsqH6trcKDOvOIbCUA+m4o/9zRqH6ZnMhaLcQbF4MkSEMrnR5BZf\nNwyuzMk2YotV92jmYd3thoUisad4lCopxUhZYmOxof9RKjuttpQZ7m1aRAcM\n4+w1Qb3SjTIDnXtMUfZkXpfSD+1ze0UpknA2hDaKqYAvz/vx7tnFwMAk8B8z\nH2f7a0AeYE/1VBaRmacer0/C04HM1bGaSueR/7PKPsrbbt9uM7erq99O+JfZ\nALSl\r\n=6YEa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-7efb76-kfcdfy3e_1600683215239_0.37466537859335647","host":"s3://npm-registry-packages"}},"1.2.0-feature-849b5e-kfce0bnq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-849b5e-kfce0bnq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-849b5e-kfce0bnq","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"638ec50970548490a7d5666949d3d8a4afea281c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-849b5e-kfce0bnq.tgz","fileCount":304,"integrity":"sha512-/l1B12nK4A+ys25gNx3hCaDuOt78QoVTpsvDRulHUTAPRZxG2rUa85ZUhuK4b9//3TkiEXiTC/zIfBIPuq5U+A==","signatures":[{"sig":"MEUCIQDT22Wt4WMndSY+NMGV0Nm+1jrfcGWN6fkZ40kcl/N/qgIgZTfHJ0+9vZLwoZg9RAQpMMKwQ2/nsWLFJZY2BZm2cic=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaICDCRA9TVsSAnZWagAAPvIP/0SfyLbZqWvL7pV+TDOT\nPyZvSEpR+h5m2TtyDxM3Vblv4hIaOJyijFunSTkrAZmaAchw7kiz0bl1I36c\nQGOPA8ucxSuwkEVusLkAUTM2vDMXvVYlC3fsU5noyTFjciUj7HyKLBoScglV\nUbAFgqa4Debh34F85Fpf+2JWmbNh6vDi4jiMeG90x9zM/L+285clC4XbJaiU\nZ7RSk3jgTUdutr79TKc/zD6UZbu7kTpO3DT29kLJuyhIYs/NmQ5X2TpdxqRe\nPDErX705ULZAT8hb9QL71wRJaXFj0d4vIjs8wDYC5B4Tik2AJr0Am200sfUv\nREuL92nuWG3QAg8lFN8w5+UnsFQZlR6ICJVMoti7Jn6AyFXUnUIL51MVWUgO\nvDWeZnQE2HwCUzRE5yVkNJfSiXZrnvqa+sjXIwRk4KR/zaIT39EKy/mzkf9q\nt4jA6p4pxlSVFF0line+e4K5OV6qy1Ffw+D6VLcrECgytPBGhs1/QmgQqG3P\nZiewTj9DVxMaIKaAWPepnRyCmk73R/+MoI5TAevzLyy+w00Ss2MvNXzeWb45\nge6CSn9EdjooyCPH3K3PFfMVC0N4Ctkqr9h8Mj1epFZLuKETKWSsGG2sUGTU\n28o+U1Id3kg4jK5MZdSxLdHatpXC4Uu56ENu9cDEmPSI0uRIZ28QQ62etY1d\nqyCN\r\n=LFwa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-849b5e-kfce0bnq_1600684162851_0.8713885119344591","host":"s3://npm-registry-packages"}},"1.2.0-feature-b7df4e-kfcigvu3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-b7df4e-kfcigvu3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-b7df4e-kfcigvu3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0988fe6d3299cceb471ddb75dabfc0756c6a4d92","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-b7df4e-kfcigvu3.tgz","fileCount":304,"integrity":"sha512-b6VIAu+f3KGyCQX5Tw+aY1LOjCT06XkzvcmbX+6KQS2ncJBX3QN2wNkjloR9bZDKNpJEF/oYgMD9xwjTT3j3cg==","signatures":[{"sig":"MEYCIQDNZZRAYUtGCDGDLjfhqsOrZmIlbaY0CraBcsV4QnnHygIhANna/AZjDB2MzE1Dr+20UGnI1qefESCl1HxxBYkJhCX0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaJ3HCRA9TVsSAnZWagAA+JIP+wZKs/DbaPhMXF44CVsI\nygh++JUSulqMpgr9zUAB3Yk45y7S0H0c9Z1+KB4GHTC2YiUY+827U0ard4eW\nb8bbO5svAKC6Zav/iH6p34KqXJS8Tl87k8lQFdOhOBCInLW4uuYj3S7R/BuA\nZT/Yn+KYkZKG+E1xGbQCEf2+GojUEAqzzA59A2D8nEak9S1TMLLY84ICcJH6\naNHn9F6YIafHopXTqf/8UOqpiLh0iMhB1Za9EMIcG1baB+6WF86Utl97BySZ\ngxOflf/ADnDCCKeQRgi9nnAw+evlGzL1+ZySLEthebFrynFEckabNXjcE0+X\nRaPiviYqbO7mArrgwCQzP4J5HRkutvwYq6rYchwbjjASsayk1Or9KZP7DvJM\nPq3q8ky8+esrB9pGh0nGMaa6c3T4xabVu3QarqVr22IQAYXQ/XiV3ZftXtIy\n5l1LM2LKZUb+drcyVKXevpSiMFQ9eKH1CGsgTojTGN7ctA/VbMi5NAAVNWaj\nI5ZnaJxJiWfenyQz2HdXWMI2ov3e4sbQJKKk1vWsjbs8H0Z3DACAveAQACzp\nipyICxzwf9l/B5pu4kwbkM3zVwKIC5Iu+FH9VdgwUrgquoCTfM5ebhXKKCi5\njbkT1CwOMA23E7rLJbbY+2B6JoMH51OvNuEPLZMWx7s+RO/4kNzpRAt/LM99\nH/Ov\r\n=8KwW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-b7df4e-kfcigvu3_1600691654794_0.319407880861335","host":"s3://npm-registry-packages"}},"1.2.0-feature-d8aaa4-kfcimuew":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-d8aaa4-kfcimuew","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-d8aaa4-kfcimuew","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"964a4d227f52297fc1344dc0ed4f42be4ca94f43","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-d8aaa4-kfcimuew.tgz","fileCount":304,"integrity":"sha512-cmWSE52JE717syU9h6xKul/Q4iWGok2dOKOxS0i+uisXivrS7lbojchm7KZKZb/EveznPfj3ufJg1JInMaRKYw==","signatures":[{"sig":"MEYCIQDjfWJZY5JInsttI3DKEwHTcoD7FfFjnXwIYmTXN9kyoQIhALqlJEJJ/Qj1XugLYx+xwpeuItX25YnqFeuOPbvEKyLU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaJ7hCRA9TVsSAnZWagAAiyUQAJI7YdY8oPly0VKKw1Xa\nW6Ftu7uTMxmF0UbV9HaCFZrYYVF8+SDirw7OjthhIuWf485aV2Wp3zafW48m\nB89QwRNv9MqLT4zBWEpLCMnxCPx6pws4QWo2+5+dtsI0GzHseQ2wdtLeheos\nAprK5KcbeUo3u21hl9EYGr7gg2rYwh8e127BiP0gaLmlOzrZNeQEl5O+mGOe\ndxy63wM5ig+r7GsqXr2fXoVY36dbVD4+EigRkX7EacMcjkvQWnhv4mMZmAa0\nwpQvQ25U7iKJR6IVvav+/v55x5OnvTG4Ybss3uylypRmc6wIJ3TgR7Yp8HR6\nDMe7fP80lGX03v9+Jr2M6O3NJW4FtIBDBsdbi7V5L6jlVu2r1J/E4UU9S2eY\nRsqye1KIfVTbwjncrWYQHsaLCs4sDg0nZsGp930o44ZvIm337xC/BRpdZpmy\nKMgFVIjc87ATTxk5GbrqLc+EU5NgEBApK68a7CS5EvDqHzUniPlqGBbU6qrb\nEjQNVbbpaPbDqRmvk9jesAmo54Kt795ngxCFEjDvtsg6JP8Ym4ZazWnw1lZe\n/Vh+G+eqBy0hZokTjsXNf/mIad0cPepRry33+MpN1NFjxNUg2G9d50GXOpZN\nh6qM5KjJ6oesEOmRiRs99vFM8hlP7qPLHQMjflpKQuA8gF8GOvlpbRt90+lc\n+npv\r\n=oTdI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-d8aaa4-kfcimuew_1600691936801_0.5290539093723388","host":"s3://npm-registry-packages"}},"1.2.0-feature-9a6f5a-kfckt4i3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-9a6f5a-kfckt4i3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-9a6f5a-kfckt4i3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b8bc900acca2460ff90b951a70af5fcfc8623bdb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-9a6f5a-kfckt4i3.tgz","fileCount":304,"integrity":"sha512-2rMVCwLXWE2hBz6GI5YEZ12d6ya6rVng59iG5IHYAMPxSF/vrYUWRtyvSUdaRt+BpKi/yB+DHHUbhVEvcQ/UBQ==","signatures":[{"sig":"MEUCIQCtbhDDo3SxBcDQXthkVmQnaFy3lMOBXJ64h7PrUnKq2gIgIF4B9LIWTVL11J8ZC1OqnldNwX5i6ZCktihEJKgnhFg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaK0iCRA9TVsSAnZWagAA2QkP/j7/unPCx/K4gKqM9nbD\n3FoYgNqHuLR4po1DArP0JnrhTHP/iaY0mSVATc3RrWrdasgV4iEV1rGZAx7e\nnYA7A0bnfl2krLlXGhsu6sMf14ECHqyN5T61YZHDA6LYJbABV8ZdBC+5QvCt\nde6a/JM7BDMGG2xuWdQNzj3hsKbi1c1OOo0UnIYYFPBqAieMu75iU4LH2KL4\n7kxSUU8QrCcCUusQdlcBtKcXwK0NWpng9D3NF79fW9D0v22p6l+23FlZ9v+X\ncvwBWiQt3zvZLPbg3LGf21bHLJo9i+mQs6aP2Arm7DgJQ/j21S9ChhsFl3sk\niclt6mqWCgpGDx5K4LSbJBWvkvNy432v3FFsJdSrRhheP7dMJwI7a3ggbqWJ\naLHtdeLHAIbAYHlf6uUxGKqfBHM4agBAY5k7Xr/qEnSZm8dzopCCGnUMDOcw\njOaY7xix3hDdzym54YMxU03OGQeVAavAbxQJLpPpS1FstXjPwSzRvvNHCWpS\nN3Rp9mSlTmlw50DIhOJChOYmRPcn08Z28G+qH5G9PtiW9kDSu/GPFL7Xc19S\nmxHEt2blXDhFTMuU0bTjBlA18pB3A2S9m3XTUJCDo9zQj6imHdOziFQOb/Ti\nuawypBqpzrdTkFkVKpAeGas+pFtLydrpfxbSlZzF5hyDHMfgeYjWl4Iaqep4\nHZYN\r\n=euPS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-9a6f5a-kfckt4i3_1600695586057_0.19306761350717094","host":"s3://npm-registry-packages"}},"1.2.0-feature-2b5fa4-kfckwpkn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-2b5fa4-kfckwpkn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-2b5fa4-kfckwpkn","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"51ef2e300df5a32e4383fd1a0cdc0b40554222c5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-2b5fa4-kfckwpkn.tgz","fileCount":304,"integrity":"sha512-c+q4td4Sr6V8Omn9P769f/5f8SRp1zC0j3dIwkRjDuzf6NGxOPrL7lsAld476HF/lp85XcMC+6YpYObjA5QaXQ==","signatures":[{"sig":"MEQCIDcvy+UZ+MfrJ3IhyRyIajvrqti4dSx9u2SYVEPOA9CcAiAfYbDPdaqecw5Y0IebWeRqkMGQakX1+tss1jTEpKxYCw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaK3JCRA9TVsSAnZWagAAD30P+wY1jyeL+4JFMRAYM8lq\nMhhA48qjHrk72Dl+4gUhBy4aXhvM6E45z8pjKG5onE997AuopOiDL0tIeyi0\nqVuL+Z4uLJiYV/sXbjJidsuCiKdAH5siT8e8aW0snSGEiAr/XPwgFoi/PETV\nuIguniyEDDd/H4zYo7OSeF8YDBwa4K4BX09Cs6avO4vMneqdeC1D11JR5tX2\neYTGBsIbnhuys2DKI3jL4o0wqLQC4VplbXAmzXLmgdAgfx/8+XeTuEzi2tYU\nS3k0lWnC/Eud0fwJ5nzDJM4q/i1u5mVaDWvoQ3nknUQsWwuQeRx8Jzh0vg20\nWHCUM38/mukod7nrxwhTQRChmmaArquJVTGzQIX4KBZC3dfCdc0+/V0MaIZC\nK2o8nrU/hCtYVhEtlVeeL26rXS0iO3onDw3ZXtfQgivUHYnSDFb389roEpBO\nSU0P2edEPg5qmQ6ol0wRZBCyvfhfNa5wxSGEUa1oS0r4dBXBH241NapYLATp\nj+H+xjhu5Cmja4SDmDjOkDmW23Z3WmWgd+cprX5Bk5uZSzkX5TtvKevpOCZQ\n/pXMvVhJkNZxfvXqQ5KiSe/pP8Wd0ZS00M3nDOZiTqCUv5LnEWjMYHBw89Tk\nJNNKqEyyJBMMUy+kZ09wR+TmAdGMlio6DuVQ8gSq+OWmJ1O22LD7+SiF40vc\nkxkN\r\n=/ptD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-2b5fa4-kfckwpkn_1600695752807_0.4868657121959783","host":"s3://npm-registry-packages"}},"1.2.0-feature-9a6f5a-kfckzbfv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-9a6f5a-kfckzbfv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-9a6f5a-kfckzbfv","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"bdc37ed8a1106088a7bac740a593ed80f015c98e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-9a6f5a-kfckzbfv.tgz","fileCount":304,"integrity":"sha512-tvgSSPGhqMdzhJC6G4rF5FlsQtdNMvoGmU5jeFbrLzGDimCG0vll8CL57yaI+tiIiXFmPnzewjzt9U2y3O5gNA==","signatures":[{"sig":"MEQCIHgSoUg3YCCqzAXq/95Uo36jOQOeoP6ZqougmKxBBN+3AiA/b0ujCfoGHviELwVGLxKWzFXrQOYyR0lGfDTonrjmUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaK5GCRA9TVsSAnZWagAAw3QP/2IPtkmBoQ07sjVYW0E8\n9P8jn7jMeE0jHP0SCBZjcTV/30KfcQIrJHT/3rKz8HEsh3Nm7NIgWcgYvlaN\nCESEQnWLhIfSNjtSIifLj5ei0iAvmdO2qp4V4rHppFXaHXDlsObjN6eQ4yRt\nFrgHXjYxWIvMot2EbPBk0vCwE/IMEegmpyf2Vvqh0U5Mucvwki6AvmgII8rG\nfq2rGrVz9jWBcUvr68h4vHRVF/BRtvM2x7LAuxe4p19PUhBUSCk7AyXZCTIw\n5LuXp0NBl7z/ek/Us68C7wBQH2tmg5AErEOM1XDoDDUtCU9b1+6/WpjwKMkY\nLlFVWqGEbTTt5kGZMRd7zylya048quo7znGZ0gpedcuwYsET2wdTG2IAV28c\n4MLechnGxQCnIDT3UXrW4Q2+o13iMwj6dTRuNHaGtSDLMljqi2Z/dfBIn/29\n+Wq8GkfitBghoudvMyfuBAl9jj4R4ucwlZWZR1ZG41qQoqg7an4PNjyS8T4g\nchXlo6h24EnuJT7cneeoJ8PjrXBNdstg7XKyZNbgiyWXDDhSPE9lsFWodtL7\nM9DGwBdg9Hdh9PVZdB7pKTCrUs2HFOj7ZOco44GHvPG4BDnyHXKLkvjE4zwf\nTVgoRUU+k50q4J3Qs+rTxe3s7cOIAZy/s6vnTPOp9lzf7h3hRAHAEiX+mej4\n2gVx\r\n=h3Fl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-9a6f5a-kfckzbfv_1600695878080_0.6642292887633956","host":"s3://npm-registry-packages"}},"1.2.0-feature-9a6f5a-kfcl56pb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-9a6f5a-kfcl56pb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-9a6f5a-kfcl56pb","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0c49e15f0779385000ebde5fbaa04cf96b6c42d8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-9a6f5a-kfcl56pb.tgz","fileCount":304,"integrity":"sha512-tLkioeHoFwo+/ntqy+g3g1syKPgXW/t65gXwMNPOZNKrSPD+si0OOni8V9E6a1Rug4RZJVs8u+kvU/xba/z66w==","signatures":[{"sig":"MEUCIQDi3cDlEA6rC0bSoyOIQvkTlyDzLJjenE7u+qm3CvpdWgIgdSifQfLNDv19Ee2MT4U7YFPvE8cbLoki6GCkmeEI6OI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1503910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaK9XCRA9TVsSAnZWagAA14oP/3mAf6yVIv3Io2PYgA+v\nStiVc3GVASlZsgpX/T5AOhZopz0qChrGqr57IZiCdoHqD0cIxGykqxBcYuYw\nMV6X1ZcqZ6/emu59gfUwIPHqNDCfWb//Wa6iterpl8JNnl0AHxVkERpJJB/d\nQ9JaV+THGe7KO1xWbGndRk3oHBYj3InPk6vWlUKGMstzBCh2DwH2FLUh+uW4\nonM44V56yA/oEtK2iYRN7JMhR+gThdbAFiHW863V+padtTxIVgMfl1KohpXi\n0+OXpeOeCsxQRZB3RLjFgoUQKM1Wm2ILbGX3jEXe/MUVMmSP7gUvKkUVgE9m\n8qSNwGDm8ulu41ig/OKzowq5YqGj07GvL244JPjFmj6C/uKWuYpCuYoYmOTd\nGZRxzB0OasAXV/eC8fPWkvhAr9Ca3arfgWiFVhOsPfGVl302AfMZG2spcOAS\nekm3ILdznLVvz2Q7cToUw9Sq/MwnCL12CBG6vt5YKtEf4MvkAf1jHXqTpRmC\nsT9D5bk+GRPpIhQELZNjt0x6zB6+I/DAcc7pdipeBHo2dp1zQWwGbKQ0WgdB\naH6/m7zBZvGqT8c/28hTOi+mpDegvz49G3ae/Ecd0wVeOICa2+gAljoG0Yjo\nsoEqWXsixxcL1kYfJgqn049YRr1AJaojEH0I/msKQHWvTWRj2GmSBLfi064U\n3PQv\r\n=two0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-9a6f5a-kfcl56pb_1600696150855_0.22171195981032676","host":"s3://npm-registry-packages"}},"1.2.0-feature-2b5fa4-kfclm81n":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-2b5fa4-kfclm81n","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-2b5fa4-kfclm81n","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"08306130f9a8afc809685a3e7d306168d409ed87","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-2b5fa4-kfclm81n.tgz","fileCount":304,"integrity":"sha512-TFAKbddPNZE6I5R1X3tzseN4zOC8boDC4KJ/LgK2znbKBB3kL5ODIF7TIi5N6k80lea2aOIhCxlZ7A2R05XLng==","signatures":[{"sig":"MEUCIQCmtCvoT1eGLVH4v47bktLrv/yTd9pMObYuX/zkEOVkiAIgFe5eo6aFdLJtRF/TSdw3R1c3tu4Kn+/WjwqxJFT1YAs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaLJyCRA9TVsSAnZWagAAdpAP/28Cr/yB6IwZOl3xrkdA\nRduUwak+izWPk7uXFiNjmdZDIKA74ou3wFGVHRJLpiLa+SbuDVdz0tBh774p\nj48pouHXo4tBUzjL85ZEugy9W4ddD5AQC3jSKB5wdlNNtB8EAz64gM/Dhxmu\nshODBfqHufhrUgqZuKL5BaNYu0ns89g0vls+Byu1iOBQ5Oad+1D+zzJthX2U\ntGK7IVIpD1iKWB6QtJEgi+E1EsCiIEyRx7KVIMVAw3IP1irbGWcmi1YsK/w9\ndj7Rxsf/g3VDva+OodVdtTvqLnIonRmG98EkCwSXsDQ/Io7Oc+1NVQ4Ep7bX\n51kHqOX4Klrl4lKzgrJ3GEq0b0jz749oTnApyNvjiL7BNR6zU5XMdGxyo2pe\njbS1P4piWex41I82q9GJ8eIVDyeuqqB76Qx1bfMHLlorzuVyDRG47E2pikli\nGrZuMhbTQ5azWw9KIcPekFqCV4ZKFFL7jAwG+rp9j98TRGscWHM8payuljTe\n4kxbdtsS/YhJBfDnV8vXB4ZYXguJoB+JKggvKbZ3mdfC5E66XtacIliH1De1\nOENKlnKdIBZmxLHH6LJ7DJgrpzFF0n+1uG0GfCphfTa54vmL00c2GsjiBF1X\nkwWPZKcK4RkfOj+wVzlK2OAB1asGwmgNR6GuhQ4hz4zlhfcTf2jcfW4q1+bO\nQkMt\r\n=V9UN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-2b5fa4-kfclm81n_1600696945992_0.7571742326954687","host":"s3://npm-registry-packages"}},"1.2.0-feature-92c15b-kfe34q3i":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-92c15b-kfe34q3i","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-92c15b-kfe34q3i","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"042857b1320a0ec03baef41849177eecf6d75bc3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-92c15b-kfe34q3i.tgz","fileCount":304,"integrity":"sha512-CtjgZDyhMLAR/mGpvCRaZ73hmF3a9uLuYZi8AcTnFh0ClHRUhLZqxTkLjk0tlFUmsc1IrByWfaDMwuzuMmv6lA==","signatures":[{"sig":"MEQCIGd2kJRKqqsEyOGbHf96HqEyJ3lpAeP7oTMkU2nt7d4kAiATm38Pc8TFu+zkptEWM4xIEmvREqnsgmPvd3OLeNupvQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1494815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfahGMCRA9TVsSAnZWagAAdwcP/jpuAhk8PFKfvDIBnEvh\nAs+Rzz8YK8B+/Uv56/qr0BttxMoLBhFNgB+31YkCKNinmi0e/4BkmbudVkiJ\n43/QpLkEh9dHu93H/UpV/kkX04aebpy+QgVRjFpF68ozW6x03pOibColNWSz\nCVwKtqPf4wjL7yxliWZ8eYBbxzjUOzedttQ/J3tgCsD5Il0oxZ6y+cmfAltx\nb/fsuNTGTjRHcw+DKhjZQZX/Al3qJecuH4z5JagCMVMwy98TCvRtKWW4zNE3\nZi45LQlTQQ4MTjwv6uDbhQc1YghL6B8uxD24feckLw1AYJzSprPGivihgw1D\ny4pjlWUloaUjXl42UuwI6lmyakhP9y+MOwo3EQmiJI9fxsCDkOnwDwQjhUAz\na3Mg5FWlV4wIw6CPDfCicov8X1Neh0rhsQ9RhtH3HLSVM2oRPxbmLH+PZ46R\nlCU7qZCl3kwGqbLL3omAa7ekaIhK7uphVG/aclddh2Jt7+Y4N7PF290UVKGi\nEhcat3zO9cy1ZhDBn1a2bZkdtg6cs6a4Pfb140NQjOBNrSQAdH/FzCFkhiUm\n0lNo5SB1S4IXD100C16xdrnL6IuyF5iNkGlifrgIE5ZQJNIQZCGMfeYC787V\nw7DqE2JvtgPXh76/fEIK4iT0PeQ230rmeYKUoFp7zQAUGav7ZwuNfrv7N0bl\nW1wO\r\n=MZJX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-92c15b-kfe34q3i_1600786827556_0.21812284540464755","host":"s3://npm-registry-packages"}},"1.2.0-feature-92c15b-kfe3chg6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-92c15b-kfe3chg6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-92c15b-kfe3chg6","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ab3c314ea9e07cdf8250087a01ae80b116f2a0d2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-92c15b-kfe3chg6.tgz","fileCount":304,"integrity":"sha512-XawhkQp+FdOaUOIv5Bga34E9YxgULbw/ZohMr4lq8Hake2hPfoGkQgBvT5z+sCXYdD1MKPHrH/Vi9yg5CjH9rw==","signatures":[{"sig":"MEQCIC+QbN+8f6C4P/pBNITUpeb+09v24C6ym8LU8gnXiY6jAiBtY8XVnW2N+1tQyG1/DhIkZjNV9gjTOzI99U/QZvyxNg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1494815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfahL3CRA9TVsSAnZWagAA2OcQAIqU00H4IRc1AsvdIkk5\nG3Estma859EWVebrh6E86ch6eqI2RDi+Diz6LRdk7i+JuHllhtyZDCY4saZZ\nBu8RkhXraTtt/DAgzRblFM/D8tWo0cV7tM8SurhWy9WPasRq6A+PODU3PrSa\nrMcCd/2jBinNOOPG5/rb+ejigDwy8BGCjzIVycPKLKHE+XaF90iARZplv8Pm\nsX5QmuFLnhET5kaeMnnSZdO6GjGL1/9qn7D8p9WW3bEjbODuDIj8gKkRw0Q3\nqHoMo2tG/gnDnh/Ltaqovu4GqzIKVup776n4r/h291cVzJOod0/REjZMYq11\nqDN9VOUBoLCf8oEZQGIn81tvaG2voRR8fusppHyebrDGnlr2DqT57F7KOsPf\nmrddfsLNvYHEwVIZg/HWd69eNYa5YafCDLRY3UwCROb/CFb+mlykUfB3YZNi\nwOv0w96F7kO762KKu4FFKJMJg9pP6dZxQpZT/iDON0hmZSh56uPPev8Q5KwO\nY7ndwfpVqgsloAXnCKLXRNK9ZmSHWZZwRRhPg8uCcXtTv1NuudS2QBLIhs10\nEVciBbIVJmv3smR/f7kjjFI1ZXly4/gFEo+Oy4O7VMiMs51jdxe5cav7neeM\ne+w3EuEidUEd3ViDOPSE6Ydif6dPaUbh0+r/jhQbZDDpuVRfY0NId4hrS6Sl\nbf5G\r\n=xWaP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-92c15b-kfe3chg6_1600787190777_0.7727634699086185","host":"s3://npm-registry-packages"}},"1.2.0-feature-92c15b-kfeycnzs":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-92c15b-kfeycnzs","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-92c15b-kfeycnzs","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"d40f6756e8bd31970de81f294fa68e214c8d0563","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-92c15b-kfeycnzs.tgz","fileCount":304,"integrity":"sha512-NuY24UKKC5jJFanVZgEPMEO9qIpGSy5uH9321y8CG9PxOjQOtXpaXNRsbGXTZ7se8vHpPblq9GP4TM9jFk9Xgw==","signatures":[{"sig":"MEYCIQC5yuT3Fh3ZL/6LaT2/zXnrYo+t/hWy3Ic/WO/gaP/MEwIhALaz9IAjOmUEDhR6DgwOBe8CW4XDACrrty/rXXFinoyB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1494815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfat5kCRA9TVsSAnZWagAAGZUQAIixBAphOoXP11cyloJc\nSB2thKt+MRUtLsNU+kRiZEKvIb9OT9E0ABJuqP5G3HabjnghLsid7We+1R8p\nXKD5qHsbbxmh1gLnL+5g+0iRHm9aWWAAfyTA1kCc6CEGs6I4N0Dj0de6PJZW\neAhK4AY3TT+KKclCB1ZXIKM2cQzSbeKYKsEsID14M7bE7PwUGAX4ftJTValP\nOOd1dS++yjA3zeIutgfIUtJx6elb0KCCLPN5gAjJg3fWqY8JTv08uC/9ydje\nsSahRRObh4Hq+2hca0fnTuZN7XJwfl4/aD5q8Tz7loIc3rmyHV/+eFRXA+jp\n10mwnvzmiKotd5Rux+pS7ZcKX8NIBn7N5JFz+SX46aYVBKsYKzD4Om0rktVo\nuawOcZnfq4r/MBK2g97GPnJ85jeAl8jqAtG/pi/X1m5WUACIn+D0Z1otKCKq\nYonppZ8vSatG49ioQy16Qn/c0xIIkx7ksaG/4tMwOk1N2W/hKIgf9vxvUk2c\no0XP1zXQKtGRR/FX/yXFI3UYYKv2DLSarZvRsdst976gZ+Cnw5ypmRpKpitv\ntQ9OburfWhAbBKR+kiCb1TFSCMDvLaO6QgEvCEY4zAvPluf2Tf82RafXuPF3\nZMN63YnqOEJ+5ywM7CSXd3VAMnihCl/RjpNkkEbqtJYzrYZ6KqBg/9uGqfWc\nRaBz\r\n=l733\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-92c15b-kfeycnzs_1600839267767_0.4045317038138163","host":"s3://npm-registry-packages"}},"1.2.0-feature-a74543-kff1i0eh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-a74543-kff1i0eh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-a74543-kff1i0eh","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9bf9dcb235a34d5c3a7c61d4c56091a0683b930c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-a74543-kff1i0eh.tgz","fileCount":304,"integrity":"sha512-1DM3aXBUT3nLLT7KZjW5gopmYV42KfBR6F//kRgzGAERK/RMpEXi7Eb6Bcpkfk6oPPsWMcKF7pWi3k+I0T53kw==","signatures":[{"sig":"MEUCIFFs2bcHz0XxQh4MlqwN5nlK96mB38MHq2LIqbbG90uZAiEArO6ZkUFiUL1c2lxUhkTMXE3bY3YPDpIgsGl3HgD1i3s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfavMKCRA9TVsSAnZWagAApL4P/0ch+aVfpost6Z6SVw6V\nO0r2TblV7d+yHqq71DnzVZiyuxW3zomqhKn83vUnH+rmLX2pUdmVNF8js0WZ\nyLQIujfbs5z6SgCQjvhbNaSAmMDyl2I8IG33MBsXFXsvpwiVhYmNHn9tYjWW\n9fx34JlaFui3qXdvLcN9JTPrRZCs8NGEUmEGvbYTOcJFhBHri0f/l7aJX8Dg\nLSyCc88DoDls02N5pzOT/rJHMX4SBLqX7dLFNbmaL52nfh0/cEneJ95nlhot\nRoUbtZgmiYTaZ4Mr9QusBsw09H0UMsUqZScmrt/bEs+yEzu7S5b8C3m3C78A\nNyzkxABGlZ7AO8tcvKoOZMeqvt0I1Fr6t4RAbSsLDEKbccXhMO0KNcBlmNhI\nGG2RypUi658yViTL8gCgW7XAzi12tFn0Ny0hv34pb6MLr8GvwDt0whCjYaP3\narjgIWoVNAUezUzrf56VAASwEZecAds9KU1f75JNRzAJL/V3YegLdh9aG9Ry\ntANG22EFikyAl3kiVJQwBqV7y3CQtnxbznmAmanc1Tjq/T8oe5snbbcjzg9k\nKNEHDdTIKX3weA+ueTA/ShFBIzFSvbQfiCBQkPZHq1YsK7p0w6gL8Cyp5UaU\nnDJrOaIQSkR4NQDJdg7Uos4w9s2sDNBZxjevXguN0/1D/ZAO+AmvoIjfTqWF\n8TCS\r\n=NaBv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-a74543-kff1i0eh_1600844553453_0.6580090203004263","host":"s3://npm-registry-packages"}},"1.2.0-feature-808930-kff32r86":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-808930-kff32r86","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-808930-kff32r86","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"28f5aff56a0b8be4591db6194e2208e094402171","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-808930-kff32r86.tgz","fileCount":304,"integrity":"sha512-cHgs18nkzT/EoL5eODdgT1tar/yH8+iNeU6AyqRUf/RerAxXTpH031/umRku7ebQ8EEgv2jgx/Qf1O8nlNt/zg==","signatures":[{"sig":"MEUCIQDOnOsJ8hXi0FP8XEa7Xiv1InFSIDY+4u8AaDAlp+ce1gIgCDqLqN1xp8KDfQIZIrr2tfQ3cwtcVEva25eNXjHKnwk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfav1fCRA9TVsSAnZWagAAee4QAJ6CGmPham8Jk3b1VAIU\nq53e0MGdOH551uGG0VV5B3afJvFtz+X9/vfc8aAwlwwayeV34WfnvksYHdfW\ny4slyEx5vsDZZBRonmvBY5TNFeUrhcnI7NnaxP9hAu5XWrx3BT4XpJdCQarV\nxXT2GKDksZupxH4onMbBdwvtbkbWZNkKsTWD00AREKXQUJufyM/+ye2tOfPK\n68AjkP9MllCfGAQJ1G/cnVF7QxEpMHenaQt6edFLi+6wrtfVpjJMDMRaRfcS\nFza9srIX0tjl+8GmtWCXA/scqxGkWNFteNB81DK+6vgZa+D4Clm9c2gf1mAN\ntko3k+tpqV54/e599Ib+EjjcRlZEvJo3WjKxmOzEy/SvrEVbZRxuBGKWRlSH\nSRJXKBAL7nFfFr92eobvTvboPxGFcv7ntCYKldxPtJ7BkI2UhNX4SPVDA4cD\n94RzAgaUsDPvctUDmMVLIFlY30+GdTpiqXeIWH+fHKg8PhdGOzDXK+CxIQ91\nHMbDbN+vqI4GJtyz7SWo+AurI0/h8Kl0mGBUx1sUfk2oq7/X/DgkVAJTC66c\nLOalaaNueEUfnvubiWsA4/dE8K1X7X9x4SbWBjqazC0VV8PPEAWunox7bemQ\ngRghbBBF2LkXeejwpa13uIkK9ZtYSPIHqvubBuqc3Gaj+Sv71DWUIEeebwnt\nMtFM\r\n=5/Jq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-808930-kff32r86_1600847199278_0.6097171663991714","host":"s3://npm-registry-packages"}},"1.2.0-feature-5c6565-kff3or6r":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-5c6565-kff3or6r","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-5c6565-kff3or6r","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"2f7e28ca53866440e7d1b8b129c954d5226c85df","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-5c6565-kff3or6r.tgz","fileCount":304,"integrity":"sha512-pUtcMi8i9oM7o2886CgvM4AfPTh/ebeBfNQnbVM2r6OVFvS6EJ2wFeWkWDu98LBrDn61edFZC3m55vI/NvWX3g==","signatures":[{"sig":"MEQCICus8b+1NQkq+ryPpT/8HT5glf2AFlbNvkxs1g/i+1EtAiArf8644R5avUk2obUqsR0qQtyucy0majcpxQQd0z5r8A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfawFmCRA9TVsSAnZWagAAHGEP/jsm2EWIa0gMJK43qtV5\nAp9mUONS05/8rMhdXtxQCMo/croOMccy9s+cy1LsWlgn47tZZYopl8ESHCts\n5YBmvjgusFqr/2dqxixgNww9capCjcmzMWBaU963hv53y8y0Ir9p1NMJRc9I\n9crqB2cD5abFrjgGiz7YQ1ZSG6N1UCMhfytuyp/BkyXEvEVWqZd7Ewo24vDc\nP7xh/R9yQi2t1w4ECxy0MU65KemVFkxDph4I38seW81kFhnlVYrv06OLuKXB\nfx8ipVkHilcYnK39lRm9kh+j8h0Okb+d5GGvG/AYt47v/4JFUvnjntjNpXTq\n8dPC6LhILeoLpKAe3cuy6TtV3ssGZkWxNgFWQ2ahjcdWBSpZ1oy49EoK4ghL\naSAXd7O+Fps5Dzq/j8BOAmOcToD7SG/RpqOZjYKY5334ErIwQ1qyg2NKO8z3\nFf+2CzdT51T8tekIKye+odsx5uw2GsCgUgFDCd17qxgje+xHwpEWsIpbwz45\n3rt6IIw0TdKRgvnhA6s6g1RMWP5PF878jZ49WbErST1wcwXoj/ITBWBu6ssr\nHE7b5EE7XTzIxyo2s2uF31RtLslQX4SB8AJfzCQfy6GXuoKBTCCjAg2+mdmB\nm7u7ERZzsdIRYXmrR1KYnsQfpZ/dzZnQlMOzAh26kse0sWEVhvYizbKMf7lk\nno2a\r\n=tb8v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.3","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-5c6565-kff3or6r_1600848229491_0.11281825762318909","host":"s3://npm-registry-packages"}},"1.2.0-feature-983620-kff8obru":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-983620-kff8obru","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-983620-kff8obru","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7a0b2c189b63bcbdbb58bc1d751f81847371dd24","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-983620-kff8obru.tgz","fileCount":304,"integrity":"sha512-zCOX+ecwrIr0V+3OygGgoUJ2gL+bTIIP8IGJ7PDdpqSmTFBCOGhrYZJWRjZFY5GvoKCVvHwLJDXpjSiZy4Hw/A==","signatures":[{"sig":"MEUCIQCmUsM3lp4SRtObaFxTZ8C1j+7nICMY2jfeNgZW/QkjFAIgA0cWCVWTnlXA933Ph4e+BbUUZFjkA9i9NabW11ASEac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1505324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfayIeCRA9TVsSAnZWagAAom8P/2yMrsO4g6lS7ryGa0D1\nHihz+fZp+uOTUcWFqgWfyqUI/CKJ2HWJ400fRJrQ9oHuj6aS4ZJvIYOq9r+E\n2OXI+AquWkUbAZZX03sQoq38kA133L3lDGoqL8ggVWAS+jKgbprU2YBUaFLG\nJq6Rc8cIZvg8zfYDcPwtGEuIPBgiQAO2Wgad9Vi17EhxkmdgBbUinTkqvtWc\niG/rCrnLvw0NzgiRbTzQTSSVXD43ScCF9j+UVIBt97JCiRcXNOZZQteL7xh/\nBOE4BQpkdOLzlmniaEoSolIBiERQx/jORGzzQi6ah6U/rQOKIfVBz6xB1PcO\nNRL1ucd8ZwmVzfSsVUWOew2EkleG1oL1LNFMfsO7/PtdlE8KC3ILQX8rk+nM\nJl8MknP3kDHdCqgKMSjhambjW/j9IGc4t1iex22QbTe9Ww0jcug862gx3k4N\nq+8ihrHhKkEAVhyZiElkpSyO9KE8DTi7FRTkOiuW9/52GAjT4d0thJbOEMef\nc2CDfqx93uaT+LsHu2Q6ty1Po6+W9bupSaI30VoDfRPZTuBgYfoQ08x2Dp2n\nebGJESix/CgOvTVbg7wwLy5Tfe1Vrhj6y0JFTQ6HbeMZ1F7/E/0oFloY4ixN\nmyQj29l+uonQMQ6CzwLvQMNFnwJU8wWFCMFjSmjoysHpOiR/2jqDZAPuJzSW\nZNzL\r\n=77ch\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-983620-kff8obru_1600856605553_0.0037875913948217654","host":"s3://npm-registry-packages"}},"1.2.0-feature-651911-kffl15qm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-651911-kffl15qm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-651911-kffl15qm","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9fcf1e8a516d51a4195cf8e76c7c4ebab3afa225","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-651911-kffl15qm.tgz","fileCount":304,"integrity":"sha512-2dtLAjaMLjFA9IlZw9V2k9TjnhDC/rB4CacHUgv9nKtNGRObK9vTmbAmAgEYDf99/0vtxFzgnA+X4ibi8HXvkQ==","signatures":[{"sig":"MEQCIGWX0lGoq5KWPwj/z/N4GweY//ToiJNNggO9eZIxO5PXAiB7omSBR2bVIWVcGnrSP80uV6+q2OLhNCTIdrW0Z2unIA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1494759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa3MxCRA9TVsSAnZWagAAB2EP/jMTXSB3ql7HRC9gL+eU\n+iPLoSfNXkLRdPph7cGzN4OWiug+/Pp1Gk2fkEmcgyd8Q+OqMXKsVLJFfd17\nU/m+4nZdhNsCrzVVcELxFo+tP4czjoJWfjdb4sMgXv2hUMC0tVMr+TcrH+CZ\nZmejFDe0ITbqR5ikpmCSNkxuHfrOxjlsfBZwf8G/PtmVnnSA45NLOzTiQgaY\n1Qp974l5LxB5db+XZwV9hPakJqjgTvxU8zZnG2D24CcUIw7xsLecDbJDQRhw\n32VgUQz+5LIaqnPpS9D0YCtP3YRYQx9bRtkDRhzFN87KlagiMWCzh/483XBp\ne3gCvNGQkKqjcR4wf5Sd19xYuuVvNJmDD6eP7bJJ92AheK/og7FGN/mpOHAd\n+GYxNwJuMGf2/5ktVvGGd7R1WZry/HPzumYiGizadRuJP+f5D2+wfZF0xSBU\nRvQq4Hy1EiSZKOZqgptysUgFTdy/ZYbjmXc22DdWA4OYTlVNObQ5P+0LeNrh\nsr86lfm9tSe6uoPXIjNHd4gUZiJa75voUcmzcRmIsGsG2PKfjrG1NM1jDhbX\npOKSDrOzwKc8ayg7lBLHqup3JPYrxNBMg3aep8vKE1oAzWQ3A7GHNaHZSmTZ\nB2TcOrQ6p/Eb41czeC3VrwYY1aRCfmi5OJVrhjCfIoPMzbx0rO8i0guR6Wmx\nNIe5\r\n=zgkG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-651911-kffl15qm_1600877360708_0.36395398537518964","host":"s3://npm-registry-packages"}},"1.2.0-feature-c3c490-kffpd16x":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-c3c490-kffpd16x","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-c3c490-kffpd16x","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"34c53324ef63561a17fe7b5e3277dd90549cc5c4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-c3c490-kffpd16x.tgz","fileCount":304,"integrity":"sha512-nS0nM7wCn4+R3KDS0vh7/QQ20JhQR0V2Rkw5QkXuzH6v57WFaPa/2fxJfay1cSUvam/FWpa/vdjD39hANmgXKA==","signatures":[{"sig":"MEYCIQC2r8DXSk8sT1vs/FKchud+2rDHvjXEpglC/4z/xIFc5gIhAP52SkGKLzE4kogYCeXK48ry/KHr8xtM//llK2/nG5vg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1489491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa4+YCRA9TVsSAnZWagAAcy4P/3M/rIUpbNwVCxwyN33j\nNW2IJldoLrou/IicRYPq8ESUrPlX/2TddtEiKN9tJC30c0tUysvann/zAt/G\nzg+12gd7Earol5UEITV90Xk2vc0R6b/X2Fq0JZTWSkR2bxTgKan6eMt5B4On\nrKMjkq0ajmKV9vX0M3Cesng51NQVzojnJ9G7mDZI55Ei9k3WaK0CR0YNDWQ+\nob/XsnswsTwiMwbSA8B+BUNTWG5DSWQNDDGgLjqixEFeD36ztYfFY65RIpBU\nBmnAXOzryXZsUjvlhF5WaxHDkibuQE+1j5lYwg8eb+aeR0h1h8eLHnbArCqv\nZx1Ch/ftygCC3rDVKX0UvlxCKxizACYwJeHyZ5m06Y2INOpJenXyHOXbJxgG\n7cUhh2Lhk07TT1EF2mGtaA4qU/QPwp015Ouf+OAYnvhVKUZs+u5wnuFP1fQW\n1/jRM3VTq+ATopFWIcluSWAl/Z/qefjgN8UE5Az+eQpEzm30BPwP6kickiai\n1erH8Z/DnNanR21z7wTojGApCfa8XLiaCPQ8MLKmv2izbq5jbciGorAvChwE\n+pRtZnw5zr/YBrUOrsC69oiphgmPbtPnWGWshJ0+HiQVKurJxcnvXQtWEvCT\nnXlsdus98iaGd/4xazAtxHglmT0zfOefo13z1EovJafSxAdkJiV1YwYoyvxQ\n5fVk\r\n=nFZx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-c3c490-kffpd16x_1600884631112_0.38248793064137465","host":"s3://npm-registry-packages"}},"1.2.0-feature-d14a84-kffsdx1g":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-d14a84-kffsdx1g","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-d14a84-kffsdx1g","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8008975a19e509253447a15382920318b624008e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-d14a84-kffsdx1g.tgz","fileCount":304,"integrity":"sha512-KPY8iKiXtlYAo3/aoTMbMdsyxFs/u84GGBLJMJzmSn3Q575oX59JrPelGyA+9RHQtY+Za+umb3JlwvQ4+LoJgQ==","signatures":[{"sig":"MEUCIQD+2PpQc6k2en4TcwalocRvRq9G8extEswEgnViCssFVgIgJ4rPzfp+seK2ASTECfTl4xudfCHGGmdymkfWvh2QsKU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1489491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa6N0CRA9TVsSAnZWagAAMQcP/j5KnAMvrTV2iWN2bxqd\n2wfb0omcRaOUhdVgloaxYR49aEnE7CugPDQ7uC8PcqGxUQjfX+Vzkr85P9eH\nKmSMBBGRp4rdyMCLWzyDu+Y22QPpHRA6rMTj5RIkbiEeDImarQZoM1f0oZn/\nzbdPndkDPChAz4M0XnmZ2H4wqamqvntE5xMtsTWiKOHJvWSA2cbLfYAeGlBH\nzgbaeWofNE2gM35smK5JLaMC3BuvurdsN/LrVjmytGp6pqzzBkQvUzla+GSI\n8Q/qBNCIDHu3oTjH+OM4BWtFordp5jFruhlXnwtv2PJdaeROiXMySBC08Ha0\nPW7avPZQoOXZckuwLR3mao3XWMgyVjZLt635JwspuPk1blJ+Nr2lgAijKv6Q\n3DaXn8Fu9jkATiGqZbiPhmWnlpzfsrh2/fZy/0Ml0bJ+kp96Bib2QNveC0qM\n+th0psh7u8bNqD9rMuioxP45BTeXlX0NEtzxw5+APQ7O8BZfjI7KfADw8GkA\n01Pfiy2+/tHczxaUGLcLHRZ5Kx8zUZQuU6cA/TVAFvCAI13ChBzT/NAChbbk\ni9uM2+5QRInL4xntYkYLgp1BT7kp3v+smx5PylqsfpFdBmipH2bMq2CNLuDb\noppXABGr7a7+LQeSZPL1adhvxAtsyjcXLToFYeKADZhXCYGRCuX7Z0kOJxfK\nporh\r\n=vt3K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-d14a84-kffsdx1g_1600889716247_0.7390773707197626","host":"s3://npm-registry-packages"}},"1.2.0-feature-d14a84-kffsksxu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-d14a84-kffsksxu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-d14a84-kffsksxu","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b3cd83ee49df7963bdedc31c1042259605c8c106","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-d14a84-kffsksxu.tgz","fileCount":304,"integrity":"sha512-RZcAAa9MBLABHsTOurkZasgHr6qZLB/sdEM9T1iIKVDfbuwmhhHNVUWA/Y5XGavaoMUFN/Ot6nXekTOXx01G9A==","signatures":[{"sig":"MEUCIH6vR+lKYmqAsF4S/zp/xbo+QcxnUWP8y618bRsBSrW/AiEAyAJLQTD6xJ2Fac0qIvqrciJvSgHH/gZyw35qPZgXEsU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1489491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa6SzCRA9TVsSAnZWagAAVwgP/11Pi+pMtnUrOvNtyVRv\nYQuRnCcCkcAysD5TMkvyX9mXaJl0uiK+9wcuHgkOCBwwQKRF7Je5E5hrpnPP\n0Zigm3iK1oqL/JtfHPgMDD5QBWo4jMiq/ntgiVrydPlLBwL7HSwISqxe2xaT\nFUhNK4DuUT02wg9H7HFGcdfXM9hG9ImI/a940zu/stJFGp/E+zjFxy9GnOav\nbW3MCPEfPXzLQXpP77uN4fko9JA1gi2izSHkmkEfJPJqHE8noNTCSuAOVfJj\nwjUZEYY3ozm/PiqQbg4g3sblpeDDOj2t9OeQzMZnho/1F9DD4g8INORkGFNo\n61FnK4CrcmisH/w1Uz8MRxYApf6QAM+ltVywi5WYrxCIeUlQz/Z9ZC5+2qND\nk5uPitDuwtPbcYzlXsyegTPwpHPy7SRe7hHLpimbJC4CjTLM7BVR3i6e2ZFa\ncTpxOX6Fm+epe8VFIgOz54WIM9mp9YcMY580sVpGku/j2REzY1os1mo/Q6nw\n/WxefnpqNYbnMDRhIyUmISUKmFrO0U1y2aVfepBJbSrgdiMhN9cyp+M/jBVb\nf/aUvUNjICCorifUFdBY1yi1b5M6AwbftjbNezA5jqrSPactSVRCr/rSQG3w\nN816toPylFuKFvUCCNhLuB5h7Salo+nHfjtfmhkN1g5hxHegRoc5dk7iY9a7\ny0ME\r\n=2Ihp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-d14a84-kffsksxu_1600890035319_0.7004033207646494","host":"s3://npm-registry-packages"}},"1.2.0-feature-faed71-kfgdmmuo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-faed71-kfgdmmuo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-faed71-kfgdmmuo","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"62f900515e0444ffc7da47028bf2a388bf142bad","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-faed71-kfgdmmuo.tgz","fileCount":304,"integrity":"sha512-NbGO6xPU7W/bPHsGTOElwlb+4P2K2tT/NzTATL0rIoKB7qIIaz7AFtlmkYl1TS8s3nPpIVG+2UTYZq5VSlzouw==","signatures":[{"sig":"MEQCICQ4uvLNW9vxhhuPddbUWGAApbjbrb4Fcticat7ZnhSDAiAwScLBfJMsjNJBT+5xsh3HZKw69ZYNr1PBl6qO+dF6YA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1489782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbC7RCRA9TVsSAnZWagAA/IgP/0NK1qTi5ZYWHyKTn8m7\nhzVtOImif81CG3/4Y5/Xv87/J3Pyi7CJJ3dMZYlVaL+rTTkVqM16OYbPQLZN\nDYbqjmU+/C6cw97BhVoQSPUVWJ0MLzqXpfI610OgqPAHd62RilUl6MgXdXKf\n9t6AemVl+wokwXaOIdu9bxxJG+IWI0MA21EtrDmfDi43N5yy8mV3guji9z9W\ntpYCFArJPF5TB5G42XvO63qxlNUsQqr75MKQSYQpYG7qpykdb8+3QQ8sURSL\ndNiY40q3YR9fLcK1XTXzgldMOBm8O5np+HbydaFiKoyHFVcPMqSsLYWehvvg\nKUhgwpI14AU9Apu5akx0vyEAABGNmS7ZB261wYnGfOT2kTtaDJZ81l1jW+Nc\nHSZdMIpp5j+2vdNjeo/icMPHQtwHYWq1CDNMq8XdUZLp75n3a69ss2Zf4CJV\nl2YY3oCG/dp1Fw5gZuxEen6tmUErR47dkSaI8AOzaTX0ux+zOQfAa6cSMB0m\nIIXXgBPObZKvWUfDmW/hKAq0oaoJc2K9abcoRFvcbYmGCGCd8/Yv5n9cUK6u\nL2EFTY1pmJWohxCR1yLJ0LPX2M/ZoXxOEtUejQqzNsm2XM6XZ5D5UeDEXFO3\n582apphsy31AvYcw39rNHS0N+OFjZpCP+Rg7+VBDkb3lngwM4l0htR3QzJzZ\nwQWa\r\n=XwJ5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-faed71-kfgdmmuo_1600925392526_0.6032777287841813","host":"s3://npm-registry-packages"}},"1.2.0-feature-e63def-kfgfe5ys":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-e63def-kfgfe5ys","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-e63def-kfgfe5ys","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9c30d31d21a09e77fe7092f1bada52b406c21bf3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-e63def-kfgfe5ys.tgz","fileCount":304,"integrity":"sha512-CYE1oSwPt5e9R7pKidyLmYYBqchG/xOY1WpwTQ26WDp9hqGeK01VrJXGAo8rATzSuEj3hsN+NJNnJFrqDw9AeQ==","signatures":[{"sig":"MEQCIFL0PAVd91ps1Gjbe0FRqzUJNBHgZ9FZLFOD7EKnA0cOAiBeztvP9WGrXRq8PSbPMXjmqbN8RDKxTlVjJICIzMsdgQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1488811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbDpgCRA9TVsSAnZWagAAloEP/ifS8WAUGeIMwvQAzHWB\n9RgFT5jr3mA2/YXF6CvXdZndG9KIuK6DHcBtgQvNFcyjLgr955Pj7oJteBK+\nJOms6PJike+MhS1DB9TScjbZuTdii9rV9pQAU9ZNBdHChz0OYRUY3JHDeE7l\npUIpyEUoDA6SSl0fUVrKqfxfQRzDOt+oJivNYhSEuoGGDN8CsRL0u6v87mBd\nLjqGR0CQLxEKxAFH0viCwPpJ4hI2qGE8NeN++OPttx5egHFoBH88qS/ZJDmN\n7VP+rLB6r41yTpiTwXz6XaqgyIbDYi52kzHsx/5hNVE6ekzz/G+I2UwiNUoZ\nj6oKONUCMWQjH1soJ8C1nYMGL5JFJ/8mHMJmJS1ykUI1nUGGwUt/ZyodwYXg\nKP3kZkg0+MISNxrb+ClcTJESAtYunaYojog9w1lj9Km+IV1s3WjbqEiVy0Ht\nqWjGWu0pUeH3Y38vc6UavX5H0Cfn8FkuOKd3vFKXNHIbkVfYJjTDgUTXJ/8V\nDMXQ/OXqgLbmoMqstdyeOaEU/JNqOT9SaBEBjIs0NkIrCd7gx3xnnDpWv8ha\ndyc9Bjk1g7rRyBIYTRRdMml4uu3kizY37lkCOp7WcpIz/ZqQsDDvN6NlUVjR\nZkWUo030xY4xz++IcM7sHG6ikKSGSeyxUjRXVX2ZvpgjrSP+dJUrO/5nv79j\nuvTo\r\n=ZyfX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-e63def-kfgfe5ys_1600928352047_0.09663355759765069","host":"s3://npm-registry-packages"}},"1.2.0-feature-e63def-kfgfl1ho":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-e63def-kfgfl1ho","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-e63def-kfgfl1ho","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b709fb32584ad0de6824e856f52d50f328856088","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-e63def-kfgfl1ho.tgz","fileCount":304,"integrity":"sha512-dMnA9CEaJJsTNXjQ7n/IRxV7lqbvleEsmudVjR2NYrf5a41no21xLm/01Nel1PAaaFjtuxU0xudXNadfXVJQ4g==","signatures":[{"sig":"MEUCIQCrYq2mQApX7uoG3Zx3coEPpNV1c+x+5W30w7JUZP6fcAIgRHc2C53zlbhRFoLB0XtHcWV27P26tWospSC5oDC556I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1488811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbDulCRA9TVsSAnZWagAADvUQAKKJrOkQ8EtdUcRB6k++\nJGpBrc1CzaMi1WCOEXHOH04O8U5ZDsnFr+Rhz3DzajMptN3Ie4hYAtXrSj9K\n7Err0TVjDI9R4kIodU4Yzfwizn4ktwdTMwhkcfnacbmGZyP0jIF84EfD/8gt\ndlfVVqroIW2k274nn7rJMTJCanoa3Er9Z9KpWo+CDhsZ9SDH/7cF97XaWA61\n+p89OX69Ng91+cG1pdSlrjhzPegDPZi3L9J6YiT5svND+R8gdYT52aKERkiE\nWmr74A3tlsa9QnCZ3ZkIb7CTuGtMC6Atn2B4uC1kXS+zcPQ9dkSp9g9JENrR\nRqqnbd3wJI46TQ6uFBc/aIhG7eXIuFWSoJLI569pramvuaZ5JoKGsrUh7mm/\n2DoVtcTzPV9dIz7LA7/vDUAVYCAYFpX2vIzjg+Frd7O1rQasI1Cj3vu+G13a\nqwS6k6trz8YDdKx1urKwflwYBlyY4SI3RSZzOmcf+CYNvej2r3Ys4C3o4k9l\nWPJ65BUs4IX4JsJZeU//rFctnPL9El867mOlRjpVeklNSMH1RBlDgQVkXZdP\ndRc3RBsHjsh7nXXstmAGhmG9J7QhldiyT8SRj777R8UpH2akMI9asVxKjbdw\nVE+zR52GDiQWDp947yW6kskl9y/1759JHAclrhs95RUipgPXCuNwDuRFxS2I\nPoF4\r\n=ghzY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-e63def-kfgfl1ho_1600928677273_0.42196354357905785","host":"s3://npm-registry-packages"}},"1.2.0-feature-25bb40-kfgl1icx":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-25bb40-kfgl1icx","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-25bb40-kfgl1icx","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"fd47f1c3dea1d52a7618113aebfdf6ffad0d1c13","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-25bb40-kfgl1icx.tgz","fileCount":304,"integrity":"sha512-7mjCh8vQc3sXA5BzSIRrBrzSyrdK3NaxIIQ3SzO5BJdIgB8mNSS0JPDCXPJH1bixv2OR3HzBZ82lTPGw84rbNw==","signatures":[{"sig":"MEUCIFEq7eCP5GyoLM6OFiFEWpfXSDtur86fZtQPHxgHfb8CAiEAoLiOxil58FDUCLmA3h/UIeVj2jdcfMLyZk4UUvxAqwo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1505324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbF91CRA9TVsSAnZWagAAIT8QAJ6NxWNNM2TJEU2nNpC8\n/jEoHoNwGG9H5zlGqtKSjdVW4yNN62qMzx59fNSq9KpBv4lQDHsp7yiQxqEF\nQakJpC59vxSDpdXPUn6B0ywDtUsIaS6z2GrHJm3KSMFMnpEUHQ3oYzuOIPDw\nbaY0mdjDDEysTTvq2SsoApE1VyH85POQSC3NJP3Ic6FTvfu1zwuTcrusnQs0\nslM/eDL2IiczYeACcv5T4J2Bvcyes+HFsKZDNJXNXj+wHNVkQMmKIoLT/JBh\nninY7vQcS0dUi2XQYIztUu9rkeI3kLsUGpqB0XT5pfBfnqjUjgcPtYT89rPy\nusD4QK/DYTU0yPSOXbbsLCUtQun1h+EB4ofRacqLKBSuvRpCQTevSti3lHUJ\nI8jdqS1WCnprkkVSw2Zc5xISx3cNofTk/usp8RAJo6AUX/m62PNLTFfsyh66\n1h6a9leVu94aWB9/Tmq78C37mLOQJbVuAR2JM4PPBdBsPlhs+LPxVATIKF+c\nckbSXpMlYZkNkXI8id+53WsLyuoZmMUr2mx8dwHKYTUQlp0ytCBzWahsgsXt\n6TBrEcd+XQhdd1NfDMOidqDLY2w84dgbzHW2BFww1uforPubVc4nkMAUaRaP\nCnSmLy2/iwUgfwdULGEmOdgJtD+pRR+dK/CR9hidSaO6a0iuDkRdJfFsk3kz\nf+ks\r\n=FqHL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-25bb40-kfgl1icx_1600937845247_0.43798146859194964","host":"s3://npm-registry-packages"}},"1.2.0-alpha.7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.7","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ee438e82dbbdf9a252c5adbccb56a12a28d9a501","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.7.tgz","fileCount":304,"integrity":"sha512-vyUI4aoBEVhy8jItpuV43STuwc5TgzXs8JteeCMEfhtECW/4nkmIiMoSWuj1bx4G+AGE6ncMBSsHA7cQ1+ySig==","signatures":[{"sig":"MEUCIH5r/AcjS9uW3qh/k8TgK6VBqQkPjs15CdNXTnDvEOE7AiEArgvC7c8gQULSeaI72vl98q7Y32pnCqDMjkepYZjCphY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1505308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbGQwCRA9TVsSAnZWagAAmsMP/j53GxXWwa048xFSzKpM\nMaZFtcZ7mBoY9vHDC3m2A5dFS7SZYVeRqwgM4mPv07Jwe8w518iGb6wvJ9//\nsnLZDn+lYTUkwK1RNddul7+/vl0AirZpgkXqrpmenpMQ0NzVWdiK74c7cj+p\nigshbM/Sb8yxHGqhfzhQWSPlUd8TI2TzwaCbs2qeSgioVUdVDjA0sNIL27qD\nheNZxuv8mv20bprnPYhUGX1/ca+TJyhPf/iSzzQJ8k/tvlUM1jpIqp2EfnaN\nDPYdxM4zAyU2qgZIoevmICEgeusVmGfiFmLtN4NT1e9+0ICWPW23jQLLTsu9\nvj6qCIoXidf3BV/OzXgv+bLh5geMEUyu8W5Q1lYlV6kB3VQ6utUhjyj3RMwE\nyrNjWjq8UMpU/Fz7ZCjDGy5uMfl216mxR6RpzDe9jJWWiCZaxXl5uPKh7nsC\nt1YHNDY8JSSJFXVd1mUw9OEaa4I9EoJ+CowkcCSZeNBfdHCgH1Dd3rLaO5yn\noH0HdiLmwkmzXqF0DkZ254pl9wrgxga0Q0lvi//9i+Pf7UuHzDgM3clFbl8s\n4jjitMBbulzfg/UtRyiKGMeKzuI8uGbA+blYSh3X1Vbex9yXfXRnKvy9eE61\nPkELG9N8uiL6Jez/32syiFEPicRzddqpGF2HzCWP9nYlvRCwyq6vhqjN9iTG\nJFBZ\r\n=SNHw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.7_1600939056280_0.2923614643318686","host":"s3://npm-registry-packages"}},"1.2.0-feature-994bf6-kfgo2vll":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-994bf6-kfgo2vll","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-994bf6-kfgo2vll","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9df7cc4a72e28cb2cf934d3a74adb13f76e34542","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-994bf6-kfgo2vll.tgz","fileCount":304,"integrity":"sha512-ODV0aYCdIFB/y86wGGurtDIQYVdxJLN7toSZBrvNNz7zxlrvj+VVO4gRA4gGNXjFsUmgSoN1rwLz2vmRXaW50Q==","signatures":[{"sig":"MEYCIQDapBqv+jfmQBgmGEUKfinuHp3ZOvCojPljbQHQLTtAVAIhALK8BCSFqcdGfBR6TVgL+eUzxq++yZ93YLBbabTwERR7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbHNhCRA9TVsSAnZWagAAZlEP/1O4JUeLne4sgknod3vu\nA5aVbI7v6gDKhbGuAJVHuk5ZpWjP1e2jqA67CpHM+rF1q1e+RDGdarnwgKdU\nQba/BN2n/5yMGZbYia6HsRa3mnL/u9tLm74tANoDZIWpc6NKQzKlbUwo1e4E\nbgK/fYeeZxyiLm8NPqBkiZmstN4Q8ELc8JP9ewnFFitYO1e0CWITLals93+U\no+EAHahm4bEHcqdti4yKTSlD4TTNh439bArd9FcGuBqGZxGYl3/H01MjWywf\nOAlA5VtxpFHr0yLBxG5DlXgxwcAP9SOLEW00jbx1/cPYmpakcRvpRS2I47aa\ni7inOs/L/fG6HgbjUPo8yHuE4I80fQ3K3cfDxRVcSJ3g8NismdRb637xaT7q\nP8iXhR/LiYjuRmECvXC1MzOMFAz36731laW/ULKFO8Vx8vzKsyj/4JvK7Ofp\ntAWIOQosTRSbG42YMMdPbDobSgN5qU7o1bCqYMLwabvY+YFjuT2YZ2njr4B+\nf47qh8XnMfr2mfLTJ6MS6H+VdDAMDWKgBDX3kkgL5g7JtJt9d44ZoMVuDUlm\ns+rFdRkIWSbu+0pZbj6aY+WV7sAQuG/vSZ9vJWh9lEthNXzAj5ByVQYLzxHG\nKxlioKUpsQAEn2xQf5AhGkQHq1Y7ad2weld4IRyS0yq0uGBu7OC+e5V2GmD6\n6ZHU\r\n=wGjL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-994bf6-kfgo2vll_1600942944848_0.6919071444974008","host":"s3://npm-registry-packages"}},"1.2.0-feature-52aa6c-kfgpnbsc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-52aa6c-kfgpnbsc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-52aa6c-kfgpnbsc","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1a97cdfa474ecf87e5b4c216f3492c447ce9c95b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-52aa6c-kfgpnbsc.tgz","fileCount":304,"integrity":"sha512-cmJbtywB/qrL1pnQj1x4QgLBdIp1N/kN3brAvJ+xobGLy2zO5MfstNu9S/6XH99GspKAi/86GdP6UnHGvXTMMw==","signatures":[{"sig":"MEUCIB8UqBXjphSny/9scwVXVaZd75rI+cq0cz3ZYbqHGUjZAiEA8+H1XvGLUyzhOkPzekhl/DtLFHChdWpVhLVysso94GA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1488827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbH2nCRA9TVsSAnZWagAAOnUQAIE/yQimy9pYATvV9Ilz\nGJnRKGZk3hGKw3GPnoAOhwpQP/Vfj2QnvBxq1AtZ1NFUSCKXF9j+lEEjqnf5\nA7niGLw8n93lnRxrp2jCdh78mqxIHunzguix59DPwfYVv4//EPVvf3sqVUtw\n2wcFfZGKxCpYwD5YPgC0Oni7RolA4jYlmWmUNMcSeDmbsZMAFFX7EO+yuxLh\nw4TYhI733xTiv1RFDF0yw1GVk+8qtbdUDCXioSC6/VF4xMZwGq+PLBFNvyD2\npi49zTYh/CjjYDc04Yvv1cWpAMzsu9y4LJFnh7CSpqKgf/Y3TQgX4aIjqTOt\nGaUahDPtzLUAXbRn5+UuAUSJOgPIHXn9iTG06EglT+cg/39m00xBuz8o3o1T\nHwdAzOYdvLhIMdCUYrD7gb/mUfpxiRDIXFjQn1pwYhOFePaZjki2qCU4ursr\ncQ8LtF2U4E/FVxtOCiW6WAJ71zcsgrHrjhKbiW9MoxVQkP4Yyj+lFcdHaF23\n4neVGRkMk0pHfrZiZroUqkz9+B1qxsBbAL9fby4gFh6qTsMYHaKLWoBl168t\n1Cwpv5QM+7Hrlg5vFTd81w9bZ1MlBp7iOmVTvm8saz7qdymceaQteI39GaXc\nouqxjqei21u9+i+wq67t8gz07FMygGn5vbSV7IAoBE/a0W/Wrf85a71Gw8P6\n7v/u\r\n=fgdf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-52aa6c-kfgpnbsc_1600945575161_0.9325127202198391","host":"s3://npm-registry-packages"}},"1.2.0-feature-2de0b6-kfgq37mh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-2de0b6-kfgq37mh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-2de0b6-kfgq37mh","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8212e997177b668dd38bfa7c0ec06c28c7b4a976","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-2de0b6-kfgq37mh.tgz","fileCount":304,"integrity":"sha512-1wYVuDgHV5IpdeWcqP7cboVaPzMpnMDeEkcrXgwQ85/P9RD6ivUQllGd1UI+tUbRS5/7yutXE9Ru4XJ981VDHQ==","signatures":[{"sig":"MEYCIQD15YOtMArNY+pgvtlDegmugkDcQgu9ZkF/M4TkHrt57wIhANE5X+Zy+aGmZyR6jvp1rs5O6/FOygUVLGCcrWLGn9w2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1488827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbICVCRA9TVsSAnZWagAAElIP+QBXox43cev95+tS6Kqt\nljAyA7OcqM19Y/xCEGl7OxtRtZnJ+MTisdZqBGiRRmAQHyX8VU7ZkRiVuvcG\nbeQ80lbTzFoMsTPK8FSD8tmG3Srpnaty+wspRAmbaHXRdR0uRzcGc9QJ7TXr\nQYMYAj/1UBpV7nFh6CJbnwDPRPu8dlGZcPhWfrJAxVOkuAco/WJK1IFwRecj\nC4qxFj00C3dCHXIuImzI0lKSn1StsXW2FX0Tv9B31B/swQXooZKDtE7+UqD4\nw5zjI1djq481cMACYy3Kh5UpTtVzb5x3+tAx1h909YpIJ1LruV+bs2jYZEMd\n/13wTRDkKL8sbChUj+PEBO3qZWVtXcK61ccbqsciDILbW3HCVRIOxuiJQ43I\nWTUqSLlHgGnKybwUSsoVV0KuTtFK4zogwixOOnEHC+GQpOY9baGir/G7vCPY\nErDMprtPpDAkO9ibFKL9YicieimHmaOB3OHhzDJoFeiwPPum/dl795bwvt1/\n7uNe2qy/Fsl9NqpFPUX/JAqaMorvn+X/jSVRcLCgl4+tA9Bzyy3J4KGR0l2L\nN6N9djfi2DxyOFPp/mK6x8SON8z3X2ys/31kf+07UzWqiaMBpGGKBJ1DPaoV\n60Hmc9XBPRA2sT1EJXHyC8Z3nK1dSMu8gyMTWX9KdmViX5nJbfXsDa5W1pGi\n4ynI\r\n=HWy6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~flownode_metadata_access","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~flownode_metadata_access"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-2de0b6-kfgq37mh_1600946324763_0.7053074172448635","host":"s3://npm-registry-packages"}},"1.2.0-feature-71a952-kfgsodne":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-71a952-kfgsodne","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-71a952-kfgsodne","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"5c4c58853c52bcc7afc9ce058562376e2e2280cf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-71a952-kfgsodne.tgz","fileCount":304,"integrity":"sha512-IN6RZzJY7PJttqvEa1m0uGRzNMhP2ihz3pKVuSgNFALTmXgn0kGfNZRzlsJhfkCH30q7un4o2xhtuPdv6G6CHA==","signatures":[{"sig":"MEUCIEhQrOC2uxp7NIt5eyezNh8A+A9SnDRFSV21j8iOMKVUAiEApEkcstP8fbI5HZLDm3WuZNxqmP6pS37hj7i91OImtbU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbJGKCRA9TVsSAnZWagAAuwEP/Rq3wUppCnz3pSwagrwb\n6GgfCSXBLbUgzlR0+/BAXhsL2kcsCIknw4qMWMFshbq4KTB+iiVhaytZQoWn\n4/tNkQ03NEJ2eQiSJsmn+UN/8GIpO0tJMjVjNW6O9mvylhijV8TyBInchtfm\n4SJgtyEI/9p3kVRgZoEdaCy0EXkSHFCtBummB1j3JguNw3aI4ijqle7skvFC\nZ1RZxcQYNTH6MIkIOvWC4bDNlauRTiFP+OB91inLRPaEyghu1tJw9w94A48H\nfBnu0iwON/IvLkGLG9PnnwoR/aVD0lzUElo8XRDCIRNjxz2MpNIV1PhvlVOW\nHjRlbDmmtNlZXqG0tQj4amwVnciNBCSAyoniMr1NbYe036m0MspPqGbBWeQt\nv5mnWrsaIuEADZgl79FglPa7oZS+pJ8ncXO6iL0f54g4P5NMa15lk+Pv54l5\nqQp01es+YIhN7xURInUHP1Tl3lhHuK7kphs2dCljXwz28edZxtYHipwlKiOJ\nrN0FZp8MAqn+M+TG4ajptz5n1t1NPPyRVIVgnrNjLudftU+2OE0/2pCmQ4kz\nuoZF3DCWdSM3ydD1XldXSE2joIkixEQBjD7ACBY54ir7tc3ttMPEXid3y2gx\nojhWDhs4fy8nQVKlHpicemnHDzFk4q6VKRfu2U8I+WxEugDTrY6nipR8SXVy\nEE1g\r\n=Pn2I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-71a952-kfgsodne_1600950665803_0.20423759457021196","host":"s3://npm-registry-packages"}},"1.2.0-alpha.8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.8","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b1be1b5f947a0780c674e58437ececd340af3cb2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.8.tgz","fileCount":304,"integrity":"sha512-CoWcyk2wjWxaMJRaxoQNKhIPRLUvFWGwTOPBMM7xbcCrRB0Af2LdAoMFUjfY6m06Aw/3gkxoJGw+scMhWJ7mLg==","signatures":[{"sig":"MEUCIQD/M9RgN8IGC9VUmi5TOea5gNA/bfyxqbnCLGPAnJNNvgIgTldYhic9FDRJht5TU6a3taRTYO+Gw8+oE00YAM5rsJ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbJ6WCRA9TVsSAnZWagAAhi8P/jBLZih45x3kEuDvQtmm\nLj/Ul1gboaJD7k297TlTKIlPv6Okelx/MCpYu+UQd/2rytEYprxCtYfCOyPm\nYCz4Erwn9IABl/LPkOchfzLSNbM0zNaHXSXBJGLNivR33mFPQgDX8aPeITlL\nthFJPd9Hykn8RU0BMPvcoU6V/FYFHTJffRFHBoDJ8CTNp5j87idHyUYJkNZt\nUdr0kdzZbfyfDwknXlHRn0HpgucqO8vCC0XCa95lffWYdR1e4pyx0l1jxMIz\nLgUNOwsyzAVoxdpUL3Ci0H1EiWlfPPfx0MEdr34tVaSwgzxFa1v+98Z5A76Q\nixzfq3YPDq5ExQbvFI6fBTaPh1Gs2wOjlqAEQwYs5mPAf2F4OQXI2rgp8RY+\nu1q3f5aaN56Z1wF7K1tc0+nxCoe00saA6VNRShUcLItwsaL+ItWF3j+FmiDJ\nwduiUQZOcTVn95l5uGaHwM7omg1DG9IO3kGuGkIQyLT/HPEx6twvJYtq2NUi\nOH3mq6Vc2ZoXS9CD76wRFQp+yR/ecSCYfjnKwN9eJf9xarUaXx0Ci82iq5w4\njWfkgMH8R1tubPA0ubRRb260r1YIh7tmSffzn3VIjjUx0YcBp/h0ygrclyUL\nrAiZi38yxty4Wt7bsJOXgr/WNRmj4l4kk2uEkCQ4cwcEG1UPsH6JO/q/nMEt\n4Ekq\r\n=f8ei\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-alpha.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.8_1600954006244_0.2654194199918132","host":"s3://npm-registry-packages"}},"1.2.0-feature-6724dd-kfguo9ot":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-6724dd-kfguo9ot","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-6724dd-kfguo9ot","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"855d51dd1f52b79822d114fbb2a747d0eb9de8aa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-6724dd-kfguo9ot.tgz","fileCount":304,"integrity":"sha512-zTzSmPXBZAboNH34T3fOrYS7Dt4MfrEsABTKr7Tj3Y+HFvBgxQyDsXg0eMrZ/TblDMkmIINIbJn7KtHrCWeFNg==","signatures":[{"sig":"MEYCIQC+KfZddNRrbgBNMICNauVpRwqOCYYFG0G3UCr2xGzrlgIhAJf17+gddSYqeL6z+q2VMHfKArPsGs5Yica1vht3VISG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1488789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbJ69CRA9TVsSAnZWagAAt8AQAI1kS+ghanpf1IIODRql\nh/bPCF/KCmQjI7THzUYeVGg1JCn/WGcCbROEAYwTUZg12lF2vkjLzUIBNjeQ\ncve2gfckDQI2oDX9B32eXHb/yZsdoEPYiwfeeUx7jn04WwgJSaMRchfWmyOH\nR7CGhKbN3WsaRMfPGBxfQzZhpaPB0IJwluiFXFn8q3peqV7MUomxKQLI1cx7\nMX/NIo/fcV0gbd3JGWpBEHMZgQkS5EpdDJoWDQiRqkIHzyadsUl+HRDxeSZG\n3twJV/vHSbuMyWVv4zVlIvXZeOcgoiIddSRdjVhugP/6dmIX7In8SQZ0/AIP\n1HFqNpzFyReQrM1IYbFhb5pvy8Ye5fXYpi05qns7HrVuvKbXlVRnKGVjxmqi\nVWyIMaRRW4IR/keqJkR0al1c7BOZEHNPS+/FBEL6jJxwidnmbmk+H+dhRJNx\nxznLwi9EgGtqKbqEmyMH4KJ1s6jTd3RGCQtWCdMC0A14GfL92Tc0ZWj1c+Jh\nIoDlhnFrsGd5A8afm+RjpZ+qPZSeSZ11aLWFk/tiROy94LCFlSKGVQcKgQHY\npvezfuwGSRSSCOss7jR0nCaHPBr8PIjCeSsoA+FD+ylJjql3hN2FU7ak8RCA\nATQ86QJV3vhk88FNgdLcE/rNQXTH7E3AlBMZEmtfWQVZK1NdM9RBOXruhfb1\n6Wf1\r\n=h7fC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-alpha.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-6724dd-kfguo9ot_1600954044572_0.9529086730612555","host":"s3://npm-registry-packages"}},"1.2.0-beta.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-beta.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-beta.2","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"6dc4a3bce3761c7598642e491abd3180c382546d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-beta.2.tgz","fileCount":304,"integrity":"sha512-TmEqkdjDfaYpMvTGa8tM3rHp1U9Ex2t3igbulplNEPSI4e/YI0F2iZ667GxiXWqydd2SE2c4MpKQ3wxvT3bQNQ==","signatures":[{"sig":"MEYCIQDIqAWmalQ866KlljhGeD3IK/E+VmFR72kQnIxjm5qJKwIhAOy8pgeMT87Z9jQQBy7pqVbO+qJaUuc2Nz7I687N/AH6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbLC1CRA9TVsSAnZWagAA5TwP/RG/J30Gx+5LoKysQ3PY\nuBIHmVDuM71AXgfJRpCxWCkhjsJRDDDQ23rfHvqQd3svulPT+EpCblpft51z\nEBE8jjL75t+CZFO39VZPXH2R5oSGMNlJM52Hxf03azFAoyoaF+Gh3IylOmp9\n7rYO4OtgRGTCd4g8P5D+eS/47v5JmMYOo1W/fmj9ZsL5SNR9mFEbTvMDVNnr\nalFwqE/ALZwN0J+XntAf66f2tb0C1eUYQrMIGkjYlHgAnyBXFOJYzHlO4JVy\nzJbsVpzw9gFuZ2ElJCxdozgM53sJkbx2BJsffads2NBY5WBHHITlQTBr32VX\ng6TP8btWAv+cEdDiHfpcG4zdRhht0aGCKs4vKd0Go88kyKJHl4c3Fo1k5JUB\nHvkpS/xsQqmN8jkmlT8pIdW7TjC0XXYQgvEL1dls//1LOmWCSDSg7C3AboBE\nLjrhqEXx+O53mS3O/THHF4DzCvshfjxq66/GAjuJSK4YswqfMWasw45UzbuE\n+Dbk54/lXG5s8sIEovKAipF2bYSd6DDCs4vm/fAejoP6pL9Qw5IO9jXc9Coy\nFsZVkzzAl204Cehxl97131oMrHYVpWdDwphHGIUKBGzNtfbXwTM1XAoRA3NZ\nAt2PfIpawQlsuTxu8pjb3DjcMXs3N8dmxFBE9JxrSxEbr29tvyD4D4ub+Qp1\nnx2K\r\n=7Xw3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-beta.2_1600958644526_0.8297530661852912","host":"s3://npm-registry-packages"}},"1.2.0-alpha.9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.9","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f7c9948543f7d7778f116a5bc3adba320d0c8e89","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.9.tgz","fileCount":304,"integrity":"sha512-pPoijW/N82zbVdg8gYAEaczRkrnAdPYN19vlez2ATDD9cU58JuBcX4D18H4EO75L/KvhwDm1Zp0qDa7fI/ET5w==","signatures":[{"sig":"MEUCIDtj7UEC8o8sLxI8PTVniNoL4w0OcJnHvoCMDMODU13KAiEAsF0FVPcB96o+m4ntBEunZcfVdfFZB5t/PwpgUzI1WvE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbLDOCRA9TVsSAnZWagAAUj8P/ioU2ZRJpttvje71VJa6\n/Zvt4czYYyFD+c+8l7Dcv6hpglZ8VK9D/1UqA+A9nrVSRTJZf1gixW+jONQ5\nheU9LGa1q167lD7oS3cKUCyBj2QBCqd/82oGEDBixvLLFhExY0RvVCjqKpNa\nIiCBSVCMgUeBx/kSwcuT+Zq6t/LKm/gSqmyT7aW0KarDJUU5etVK1ojo4Gn4\ncU22AmBzBQZkmwkLS1SK7RpAzmTSbqpUMESBd40BHQdLQ8nT+ZDdTULrBH2w\n0nB6s9TxYlENDHlMHq0/TuE69OpPMe6Cx8779fohCRudhpWGK/YVWD0rXaeU\nX3BFXySrzaLUsHBpvwApeO5oqSCQIL18BJKcjMLuffqCszfrAKYa1vySlbV+\nGGs6vx7k7HAmzXkHNwXYpc3THL8BPYuE4fp7nucmhkIjQAIU71jwsDcKgOfo\nli9sWNCcqS2kcpiDp40OAQqDOwLmaFZv+u8ZnwxVUQYwgKfAHM2rJ4VFEix5\nDD0TGXgVpCiimfIZLxHwzlC9u8cdWUWNDJDm3q9hSL0eC4BRhwkQwCsEwpdO\nB6gBB1iJy6CPDyKuWDHZP7sPlvgkawRkEop5zPSfLswLlu9miAbk5ZH2rHDG\n5pBUDlT+Uye5xULWX4/mwqtD6y4srId4VclHc3yVTML13sFWg4iJdkJsEBGS\nF2H0\r\n=usis\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.9_1600958670211_0.5408359936324578","host":"s3://npm-registry-packages"}},"1.2.0-feature-2f7bd8-kfh1oqj8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-2f7bd8-kfh1oqj8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-2f7bd8-kfh1oqj8","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7d38e0468b0f73fcd4f484d79daa9a99c6366a70","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-2f7bd8-kfh1oqj8.tgz","fileCount":304,"integrity":"sha512-U5DUOyekxswsi1DCre8tgEBF9U8r20vnf4mmQvxUKVEAwoMhWWbU+pnZBWx3ozpiIPJ9/SUG1kvnwsx6pz1wkA==","signatures":[{"sig":"MEYCIQD/4ZxTUVDsVyNWgfK5vV9iyF4LVUhw0V5kDmUx8eX0tQIhALOimmOsJR2s0Dvcm0D/ZvC7UO2RHetPz2Zbxl9mZoGe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbMymCRA9TVsSAnZWagAA7nQP/AqO4MR/LZ1tS+xUKj+e\nhFh9CjRi2HaeLVojZStZIrW4vglQckh7hp04uJOvzhhjP2tWIk4IoooLZBmF\n2logtBj0R39p+bnjpSyHt8g0e9ns5/8Dh98fWTmFzwT7YlWDGv4+O/cmTazH\n/MvLazI7O8Y4B7xTEsxmnOqKfz/Zar50LLdXgZZBusrFooLGdD4MxL83ImCy\n5yw8QSPqWhKHnSFJi+/Gtylexxr5mM04OzytY738nU1lSoqhY4LU1EHKwzmB\nrdnOr14A18JE/iOQM8wakrNnzosDfCWQfVcOwzALBDMy5kLLAFlQOz1VNRz1\ns8HxGyk3419VjpxCN+mGJ+07FiVnq3Qez0YE6zB/EUn7axr9pLfJeoNVehYT\n0y+w/crWZKeKppjYJWGPzVYzfC6zSuLa4Yf02eob3PWkXLVX4OSBMBCSY98O\ng6+uHLtmG8Myj7A6ORZV3QU76W2DQFnLDV9NvyZI3Y9ffaC6DELVDAZzcrED\nvLK0uLswU6AQoqOC22zdrMSEWHZrx/6ew9pgb9zb70I2Kw880nK8g08IDuMt\nXtvPw5gZlP3+wygftL9gLBi9nZZaa9CWeIOEahXlk9V33FzfBLUl+3ebwtwl\nkgoEqGTxfafHerZiASTA6YbihYr7GYBPDEj/DRJjAEvHM0ydUoo2Ok5SNlQh\nOgYz\r\n=yZED\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-2f7bd8-kfh1oqj8_1600965797769_0.7042909670940221","host":"s3://npm-registry-packages"}},"1.2.0-feature-2f7bd8-kfh1v9m4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-2f7bd8-kfh1v9m4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-2f7bd8-kfh1v9m4","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"59d4309bf582b51c30fc7917eb6d3093b914ff7a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-2f7bd8-kfh1v9m4.tgz","fileCount":304,"integrity":"sha512-Pbc5F9Up3WvmkNaQrQJ+na2Pg29TsLN1c5te04hjzt15FzV8U/a2f9n82YyRzMzG6R53poHJlUd2+w2FC2DQKw==","signatures":[{"sig":"MEUCIEi1fAY45lmVx23AJWmdDi6ZzdGntvjrrkttGmXMnjiDAiEAioqAKUSHvQNnrJvnld3moQd6qdL2EZ0Aq9IyaiduNEA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbM3aCRA9TVsSAnZWagAAFwUQAILbddCvLohmc4RSzgFl\n/1SxuLyssAoNieOwjbLX5lsC7fP6h2Cs2qHjiAynS21aqu1Ss4cTYYTSs7sV\nWTXDa+DqIqLmtIhfx1GkJpfuJ2NKK/WITrPYUhzxbXgb4ge3UAgZNZvUEUJB\n954CL5OZFALhSa/LNx+BIaX8kyTOgVQHzfMKhVkj6+GH6NVi21Ze4HES1jS4\n8gxv7PQqfilOcUnKwsVaCgGbrUDVkuVNJ3t409MG92o3oPoU1CxZ6BywNDB1\nbJuBJaf6Bq7BWAw4Qf0XChVR92xS7e5fv913oy7jLTk9ifgp1guUrl8G2gZX\nSlzYLrL1s88r5dgnd2qFNqK//3EARZ8a8A6rf/Bhs/B1fXon4MqY+lo7N20K\ngV4kOS8+Wp20JPvGdWABVjL5bZL9yV9H72PT613q9JIUjDJ0FH2UsU7kZJwr\ngPevnMs/it8N87kKvZn15tUjnuWXFe5I2WGzF/qqs0WRMiF2jvha70m8EsKg\nQ3PmLHQ8E+/TilImZG+YuhArhAuOBrb+HRmdh74KrbBtDEKbmERCKjh+tutl\nexbC3Jc9BpowAsjaXMfUzuCdt0JDGQbfhiXe6muLeA22rLq4obuzpJjU7Acr\nRLcwATgfnk41CvtFJXg5wZVHvNeTb4aPjP2Qq1vgBIOZx7PI/B1sxGIO2VsG\nMber\r\n=gNWO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-2f7bd8-kfh1v9m4_1600966105559_0.37386925070664456","host":"s3://npm-registry-packages"}},"1.2.0-feature-2f7bd8-kfh2vl3h":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-2f7bd8-kfh2vl3h","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-2f7bd8-kfh2vl3h","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a91f6b086ef5bd18aecdd83de8dc649ad55e900d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-2f7bd8-kfh2vl3h.tgz","fileCount":304,"integrity":"sha512-5c9SdPphK4B90kLdX7ux6eysgeADVh5Mfz3HolPJNU2C6RHMIDNDdXlEqHLW5IUgZPr6mrot9KAvtHPraQSDdg==","signatures":[{"sig":"MEYCIQCp0Vzk20qqSgoKV/Ngo12pJOP4Ki9+uMqeMNJAGElXAgIhAPVP4AVWOY0VfqLwSVwEAOka+aJJ3x5Gx/03L3BN7cQg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbNR1CRA9TVsSAnZWagAA5r0P/iaF9nZr3EiTY4K6o0QO\n8NoUGkB8XyGQxFxGbaY1oDHUhtASDZtvwXB7VG8nQgRrhJdq0s7UBZ1SyqjY\n+AJn/8BigwUEHw01/+I+V/A82Ozij99ytgNzJj18LtMolYl9m+dzNxV5GgSh\nbIYPHASDRqQCJV/JVHk0xHIgcChvyIy9Kc/zEnWrbdhHuSxaSM4lTA4Gdg0R\neegwjg32QYNqBjbYqTxElnD1pr6nK6HDASMkIKJxD1t7Kwf/oCeLWRJUdeED\n2Kp+fSAiPgG907t9yq1CJstp5aRssqgnbsgSrjkAeh6D9N++Mr3YV87kg9ZJ\nE5hsdLUDLKh5mTzaJMbJTVCeF7GV8DrVjCqzXG8+lyuxRIApXNvoYp6E/RIQ\nkHlZYVU7pKZQUoOdv054rrws5dWiJuWKeXhLk/ULtKBKUvoPrKZ/TKgFDxhw\nsOvWj+l7mbZMkYy+KLp950n1tbIqvYokjapp+8UH5eCH19MWFIs8IYH3F6I/\noZlLRNFrMZry7dERFyPCjnS+Mm6GMFx7b/1y+tL2Rm1rOEWRoQdLRctvZefQ\nk5asXyIFKrzMFf8i4lswAfWs+vyYREb/tCh1w0L6M+F59HnHjmVEaj2z/iNj\nrTFXdXNWEQG103mLG7oF5gUaZYsOrHY036A4HFqkppe3js1ipFl3/UvsHy3k\nl7VF\r\n=zG4+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-2f7bd8-kfh2vl3h_1600967797098_0.7798231055904787","host":"s3://npm-registry-packages"}},"1.2.0-feature-71a952-kfi09fzo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-71a952-kfi09fzo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-71a952-kfi09fzo","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"89954c4f430011e35aa8b0293125a9ddcba6ca95","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-71a952-kfi09fzo.tgz","fileCount":304,"integrity":"sha512-u3eix5n0/ZjmX5Si+6bSyNHZ2CZ9O+m+SRtoV5Kswl3qSgReaK1nCP/WWC1JRD3n8M0RDMLdf9I+84312wfglg==","signatures":[{"sig":"MEQCIGUcVd+P33+rkeeyP+Ou9C7N7P2a9WqFX2p1+y4aLOH6AiAKZHgpLGoPlr3Ak2VBqcX9KFzV/RLKEN1TZMbTKcqilA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfba+ACRA9TVsSAnZWagAATgMQAKQyY1ci5prbvF9BqvLM\noGXpHYkDzuMJdvRhTI1ysVUF+Udae3iXkz/OsyySSmUBWkEmuETl12R8rnVu\nkDM+WN3LSF2jd6x3MpGepXJYekbZ7+RMTX+gnnXZXTjzY7/e3nFBgbnp9SvW\n8HoCdd/H8Y21t/NQESp8zfcaT8+LpUlVhf+RCglGVqtEJp1WXjLm00x4UCaN\nrE93LsVi2ZOp0N0IjXE77OiXdTvDGF7+8VXOyTjlI7oBcV4LxnlXDAawR3P4\nMkUyK0LPp2OlxYMet6bXNFS54izPNThPffWC5SlVJOfa/MlTt5q9wORseC2p\nGdfKdDnVLt5ORb2JM9Oh83zS7LbPNcsHTa4NZL5qXuwQO8vXjSq/00hQWVGN\n60onQcWFh80eJYWG+ihkcIBsD2Tbf2Dxm4f1fWaAigZLB1N9c+M2/FIyxjb9\np9S4B8Qib2YiSdJtXO+UPJLCN/ykR8b+87/fEd6JJKJhWhUf3sF0iKkwtp2h\nNcC53fxgd1gT2CbkuPH9GvBQ4Ot2jsyKEU5iX2GyaEoTmFNq9nzinKYIwYso\ng4D03lRRr6uFGfQKxx6kuSV9wjpSXFCg2WX/6hGD9AGzvNaoTv6q30V+17vp\nDMG5Rji8pwMoD8ar7ciY/A68kn/YAQW0rWQrCHp2RjgxI3Z1a9Ctw8b1GYgB\nFPz9\r\n=u9a5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-71a952-kfi09fzo_1601023872234_0.02035720641348382","host":"s3://npm-registry-packages"}},"1.2.0-feature-71a952-kfi1hokm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-71a952-kfi1hokm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-71a952-kfi1hokm","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4b6e6fe51603b1ff4a001d85da730be9ea1bc1e6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-71a952-kfi1hokm.tgz","fileCount":304,"integrity":"sha512-/DzoDfPUTTrhxqXm+Rfh83uNiOdF0pFL7zIhtkIRRc9Rk5VioHeMj1rWmu3PvZ1oP3xJNFVw4A2jaPXpPHX+YQ==","signatures":[{"sig":"MEQCIGYwqHqvoS3kP9OCz6naPTSvbampISenK1dc0zeipM/lAiAYY0m+vFWU+/VpblmB/sovwA8pAppm684FJZdG1FXo/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1502335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbbeQCRA9TVsSAnZWagAAC08P/3ou4P7Zc0pVEPoP+pDU\nmNfS6pHtddFrsSzqz/VCTNQ2qW4iBe+EXm1gN2fJS3A4hTvD2aYLCHsOfXSE\nRfudEHHuaWTvMKwPgWdJXpYKWfZmLjj56966fjdx3dMoDcNk5Uoh95lLXOXA\np62aE1IKtcQ0i/B28UnAK1enbp4cAEFkH6+8WZupWzUBWZLaT2aWmuyTZmVc\noHZT3FGVh0KJpwkteLnfneRkU/VrcTTDsWX0V1klOoeCUmGOziaz0CnSVTLM\nhW8yGN2NrV4haS+8Fe+dNPmvkk30Ta7FJVYVKZoNRQeG6i/elVHiDH0XK0sA\nN/s+yzEDcbRO+Kth0iHG94uVvTs5Z0VK9PjcGbzwzCwbYr3thkLvdIiwlhtE\nUNuZ/2sC4Y7iYs5JpxjUbnzNMBKnLM0bYoO0tJHv+qu7bezgchGN2dAUIwCB\nhx67jT4GjAWYdk3yR68m0wwlRKdJytiHJz2sK4hIeIEMU3QcFnDRkq1rWrzb\nd1RLRvab/3hpQFLqksGd/6y6C2wq+ggNRdELlajWubWHor/iFriwxbz+9fyj\nM7oAHfWHEtow43HeIveeyVf+DRLxbfr5ZnvsLmXxrVQZEV3JTvDU0Jh+uRry\nBGlZBjgxWVGrkfvKjFMzKKGxGap1shJ9QOR51/wV9fGoBNwQVC9cAmC24qxb\nXRrP\r\n=zbiL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-71a952-kfi1hokm_1601025936178_0.9734251713439801","host":"s3://npm-registry-packages"}},"1.2.0-feature-158471-kfi6dwsg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-158471-kfi6dwsg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-158471-kfi6dwsg","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"cccd95be0252e6649751f94c3f525935573bf805","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-158471-kfi6dwsg.tgz","fileCount":304,"integrity":"sha512-3piVftQ5PB3UFQIxuSL7O+WtwxEj41hXrhTRCsr8lB7G7EeHcMUq1QlDCdiilXvK7FE81XkzCgaYAsbmSDNP1g==","signatures":[{"sig":"MEUCIQCBcgqhf/BMS7L0mFHRXeSw5fu9HvE6hu6J7B61CF4crgIgUXSwn7Iiopc63342wwsud1HSbVyax1UKXpFtgKyROMs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbdeuCRA9TVsSAnZWagAAIJ0P+gJrQbw5oIacPbf4wBE5\nZBivOTrxMbImDA3WMy13zDCOtcFgvXj+bzQKhXjh+ZsCf7CQY5Qdzmz7oa/l\n9FrHtFyOi4kZokP8aaq7WaFcZcOoCrh1FCQQNAE8R4c8OObAj3eCG5VT+lc0\nm/ApiDp14ZL+qOgm3UE4X/8QeD+W+BXjjUq4n6ZNPrOu809VedGwfFdjXsv/\n6fkaqqS++sMJhRE2qdU9ruZ+qUxJnhpjV07ZrFBmwAlwQH45J/lDYAb8VkPA\n3X4JgDpDZAR+hzqRmIdbVhNYNesDhKfwKHG2J7Z/2oQ2P87iRe31AbrnxmTF\nH6cTbccGlpbraNUgWBtQdplz2yNkBJj6IUAFFkwVVpItBDMleQJnFFJBfLiV\nzpNhVh+x1N6P0XP+XNEvKuMcBt5S8wD/4yrJXna35fH7nmwgwW2Mcy5AQCEO\nPEs0lb+N59/3lk7a0ZjvdChkzRpf9iwKSqiPoU+xYN023mwYzs4A48nyyNgV\n0+GJJiwT4/bjdCAaAkLxhTIvYYdXnjoCR8RbVY730FP/FlsQ03ErxXYvLNWk\nOXU045I6n33bO6GcMz0oFXQEvZ4vbIFgAUEFI9qJv32UZnLSw2qT5gScTMzT\nKlOpEkRJzuIXYIAR3gfr66OqEEFHTRz4C5mP87gpxhn+7Owf1h8lOtMLSwGn\nGFq5\r\n=AWXf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-158471-kfi6dwsg_1601034158309_0.7278321296888564","host":"s3://npm-registry-packages"}},"1.2.0-alpha.10":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.10","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.10","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3730d1d41c453ae6ecc68d914bc2a48856f62b32","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.10.tgz","fileCount":304,"integrity":"sha512-9ku3m4ukdAogcEite3XnG3rMe/EnjSfSDRiSSaAPm8NGiOMso2+y82VQf99LSFRwwwkYYGzBk4VV2/gNLnHFIg==","signatures":[{"sig":"MEYCIQCCMAr+pcs1fJNLdopmL0s5vMCGO7aTW6rtowD5IbqWGAIhAKzAdnF9gY8sJQNgyxK6DHGZjKgln6YOXHhZQ0/j3dc+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbdiKCRA9TVsSAnZWagAAQpcP/il2XiiFTNicfhMI+7CX\nktce9cqEnETehqSmoSyxiy9cKzUceEZCci4pm3FqQgKJzscUjA+sf+pykwsp\n31Sf9gSRsEI2mjC/df18T3k+PX4ZXkeCHsuq9TDnLVTEKFdRu0foo/qHkGd8\n7eZzZygX4fyveMR813gIGD6k+KDXzmIEw1nBKUrgKJluHEAj98XhNU8cp7wd\nCelh2sVMqoY8GlK5Li5PGdxytkSiNCeJyMEXuyzqiz6s31/Ib5ZgaHr3l32w\nqXZijW2F0uj923KhsNzjeUK7YlXaUHEv76+x5vlo3XE+f4D/IOMKVzvI/BJx\naWL4hLiiGqnV+YebSnPz3sytCnTONMxY6yDv6TuNCxQkP6lu+bdAPe3nW4gb\nHS+SaKfOHK4x1QjmYyQtA8fdVFhQdB+n1c44UJ4JekpEUpuY0WifwUmU/S48\nZP/zdR5WOnUxkiyWyLOobgtE0QhBOtAi9VnCdnwHYE8SHNbXx/WbIcPuKZMP\nbNr0D1wLb/RNWLmZ8cL61ok6OUO2njMH3CoY2mdWOONjPn9ReKrcYmJhIH6G\nEyt6AbYv/xbKmxfL9hVF34MFcIKSANA4T7iRVfWNrmv2etb9MmhR7mItFLdc\nV8jwmN3nWVgXdsBwR4o8VjZQIwXWXaNp9vwI6JKGLHB3GqEqV6wYbI1Qi7K9\nifXG\r\n=/tT7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.10_1601034377620_0.005620855875702713","host":"s3://npm-registry-packages"}},"1.2.0-betafix-8d3f8a-kfo0t65y":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-betafix-8d3f8a-kfo0t65y","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-betafix-8d3f8a-kfo0t65y","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"e7c2c56af6eff15899a3848ebc3735d6acdd8117","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-betafix-8d3f8a-kfo0t65y.tgz","fileCount":304,"integrity":"sha512-ayUfj9q2F9d7CLAmoW7wCttJhRWrWq4RhADPc8YXZrqAnN7JOvyxG/7U1OLrlDbWCHLz6JPPIHkA4AUTxsMoZA==","signatures":[{"sig":"MEQCIHhiJ2seXe37jHGmkXFcKF3VCyzAaq6Pjg2t79+WFu9nAiACWl7oqf+K3WtlU/L1E1LPU0mBunvO1cN+Ya9NKHtoWQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfczxICRA9TVsSAnZWagAACXcP+wRVHFkSwdLaxZks0qRd\nYUjVqWwXYRin5+XnwyFMSesFbCOlPpIDFk/B5HhI4fThlIMFxZ1VeHAoWMpY\n8ILgn86CAZK8d2sylTy8UJUYBvv23t77RcqgPmQbptZo83hFfLLM8yWIgAJ9\nNZ6EaNLV+CPNFYZCfJCpZd0cWW8a/GX+J+xbTE6CG2glRNScya6PGyD18UOG\nA4krN6/gjkGRbqjh9/enQZEn8WnRQMHr1Q0bUBvezCqL1ElPbWry+BAMbWw8\nuSqaIkh7f92nQL0wENghU7jKwZG4UpDACmzjWn1jVet2p0//RnEbZikJ8MSH\nZFI3XmmQBZ1OunW1QZ0rLms6SKfR0XrsnvpiOKMS/Ba1KBQrq4qlDVvUG3s8\n+kQ7vUA/0115+iymg7/KtPRZZL5oCOB0HC/PSlQ7PXI8RB0UqZcLgfEIwsI0\n2/b5ad41xLL2xVaL2oYvLczrPOtN2tjwJTd0ICnDsGzeTuPTQbaJqkUDsvsf\nf8KgXJFxXc0ArtcT4GOiBkusAQXxpafATic9fVvkL/ieiVquh9l2GFdcaN2o\nSXGsZ+OWHtscsXleDz2RfuVKx0HYaeiWjdVkiP5Cfzvd50qiV9b5mQAzwliz\nVOJxVPTpgjB/nNGXLMVxBmbwLuCdYxOU325vHjgc2zFb+S+qkoyVny2ghPGY\nbTBm\r\n=W7ES\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-betafix-8d3f8a-kfo0t65y_1601387591912_0.9094854473232654","host":"s3://npm-registry-packages"}},"1.2.0-betafix-200c9d-kfo14ab3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-betafix-200c9d-kfo14ab3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-betafix-200c9d-kfo14ab3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"48a3a3c8c207c44864a2d9b8c8a1520368141308","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-betafix-200c9d-kfo14ab3.tgz","fileCount":304,"integrity":"sha512-X97IUXQoMGdwLbewqypjJP/bwzcEnGdQGz8AFSPLWKdX20916TrmqUEpKjojmPSGIxCjJtfVrwHKbq1ZDBe6BQ==","signatures":[{"sig":"MEUCIFBYaNqlsAsnGexP6rN78mOMlIi7MJ2BslY9aHcenH/rAiEA0Wyrqud9AkE7r6iufeCFnLRUMariLyZenWHDcy6mLN4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcz5NCRA9TVsSAnZWagAAB0MQAJK1Z79mfjHoVB+hJxOl\nN9iUbBhARcq1LFJQLvWWF+o0lTr1pHSGcC9hlD987KwEfOGaC7XzBNHql1/3\nf/Xdz3ADxnN3i+xR/RTmcejMP0EkLixaqHW+H/hRwB0HEcpqhx7QVumk78ts\nE0FZzd9bdrmFEn15VAMUyic8+PslzMf49q3kWWPJjBp/qipNMINZ90ZwpskN\nPrXJztCERlI5DDdeF0cvYin+PMrLJ8J9FHWH7aWJNgq7UJQyXi6NWDf5vMiI\nKKH3P2nkexwxcINCEAOjXPypQLZ2TchoYm1bE8mLr9NLQHRkfh8IC8Ve36+Y\narHrTygIswKESEZVriZ7heE9cRIa7B731RbPbwpH2/BXwnwsZUnLIKM1e72T\n4jJBqXG3AAV8ku8+9GOUbdhJn1xmWiFNLTJVxJmhKh95Nz+9kvKwgrGgQPqt\nKvLR96PivxuMgMNOrBsoZ7Y9zl3E50zvQBqcVT4NDA8JdS79+839JPIbRxzs\nqQgRvL1N4M9Rz/mEFbo8ccbcmum+6XlxQIrNsr95DvbBzbt9l7nmm9RqruXh\nd+cJDX3Wgd8H19AojN7Q5xZYu/Dmr1k1zZBGGVkWQlCjVFy94mPmqvwX84os\nsxVCL9uZZD4ewS7t85EV3Wl0yty2svvGIlFhI2pD/4imCmbh96Fe1DhBO/a2\n/biJ\r\n=fTx7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-betafix-200c9d-kfo14ab3_1601388108432_0.6551144423554156","host":"s3://npm-registry-packages"}},"1.2.0-betafix-0b8bad-kfo16t4u":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-betafix-0b8bad-kfo16t4u","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-betafix-0b8bad-kfo16t4u","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"dd6c3f37c0b26586dcccb8954f922c9044c62c11","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-betafix-0b8bad-kfo16t4u.tgz","fileCount":304,"integrity":"sha512-808L+uCoXFlYfLrK25NmNnAYHhjPKVgqgmV+Kc6BRMUUuUXY1aPu6lJz6Uub1ZCSxyhkaycMIKcO5w0F/LKrgA==","signatures":[{"sig":"MEYCIQCHHEr8uxelZ/bEQ498aze8hPaIv+QOmvtoU7dZ6Ry06wIhAKxMwnghwWUzavfQcae8cXrm55FnB4FSYLlH4R3pbkdQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcz7GCRA9TVsSAnZWagAAJ7sP+wVEDa0Rd+DplQJGjNB3\n92azTgJ3WVM4Tzy5SsNfghgpAK9MqwNWHFpASbu2ncHefHXbHEa7K4NaG4Kr\n4uKDFlXJMyyCNNsk70XW6tnuXbxUMaLRusEmojuol40BSG5YI8c7rtv/3thP\navm9thTJ2auuaF6NwixG0qG1563Bk//RkeDLoyyAvH6i65abG74fbesK+s/Y\niuagOGTgOlbglbb8iA/5l/OZ7GyL8peFMZcS1KQ81CXtiAHNrRMyTP9o9JOq\nY33flBAv4YIDoyiw01/Rh0xJytO7jhESnfzubrsFYw/i4tk24YsCoj/fIe53\nErk7/oNh64YSdHfmo1OBYJT/KLBXvMTLwMYgLPcQWRU/ntP8sqnK9lXt7Zh6\nIf1UsTjGjzFLLEcGG9FlZqrYtOhYc7vp4wVmbpCC/Zjwh+X/w44JJWs3FTVV\nfhAwHY+T/eWfauu1sR4lLvozNBtlD+SfIyHvwCPUbQIM1jrzBeBihobiy8xL\nRAbxLd3Lr3LxHWW53/pDY5RuK/9byJOKrdZzObTCrvQGm+GYqC1TQSkygICU\no+KkK50ftq/6U/20fBZ73o5ry71HKaka45zSW6/E00awUWbwijzVhSoQzl5h\nxFSPjdxzA2hu8Wq9nYrK7DrPhEK+oMeghe0BEDE0uAIjpR+bpM/Q3L7tcCUB\nOjsQ\r\n=cLaF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-betafix-0b8bad-kfo16t4u_1601388229801_0.3985276548014436","host":"s3://npm-registry-packages"}},"1.2.0-betafix-11a504-kfo1bv7u":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-betafix-11a504-kfo1bv7u","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-betafix-11a504-kfo1bv7u","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"06e0127cb7611b15a93b35f2a5fb2c6a116a4ec2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-betafix-11a504-kfo1bv7u.tgz","fileCount":304,"integrity":"sha512-z5Y+6wWbYDfCjvxCLoCfyTacjcuiq8FXVN6ECOWhdFMT+pPPz0BJ7awsA4KmPA1JGS7bhkzMLUdOSpf5oyganw==","signatures":[{"sig":"MEYCIQDmj/sORkTaQ9acUXuayTvdwNFb/gG2KfW4WkwFdMH2TQIhALlNogF4Yw5nyPvFBM0IbSuP2UAcnP1c/58dXkFvQKTx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcz+vCRA9TVsSAnZWagAAO38P/2idi/u1KulZxuImUg16\nJLRMzDg6bgST1Ks6gEJRxHqNpqkAGr3cz7sZgeZHKqiF3OqsSrCWCogKJPjH\n4BWCigjhIggGyDv4WmexABZTwBV0kf7TCxPVtEnIiR+k0fPys/8V93Cq7Ig0\nttnAoi/aMIpDtHbzA6TBy+QJvJ3bEYQsO3lEWUjI7S9ynz+p/FockHPuwChC\nBjtO5yb+hAhoUbSn8tIa/gCZtQUYG9bNXls7MYBRUyrqF8UfgNc0YnzBlQnW\nsk2nJdqw6hV/q5XWjh0ls8/hjyai3bKL0sY5XvjBaO7Rj/41Nlz87nHD1Bjy\ntswzx9WVi1FtTAABT3XsK9MXuNjOaNkPEG9v20R4foMt7e6NYZ9jgQBGnwvX\nI9NwlQZVKkXRCYWAVKJa5HSNxLuxdvGzjW3Kg6mVW7Sq15JEbGS4/IMwX6i7\nOJ3Q3yslw2MUO+Ht0rR/64Sf28+17O9OwFk2vyk7iZfyirJ+wAyldY51r0ow\nEMhiZzD0c3bJJRDVcBnpP/iuKV4y+vrhwmBm6ZGw/2vmJ1e1pfOgarILCGzh\nT9bXBcUs0GzChikd8cJCF1G/27XKBqeLr/mnfebigf09NXqwh50LT7osNeSq\nwFLUl65GnYydMgI/cnLmZHonR0LYP+/8mvLr+B1LLcZWdkr7B2IG7q79TEWS\n88Ur\r\n=JiIf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-betafix-11a504-kfo1bv7u_1601388462476_0.7994233421193759","host":"s3://npm-registry-packages"}},"1.2.0-feature-b6c044-kfo1dhse":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-b6c044-kfo1dhse","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-b6c044-kfo1dhse","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"da1ec13a423a5ca94bec67d5ee20ccad4b97f15f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-b6c044-kfo1dhse.tgz","fileCount":304,"integrity":"sha512-eI6I6QalRk+rPR5rDfjp5kT+5kgjHeU8HVE/6qUwLr4Tb2NES9dhe9Kczsm3rhW3pTa7pazfyhvWqOYh/ywRtQ==","signatures":[{"sig":"MEYCIQCSlcJ6N8ZgopwbA0UZw+zylcmqdq0y/maVpcPHlr65ZQIhAOC7dOAJ3kYsP/McPLUmSOP3oG8wVovQh9I/KC1KbFB8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcz/5CRA9TVsSAnZWagAAf/wQAKB2zfLIHAyOpVmUzAEv\n2tw8Y5ssEwckgdXtiiwte2ffs6VKvi9Uvz145pEMbumfdUqej3+4GUkdxTWz\nswYfiBoUjETr6U9XOUzuYVGVAoDytMjND3gnkqpUQqdUbvu2RnfGYR765XIP\nBXALeCCowpfPZzOeB44bQLOl/dojnV/H9QIn31si7+xJ4nvZ4JwwMEpztjPE\nka8ANMO2FbOPePG/mi0/1qliz++jDJRGVj+oNkokPmgxFe/Eoi6djjp8Tciq\n2gvovdYBXHJewdXGFMywN34sb4jEBWTiDCENP3tx4xp+Xl1Bm1EJZA+TFbEn\ng6OtoNtl6gV9jqAqyC0vjTFFBJzTSK8vEEjdIsFqCO76woexMScB6VYViavE\nBzn3JOK8lzeF+YANSv78BTfh06Cs3lc4Lb9Wj170TdS3rupQOcdojibpXRm1\nvhsV0anyW9E1o+3Ewc77uij8SLpyxfg7oboZUP6J7/F7FIsNarJCtEv9JFqw\nSitNCYjyWgDwN4hHWX8GPWiKhOGbxtj6bTXwaDz9toJ3GOFpckb/S5Zwdu8Q\nyvQ0hgmRFWqzV9hpLZQhOLgUrZ6Knrv76a0jEylGL0JR387mJeZoicHi+MEQ\n38tYmuuhiPR+if7cRgErJBOsomYu2vQtXqBSj8n8u6hALYZzcClrdo+nUe7K\nzBDn\r\n=vSq7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-b6c044-kfo1dhse_1601388537003_0.8785579506219061","host":"s3://npm-registry-packages"}},"1.2.0-alpha.11":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.11","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.11","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b1f1123d737423643ba6e0aa380036ebee113587","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.11.tgz","fileCount":304,"integrity":"sha512-OTOF8HPalhsloxkmEaWLpCn6auJD4s+jZBSTtWbi0tJQ6LxkRrPnuspUNe9lBHXbEYI8BBeNGV3UePy76+52qA==","signatures":[{"sig":"MEUCIQDLeBjQC6vZXJly0K566c6TEqEyFIWWdDV7Z29WdsmOawIgIVs7gB/8XFRVJEfJgFCexCeYSBQZnLx/QgN2F0ix8+M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc0DmCRA9TVsSAnZWagAAhEMP/infoqzkiUGmv/wU1SBF\nAmfQnf8mEEY0ggBeMZ3/fX5Ucx5OGoNVBqy3oMiYU9gux7RIECbtywXEcpU7\nsQ3yeHKOSuE2ZfoaRSow4owLl07jOK+fbbCDdn4lKgnvzDRATjNK3JZ+WVRa\ntRzRjjXpkQkEc1hl2cL/RCE6prZUiwY5695YoXQNfpr0EHY/36gMa+a5vsK0\n6MqXsgvIERRCDbi241eAqhb4C02HYkDgs6z4J3mESXQz25MO2as0U1FmJViP\n9rO0s4CyEfBr2wruUElgky5vmhAzYvrQRPBcXm/84miHvAVZVYdUzoqoQ+DB\nUJh5UivD0tNHgAxW7GDW+9Oq2y9ff9ERTXcsTfHqZ12WXWGNi8VKzXZZfsoC\n5MF03UkhS+2TVFFK3wsWEhyplntM3mz14wXndIjLGakNav80+FK9aIhrxZlS\nm06PvEUedt/Ypa1E393SuDZ+o3nyWa3GUUYH+BR+I2RvfNRxgRtwFoq8Mcxh\nk8BAliuPGbYHJ5RF8k6jvUdnug60OtjitmSqBI0BoyQZS8kaqkEuOz1xIiTs\nDvtmBx/k+zxeeCbsmgExQx4WaQ/6VmyHNT/VB+GlkC1xoJ64+oZUOCWHNneU\nB+7w70DqzNYvO9cc2NpSaSxyWWsCQ9lCgg58j8m6FfQrRiZxEd6WpAUC0rYU\ndg+D\r\n=kiS+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.11_1601388773456_0.8391282085060161","host":"s3://npm-registry-packages"}},"1.2.0-feature-a33417-kfo1qy31":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-a33417-kfo1qy31","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-a33417-kfo1qy31","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f646ce64ce81f37602c1da04f136e8d15cf2a0c7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-a33417-kfo1qy31.tgz","fileCount":304,"integrity":"sha512-PygCh0W2RdD2mF1E9CgsUs1CpviSwv4GnixxlPZdrEQEXMKbxyq8NhRgeiD19g30ZrOSM4INnTHatPhm7yEPfw==","signatures":[{"sig":"MEUCIQCijX+CQ0hXjQf1UPR2KrJAsAioi1u7C+aZbHbMP4AJoQIgXE5H0bFAh4eAOABObMu64Us0Xdmjgm2S6++o1xCVjSs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc0JuCRA9TVsSAnZWagAAvFUP/2Qa0rjrR1rDScCSgcIp\nz7AFgMOzMpEPYWvonyx8hIdTsyIrxX/5HW8OP8gMgvFghxRL8mctST1YEYXw\nC+yWKsjZTlzUzit03ziqC46ylLRY8cSyXtFdNZizZ+A6nOtaX3SdQiGV2zcj\njfD1NL2RoBMg1V5k6vjwzc1n2WjHD+Q1Cu/xuuMNrCQDRBAR6vGWarxpfK20\nzafCaym/E+R/V8RmCj2OeUmDcKYOolF3JfdpCJ69lCP25I/hx38p7+lckD1D\nyeBkI8JLpjrmm2aC3w37W93nSx4vBiCVofYo4wwfSnCHvBLnE7erqeaw2wde\nSrWOZJ2cU/6cZ39r7jA1UFVSWSg4xLyNgT1FqoDv+QB+xRMImepmJAh64vd7\ngfizfuQKE1VHxJMF1id8K72JGpUxWEhdUrlcn1zUXc/NOSKJwUZoHAT9sgxq\nNJfXJpVypDA8fqQISROkYJFV6mjvSMVQOAcsGLHUCOU6jJCf8nhI+IPlVicg\nfI4lAzUG+boBWoNVppptVdjN1cwmxnI0Xhf3M16vClPETnleKD8eXLaFJUIL\nbSG+IRQ/gpgERQyN7VNk8c55/IVC5rJlwZFHaMtEkxbVJmeHYgcv/7C0fX+R\nYiaZARdCBHbbPFlaG/3ZKCs1GlraWvmCMdGPQ2xZpeMP9y/y9NoBXcmcp7Kg\nfTnR\r\n=tkRZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_configuration-service_from_inversify"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-a33417-kfo1qy31_1601389165920_0.4333851183177315","host":"s3://npm-registry-packages"}},"1.2.0-feature-b1a893-kfo1zqcz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-b1a893-kfo1zqcz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-b1a893-kfo1zqcz","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core.Meta#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core.Meta/issues"},"dist":{"shasum":"6a70ec889c63156565426b5dbd4a5483e0ac553a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-b1a893-kfo1zqcz.tgz","fileCount":304,"integrity":"sha512-ybfVxg1syaom2xLRkixGT0hqXWdZ+dQ50o3ytVb7wu+iQPIHtsiycDSIBnJa3Y8dIVf5glDuMLN7+2m2bP8j6w==","signatures":[{"sig":"MEQCIAXBG8fcAt6QUMwvqMV14FDgxVZvOTLxbadsYj8aZIxlAiBqYx/6oUkQoP09CMTqU1GoWomg6hZ0xp2D6zPJfs069w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc0QGCRA9TVsSAnZWagAA/uYP/2qPVizVTwmp1Ph8K04L\nc+b1mpjTuq4omzSVt1oi0i4siSHC3ZiyetVPnR84LJ5FbEslYtmQzRvvUlUf\nBae1iVWiTYubFVm5hPjoDWpHFHrNDZ70a7bexqvUDa+xCqv19xKaNkrIQptX\nU3UoKuWzYoEv8zxYN6r+52jqtuKJYXevqyBgD3mjvVQbERaCuDBsT3PG1iJG\nwdj2dY3G+QAM2YRLKlmxUerxsvnInNgw3WLxZHRsypLd7txZpq2u2vjI8NMC\nWQfEIZq9SelyRb5N5cOyJKf8LtzcIJOYihUVcM0AqvsjYe0JN6TUTWlucd3f\nm3eHR260JINZe4e10Hi6dXXl7P0EV9ToKkwnWj/9phPW5+vLHw97LH5OKMgF\n0VYjhJWE+f0ZDm5dO9Q0HuyiHQ/Zq26J9d4jo3oNQJ1xFdIg/7wkc8jztlNt\noDj/ICZ0Mfr4xYaHTgDFkKseR0W0ficzwR4U2jLdfEvrRCAMcABjG+X9OJY2\nOAUuAJJ0RVkxlK0mmCa/A3ED+evpHgNwUkH1vO3IyuyVoG0qIb3fOfxmWwLB\nKymWa6n4XwgVDmvKZ612SKhmVj53jVXgZcDY9wwgkj+3lq/DmWdhuw/83yay\nqlBLrCJjRb+Y5Fd+LoBCQJJUpYCQcxYdBPUBAQ3diSgag/qk2aLFufkdEaBd\n9CP2\r\n=C+ws\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.Meta.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_configuration-service_from_inversify"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-b1a893-kfo1zqcz_1601389574442_0.01426836967513867","host":"s3://npm-registry-packages"}},"1.2.0-beta.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-beta.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-beta.3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"dcf9ceb10f7b857ed4951122e0438d0ed1078a9e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-beta.3.tgz","fileCount":304,"integrity":"sha512-xQAeYZL9rHUYGFBG3/AIfogs9IrpUzpIL65iDm7zjScftI4YCTBiFdu/4D7soE5F/A+Lf+EFNWp4+TTsZuCx3g==","signatures":[{"sig":"MEYCIQCuSGs/SVCDHj8So0LfkjKyrSGwggaipgzeMC4rJ2YqjAIhAMtR3LouHA54f5PtMM+4bjNJEIKuBEg1uZeZRojWxo3E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491557,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc5csCRA9TVsSAnZWagAAbpYP/3syPcmUPIZp2csVbCE/\nt6RZOQ17A9OPx7vrfXOTqCrXp+F2fRV+sjs13KVkvZ2x4gNQv0t7ByznsHXr\nfrkrH83MwKF5FFKAilVpvUsVvgGKYIP3kdr73mAKDaBTbvPQKw2xo7+8c9FP\n93AOBrYsy6OC+WsmwUjhCQP/N9J4SsC3LdXvpM96WfuK8TdsryNeTb7fgAQH\nAyyn+5PsWqqHHxT3q575Z1aj/4Klnkac86n112Ge/mtXfMm5CfwB/oVXhCmg\n0redwemG2kqCByjgS9HfcySbpbNzhwS/yVeOdDem1OiKfOqnnWApLhbZ+MvN\nujv49mnbFh/hwtpbaMCf/jLNPXAIxK2J6XLQ3LFDSicB11Rd69qPU/E4pzEZ\nL2dsEUMgujOe+jgfDgj1LIDRfBfSKeBiZVzOYHUAAYkklfhaRcyiGAvICuJo\nlc8M4qKUOuggfO68mkV1aWOaQHFbdDMwtztRRGkhDsslFNS3r2wqrS2vOlvx\nv+PScxvDv3pPtXFVGEsp209rQ0disyUxuF6AFAH5iVM78QBW8kWuuzyk5cKH\nj7Dk7qgXC3Xy29hlVLydzxRUWDGiZlFu1tiDoNK4RZizuFiQhuJCw56RTRNb\nzLUeJfGqurj+amAji6E8ecHKrADHN1jUbHqVAz2KTl8TZF6ol20Ra8FjRReI\nk5zX\r\n=RGA6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-beta.3_1601410860376_0.6327298480615955","host":"s3://npm-registry-packages"}},"1.2.0-alpha.12":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-alpha.12","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-alpha.12","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a10775d7a1822b1585bd5e578417d59b1ecd9f45","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-alpha.12.tgz","fileCount":304,"integrity":"sha512-wkFwEJBGNQtQkfW3opJegkE9DHYzv5OhQ/txS8aWwUDhLjgZPcB8xfN5r0WFkgRMtzUqbSGDUwiZX2s0s3WOZg==","signatures":[{"sig":"MEQCID2P4E4Bse5Bp6AHVOgalZ+aW9eurcTpidJhwqtrbR0bAiANwRgRev9rC//xYuKnyvLRXlPiabvxvzny/HjGS/zneQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc50vCRA9TVsSAnZWagAA7rkP/AvCMOO6gAqhoCmegt7L\nOJlrwbcQ09EVSILjjlQ3TWnYXt7E2Ul1CVE5heUteAyVQ6GY6yFmq7DyRrA1\nMyywJhtkLgbh5pKtMSAqGkmtbcGtTJKeZzjkLk6wfOlsHc7W0vzpsBgqxX9K\nBaTdVFi5QUWc/iNTWxwt02Nmzh8Vbx/a2BL0CMtcrbARzw2d0NRefrzf8kuy\nh4GTObXeh7lBXDKfyll4qJh8U9aGiYXKYz9frUvXCjiDI1jeUwL1SjJyP08n\n2To9qBwI0Of975+ao0sVOW88TvEvF1q1pksFMe43xoCOJN2YiNRlfJXwIFIq\nRJVL5ItpSUoqVXeA2BC+yetWXra/yyahgTdOChoUzHg5DtJfkOrRz0YPNEj3\nH0diVRLN5EGDjSsgJktcOTPvvoc/FYsOXPkg1Rg8odgOUNViEkt5hiaeoiGB\n4RJFHMg7lLwVC0yrYPWPM4xIYsVG9TJX//YZ6snr9SwfMlz2op++ZD4oOUSf\nbHg0nVhppEWOfijcmlAE8BomySQrEp5HUnkU6Y+tjQFV4hzL1xaA8s22hei4\nG3B+dKWktJ6JVCXmUiacewGkkZ49xRWFZTf1L4F2Dp/eJhsJ+SAyNb0bE2YL\nFC8H1N1GPYzL2FgR8JnRXhX1sTWJkbMoKCbXrRaNynyGBOVKs2JhQZWk3H6f\ntPra\r\n=qKpH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-alpha.12_1601412397736_0.28781391662782374","host":"s3://npm-registry-packages"}},"1.2.0-feature-34cea0-kfp1feti":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-34cea0-kfp1feti","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-34cea0-kfp1feti","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"367d5b5e73a6258abdab0e5c6d0ca97f806f09c8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-34cea0-kfp1feti.tgz","fileCount":304,"integrity":"sha512-qZKrWDNBay36WCKlfds5CVtpDxbemkTteveI/+K6rc9FFEqas7Nl9FGuLxqwgkiqkon0IW9+tPQgaxactXv2KA==","signatures":[{"sig":"MEQCIFhPf1kDxBgC0BpH7pt3BbreJUFB/7cMIWzIv506QJ6KAiAPHzeWYeFSAHtBcobpjXg54RP6AzHrQmmgXFvtE/BmAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdCyFCRA9TVsSAnZWagAApeYQAIGRRdiN6Z/PrcQhu4Vs\nOSoAYLYE9LQdL7At8SGN98iIcVBohcUFZpYJ+Cc930OUtzuaMnlKjAgUxzNN\nqZUJW5XsWCzNdxm7X4Dy1Sx6k2IT0ikngdUQdfqmtJMzVhFNK9Y996BVSKSC\nWowVa1wZX2NJqaEXQiTZoCt8ppT9NLcZuEs3vYKKZzi5P0SDS1TZfwWx1RR6\natBSS+AVgKEpNbc1FUslArBO3mr0eKslXBgFs+1PoN9WXiwaHmZeVtKUc7hX\ndIURYcR2rJ4kd0zG8zdoPzElxMopwNL7ubtSbUizfGagfldXJIToHrHf55zD\nh5gYOJ+wMielumlkXyEEqnaIGbSPGpGSMHMhtS/PX5+LziWxnSJCSjR1+h7q\nqWQJVtG+x1CI5Mvf3erv9gpqwMwjR8ixH0fwSI2QbicAPDPrZr8i4nSAytjT\nAsEV0iet7QpQhNzk3Je/VXjTPZZD6G05gkcMsALjZYKLWdpCmUHNidjKHwQF\nkOR/tDN3keyVDjKw5aWwaTpnqsHEeJesG5zUeuZavmHbMmQUIugBm18uWO/5\nJlhPo6va8i/NDjY4Y27DYM4XNZRkZa/yrcfK7ibWPtJKv33oKU1sP+JaFxDb\nVbxrfmft6KItuQG50NlPQvgBCJSKxa9XU1Vi+hvkEaiEmeEmNGrq72+qBs05\nlXYc\r\n=2x5G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-34cea0-kfp1feti_1601449092187_0.1736294845304751","host":"s3://npm-registry-packages"}},"1.2.0-feature-34cea0-kfp1kos8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-34cea0-kfp1kos8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-34cea0-kfp1kos8","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1ddcc5dd7a659915573169cac8840d1e58a14987","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-34cea0-kfp1kos8.tgz","fileCount":304,"integrity":"sha512-uNxumpwf+mN7/+ded7Oy77pGlqe8wBxoWHB1nydOmK0rSg7hyfyclud8kT0TjF8C5inlYFquzh9hSm07zDb1Qg==","signatures":[{"sig":"MEUCIQCCHfoAmb/UnYCwIDk35W7ui12kmbJj+BXxRn3zSZxsoAIgIYuxEPFBYqwsVa+lVtl2pYBW40q3JQfY4cChANbYwhQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdC18CRA9TVsSAnZWagAAzrUP+gJjLYG7YaMEv63GA8hF\nco+Y/0EYHKwWIhNj7k1WScek6D7oLhcI3MBFBquNnQQJNjCcHeb6CI/mg6df\nu0r1A8xUZjVhsbXOgzi6iJJxOEKLeVCFoGhUQ8SsOvgoNuUnZNuuL7nnXLfg\n2sT4IHnhF2qYoTTb14if3L2XeSkWfNxtyOm4WrigGkcmHDg0GXRpQAHYXj6Z\nsaSGD+Sl7pcxitCS433+/I6/NIxe5qbcM2kMyd+1CqNYs47htZc3SESLWa9t\nI+FaSq9594byYmKq2MXKQBOrGB4A6tyYHKRImteKUZWvOLZMV3JpUmdzlxuq\n6lomxE0m+Ah7sHa5KHLJXST+hETsHec6QYPlEDJOykI1jtk7gMhIoKxJVKHr\n2peZuIsuenyP4999mfsQjXTeUG86wTJmDBO0nr0txcGVfZVUmtG6btY+jbsx\ngSBNNdJNN1QNMxIs6XqjhfIscpVMIbEVvsAuLadds60rwrNObkhF6mzu5qMT\nKcT/wzkO9TEX46R2V8JOa8VV7YIkOAo+SlWT893hDv58JHPbnxJTFugu/GI+\nn70IsfhV7Yc+aLzDoYuOWtcOzUJ/SVOc8uFnsGiCfxGxnRrMInHQjP3EHynv\n5MJEDSdrA+3jxHQtgdRlimZoOWXJTLuaIycvlMQuP25IOtU5z2cSpPXD18nH\nlM+L\r\n=7AZX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-34cea0-kfp1kos8_1601449339493_0.8620031373200692","host":"s3://npm-registry-packages"}},"1.2.0-feature-8a9af0-kfp1y4ah":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-feature-8a9af0-kfp1y4ah","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-feature-8a9af0-kfp1y4ah","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"7d752c2b93bbeb4db7f602f246f9a1f42b16600b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-feature-8a9af0-kfp1y4ah.tgz","fileCount":304,"integrity":"sha512-ir6tQgbixBJ/I05c/TtRR7djtYsjpaLxF+GKK5IG84phu8W9mcuuKE0kDaxsusjiBHEgNI6YYxDYUyh+W0HitA==","signatures":[{"sig":"MEYCIQDF29mdZkHgwQktz75eQJYHAlyWb+4rtATXgBKxXlcUPQIhANTXzWM+93fKwXK+0/+ZH3YkklQ2F5/cc2IuyGgxRr1V","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdC/uCRA9TVsSAnZWagAA0isQAKNlTDfTurHVEqDL87cn\n8josXVMzOWF6DqlE6hEwMJTcuaU/XKQkil7wW8/MTwwnK6kCHvwSTwlQjeVE\n57KzCHsc8qu38dWedQmf9JWH1N6RTf5ua2XTDWYLuiP98DBazdw8GTiRBoHm\ny9SR4k54P2rALCfCL79CXLwuv3p3Jm4ovsE5afTJkvqsRBAzW4EawP2anEHT\n4B0J+qiJ3ONvh3w5wtQQVjZ/gX/6cvek5FDIK7i6UeT4QOWnxJHIcBnar0z2\nXY46bwqm24EBmHS3JL4WQfNQO3vg6OuSQ33Asp1kQTSUZTHS+21PaXjiUExu\nmv9f8hyIOAlyCybDGWLM2PJaMyfUoLvXJ8t/2Wb9NhEsqimtNgAWn9dPxemc\nmy7ydsvgywAFcSuWVfCYJb3pK36PrSyEgxgDC5+ffy5fGk4tayqnUCf9s0Ad\nTIkjFU/+C1i0pSy1VdgKNsq0B42c/4J7iK3bl+zEVkyiOEi0iUV4Xr+SBeF+\nsEVdZjGxLETkXiQy71XkmdJWbEuLZv/LwDn54IRXGwatDMvD8QVZwlJ73IVS\nOJSkpEYwJ+kIf9PFfL8U89cM+l/oyZ5kB3KX0lInfcTHuZrTbad82us80nP4\nC+rcCNFWfkRpPggU4Xobss3NHc6qcWMKOz9dCWRh8jB/A9yinavGAVy3V9VZ\ny0hK\r\n=aaRL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-feature-8a9af0-kfp1y4ah_1601449966164_0.2552756574827353","host":"s3://npm-registry-packages"}},"1.3.0-feature-992e4c-kfp24wb9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-992e4c-kfp24wb9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-992e4c-kfp24wb9","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"c084377c402a23e0bfa72360da1ecd8af5c1342c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-992e4c-kfp24wb9.tgz","fileCount":304,"integrity":"sha512-1m6NX8AumNpOfcqRZqrkDHTHaf1sG4Bdeg84itTWEYZdCt6nUiFeGWVcquYs7bC0VE0CctRNd1Gh4DujCnqiXA==","signatures":[{"sig":"MEUCIALgg4C2KHVbVrO9s3ugW/NBCDFnwo5PZswS6/mnXQ0aAiEAshsCKWfKKD9oj+lPXphuhn3AkcokMMkQAKjdkxeeXSU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdDEnCRA9TVsSAnZWagAA9i8P/0aPyQRUTV2sw45R3KVs\nY9p04OYQKG6nD0cnOEjzENh+SW37h+QirkwVtQo35GRxTevjaJZmF9xiATS/\nNcz9Ba12M5fmdVuwhx45rvvzjVA4XulsgLNKgXSvJmHXfFm1S9xhOn+VHUde\nSVHV6HC+xkB3sVxEHwqflt1MjQOVqPL/x5XArvfW0UptcxDGhHVlSdTpEh12\nGIDCOYPZ2IqSy3Tw608yM+s4FUuvqIVSKDhddCWF4szJPN+rzo0qjq/sgmWF\nqTbZ/3JgHnxWXc9aKaQbZmsj96HRpQ3bR2km/3thjsrYEKq2XPvIwkAcLN+H\n89pCzs9sRkeL6YtC6Vvzcai//Lk1NUyCfZvexUjPawWNRUGLWzwccvx+uxDL\nyDWGMhne7FC//ANxlKSpXHeTTzcj7C/0F134IGy/2KF4MLpmOr36uU8mV452\n2SajdsuwCkTN2BDyI0C920pdLGneED1k/hebBemovv1ssEy3Fl6y7SCQkW1o\n5M0dOLV7tLwvnPsF7q0TkX8yb62LsAU0uLOaLlBRowHBg6qnpBVC47ZWOyzn\nLf1/XEgPe/6vKG2fen7SQf9k/STFlyRYZ+qW3H2+J7mGLIY/cze9umSKKhiB\n2d4q7f1XSanSqi/L/I6zCosmMk69cXQLnvWTiXJV1zW0zDfJt302bF/bGrOd\nSK6j\r\n=QZJE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-992e4c-kfp24wb9_1601450278488_0.44335590695875604","host":"s3://npm-registry-packages"}},"1.3.0-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-alpha.1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"11cc6854bb7c797d62d9dd75f47507b80c015033","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-alpha.1.tgz","fileCount":304,"integrity":"sha512-jLedf1zBr2xig11hpCe7vjWyxVxIcAuNgOtUc/UoStQIH++AE0UiM6AIJhPK1tcySqRd1NET/XZoSWc6b88AKQ==","signatures":[{"sig":"MEUCICY22fOYYwsvUEV3gG4NCJGa9+u5V4Enc/J3nyjEOLjqAiEAgTN27JfsKgHOHh8X2LeYSm0j71ErpqCJM49YTV8N9qA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdDIYCRA9TVsSAnZWagAAf7EP/2sRs7ebIU2Fn+MOCHPw\nj4WTQaDsmDIzDtxVQJDQMw6F6MujRC9gxrqU8UiBllwtfHQCFVKFN15r86gA\n0/R8B/AhYbUtsmh/fg9yzOsOz9K13MR8UZGQn47fOmtxZVIjMP7VJgMW3ncA\nryw2+lAg73gXuLYrLPftYg/DNqexsSXOXVAzxICjc6ODZ21giShJWDcP65mC\njJ075DEiyGpQi7Gsp7GKsEa/vWTzWklHK/7kw2I+gcqM+rnGY6SaYldg/PJ+\nvvCPpFRQK3UtCUo1P9LNZYnX95QLqH4D8IVnQKnDpLVOyhY8LZK4lvj+C2z4\nOy7SiJz6L7sJB5/dWyKttkYh/IHPnelZ/xxlhbRdf+S2akITdSOUKi1xcMdq\nU1ehAToNsCuDxnTD4Ud1YSBpnQ11x7PfNPVtvYLikja/JTG2NlyfJdtYfZI/\nDo8O+ujgXDxNsC9YA+J/1FK8XwNuQgNx+VxdismDMHk4xqR4ecykjNKlInof\nffgS2smCyTOC4jxQHnacGzsQBSRMXw7XeHdDiu9o0ckE7rBdgZBFdSFid5kD\ntWvHBdZAs5FQ0kDl44xYtVRWaHaaLP9ZLD2BRt/5k4ikaoAxqpwKMRkC66YR\nhxdq58bylzct8+84PUb8j6FjwAH01hSJyzZNAVaG51/WTXRatd3WpghkFMg1\nNAva\r\n=tsq8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-alpha.1_1601450519963_0.06809627337096891","host":"s3://npm-registry-packages"}},"1.3.0-feature-23c8ca-kfp44119":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-23c8ca-kfp44119","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-23c8ca-kfp44119","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core.Meta#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core.Meta/issues"},"dist":{"shasum":"071ea97ad0659d65e14d7e99d665e1a1fd75f4ee","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-23c8ca-kfp44119.tgz","fileCount":304,"integrity":"sha512-4Uhp6YpdXv70ERwc283O0j7d/5Qx6mAmwOiNWAd7ILha+2rbV9RLjQvVKsNEwIvWzIoqUCAxP01IfQOxLe7BcA==","signatures":[{"sig":"MEQCIBzDztTJR0JcBILl7bawdR9lr4lJhuo8pOL1lsNOI1TGAiBecqzN4GYis5bnQIhXWuHt6AfPjY50/9ZqvzoZhxcuBQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdD4gCRA9TVsSAnZWagAAIGYP/0/5dkHgX6TTRSCvEEjk\n5curyZBggRQCE9+YGY1rmoWlPXjGTWo7sydAD1o+NVIn7kLHhY+NRTyMRfNm\nfeQtBP8mj7i8JTQCLwPO4DUXk/vn1kNKOQuYzcfqhF+REUeAx0DZpmhoxSPd\n7IhISreOfdJucqvyPEBE62k/XESL7cZZku0SOsC/ioYvnxlFIR7cTbrs7hKr\nh1OIGYiTPYV8Vv7IPrfSMzz+61LPdfO48DBdsyk4WOQ/LmcmlE5q0MgSvMXb\n2XaSxHivB2I9MzShbYzXRnpu9alxpB+DNIgVLhTVTr2IIwN40WKa7b3lqnnP\n4dMEDc7n6AR+8YTOemyRo2AXH7J9ocw1U4mw1e/n0kBeqoj6gzEiJK2szPOA\nIhEyUIz5KDJ7qm005MyODyOLscAYgadxdtLhHuFEHOY+fPAkNr3lDjf03JvM\nZW4TAejTz8iNO+hEb88kafk8XSOaxJssTZ9oxZAtAZKd9/QI+0LoODcofuNx\nYHwFBQG/1wYdH1jn4LTnj1tAnefXvpO5XvXM7cn/lIGhzcAmvhKpaHhkHk5Z\n981DJmXGiHMEySLnH6Mcbd3ZKF4DfZsgfV9tqoLWwdx9K9I6At6kjzXmSRpC\n5yG6jTgN3cDAqyVCyxJluFH70uc76ROl6U4/1BOji4G9r3XREuibc3efxj5P\njJQG\r\n=vKY8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.Meta.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_configuration-service_from_inversify"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-23c8ca-kfp44119_1601453599394_0.6787792566742397","host":"s3://npm-registry-packages"}},"1.3.0-feature-837496-kfpf39l9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-837496-kfpf39l9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-837496-kfpf39l9","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9a43c8f51d4ae978affff4b40815a48e30df0bc3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-837496-kfpf39l9.tgz","fileCount":304,"integrity":"sha512-bYcd/Yu50VOnEDwnOCwgKunOHOr8Cx2p5jzv5Ya7YvUFpO1Hae0ds7z2BT7MGRmNWlbXM7ZiU42J9BK0GtReBg==","signatures":[{"sig":"MEQCIBFobkuTQJ+E9qjZGX8cPqogfMhuhg2X8j/Nn/jkDmS5AiAVRhKoVB9h0NtxExIm6DPk0QjH/2Mu4B30CztmwvL7nA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdIYsCRA9TVsSAnZWagAAdNIQAJzwMK3eOU4495QUWhCg\nTCT4tk0eE+xDW5lzVtPbA5GEMui0uOe5uAgqRx/D2VEEb7VN1shRHMWsbHDj\nReZfECz0sN21wH1ynyJHRsqKRwVjEEEklrBJVTtVSkmp2ZVCGnSqjH0duiia\nhs3y1OXHI/oMzWkDvNTj+7ZJNeJWs/5nhdjtToKFvK8zmsQGMXf0dGj4QmKU\nCN4Eca+dOkO19hE1gU6ZcumE2dqe/GmAOnsFet9kV7+vs3vlfIt4UzuVxv8M\nGcvha6rpt0uHlRieaZJwjVqQBFSH6YWbmT0DGNO0o9rcPbbQe14xHhT7SDqQ\nxjMWMsaADu4CokRvIHpGY1EUixm/S+yetUnKt+fRv5nNWXDjDtBsAf+YyDOf\npRHRQVBTmE2BcfBa7rLIetpPyExZdmpGlzgpQR5mkHDuYi995r+6KsHfnItu\nn1e6ZBRaPjwGJoem+QOye2Js6r9IRaQBGDU9hCqUUa3hYYvkkvXApdWsj3nA\nrbX22fgqlQm0mXslodx53FGxpq9QkhYBVMhkczyuTSqKddlmKbvUVoWyh7Dw\nM+KB9/WE3FkoO0I9f3WUlXn75/mxbljJ6aDaWt1FRHPWfjFBZMuP7EgwYEG7\nh+Mc1en9Ue4CReiGxNg6NPmtsPgD7OVAfT0ztU5kPAM8oM5SpG9zAUDRf9NH\n7I5H\r\n=sFto\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_configuration-service_from_inversify"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-837496-kfpf39l9_1601472043490_0.5851101894646287","host":"s3://npm-registry-packages"}},"1.3.0-feature-a2d864-kfqjpzpg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-a2d864-kfqjpzpg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-a2d864-kfqjpzpg","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"43bef7eb2347362612c34475315f060ec5024c90","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-a2d864-kfqjpzpg.tgz","fileCount":304,"integrity":"sha512-EkEgIcBi2QE20iVWZ4+KXDyieHLx92cTaX3h2+KtFed9j/FGVMaslM2JQdu/nytWKufZv35Wzb+gIEwq9axNsw==","signatures":[{"sig":"MEYCIQDHU9PnUZ5jdhvPimy/xmJgFqCMHd1rMKCZAjRZHC9C7gIhAIEmrY5OYk8Y1v2CUH8mw63VjctmCNMXHK/+xMkxL7qh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdZDGCRA9TVsSAnZWagAACCQP/2+b+HE658QTcEImqrut\nAiYhGJ+JLTmLe9eBE6GRn9XcFcUtAowCjc4ZpI+6v9ndj6vSUvGINpZ74umh\nzgreEvI1GMSZnGjHIkDHU2odBPbhDvz4QFlibQwGMcvUeIVrXdTw0UroQE88\nOw913Ue0ZhL/MiOH692Ir722tQuhS/w/E96LcFD5oMIoSNvTPYyMSYBgIa4g\nQtMPC509QmBUCn83rxEtz7IYc/e0+qB/hGvnNVLU795vpf07SjOf5d5tt60B\n36skLb6mcrSFBC/EDmWpfrPeWpRAAzjzrZ5s/vinJO6kTuwSU9HOwZgpuWC3\nKlh0GmUSzU5fqKDcT8wTI0o0a59e/2BEdbflmKkueRDO+6FGt73VIVhLAt1A\n6Z91FQWTV8kJ4RPa8Pkjq4HEM/mfYSAtofmHyMwhjK33qX3JBrtSuh1kz3fr\nSyL86Es9Tnn3nSlSsftQtXxYjtENW0w2Y0WJBMRrKMd/9tIRFvIHRB8qgCmp\noFkIb6i0CZ4t+lrqJtEEzSpMSApUgg63C2PyTl1vlloJrCWFHSzg2m+bVZfZ\no0IYcLpq7iKS3jWOoSQMYktdSu2xoADRVCEDLnaIpkV4Tt09vdLGELaWtxht\n+4ewrYvtbgFSQVhDLvd/0tI6oofmgPu+udMBGtw2o2+Avr6AlyU9/NR6t9UA\nuxVX\r\n=AH/W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-a2d864-kfqjpzpg_1601540293445_0.18460430527867921","host":"s3://npm-registry-packages"}},"1.3.0-alpha.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-alpha.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-alpha.2","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"4f340bf0749ceb721db3a1b8cbe68a17b7174d7a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-alpha.2.tgz","fileCount":304,"integrity":"sha512-YsI12XjXh9X1aTTcXhR0OpQsXH/TnhqSaWuHO3V5EYovTPz22gKzbrWm+gLeqCu35j+3CCrEDVUhuzBfsjyfrw==","signatures":[{"sig":"MEQCIGpqbrBunhQ74IUBqxWI6t08lYj3/NON5U3cw93zP82DAiANbvZihElKzfLVfCu9zcZsOKfE7fRaKo/IUtPJjJzd3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdZy8CRA9TVsSAnZWagAAM84QAIZFaOQelC287mCqa0nQ\n6YOVGr/VdIC49UqxGp3xxaaLuqJanJ6zwy5iMgJIBpyBH8HmFdh7K+SJYTDv\n27jK1GaOzEyMbENbScxJk0uBWYLFJvGtEaOcBTj9k4A6GEsjkHOO6jpEwRfa\nNgCFDhtjUrEf/U7KLNK2+3Yy7jo4N1zQRItqEUoIY84tmMe4Bf3YAADy9wp7\n/Zm8UGV86RuEeGvychhRZ+0m04xndoaPhY+QUpOTiGcBkcz2q1h8IcBdTK0N\nX0n1PBU/URK3vhyjBzqmMr35e6lVHa3gct2I/WMLft6Z3AWtE82y39uWHvga\nQXExrfBobsGct7O38Y6KNBnnZtx5ZgEj8yG6BIS9WSZkWwS4RlrDeXSFQAJD\nc6iq656tDjWEv4fkboDPpV6H2aY6dxRj0+TZ/8l+ymVkExG1hkaSmiQG8iLP\nMd6mKbCXSty3BFxkflzVYddEzC7wi9xQj6PG4vI163798MhM0/TLLKPrvSkp\nLN2Qo3kOZRlJZHTz+4tw8MZ28gAwR8wbY5MekID8cAccDZqMnmakCMHlTRlA\nRfVeJKQTyIWdIQeb3yVn1UV8R2W/mjKMwQWtuver7CVkL3iwi8svzI+druxM\nvQ5o0rySb0sd6yrnR7gmU4ds+SR3vfgmgn6B2PRGq2nR7sETAZAQ1G2BOAwk\nlTq7\r\n=sHki\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-alpha.2_1601543355371_0.9644241673195959","host":"s3://npm-registry-packages"}},"1.3.0-feature-c46a66-kfqpabvh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-c46a66-kfqpabvh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-c46a66-kfqpabvh","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9dccb3872ec1a14115cad0d37d9c2b6c9190bfcc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-c46a66-kfqpabvh.tgz","fileCount":304,"integrity":"sha512-qX3mUPrGA4NPWm0kkrf6CtbscborsFT+0y6UJL6mllF7P4TqhQ3pzX4MCKDo+pclB1i0x5QrgkJQv+RZ1Ba1wQ==","signatures":[{"sig":"MEQCID0QN5B6T0IFazSkLeuWMtuNAG8ADIsYuPRMxelorAJ0AiAKSCi+hKEKoMCBMA0yEjrxLg1wErpKr+5+kEutieK0xA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1494463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdbVECRA9TVsSAnZWagAAYU8P/2SFIfITc8PBoq8VFtO2\nZhhzYbwDbWgIh2NK0kMQH5pzw/Og8Oyl60y6YPAyoPplpLVM1z/Yu9eU8bON\nVuVYbabgYgE2YgXsYjBlKuN+bpdFSC1psid+R+3RuWPfmK1eGDb4s8h7wCkV\ncs4FRGeQD2BhDuTWAFI06IpGOyHMwbyhZw59KArJ6UlJh3mnU4/9Oqf8N2/8\nb0kzcm7cH370xie/cHXNYjQ4Go3r8VbyZ72B+XdiBlfekfymulwAqUZqZ35E\nRR2Z2B20mQxiC3RGj37J+BQgEtopGGXK1XLsZt4L3GN09mmURLyFdg47pr/O\nbAI9wY3v9E+oN85r6msYjyiv+g1yJ3IYIq6ifQAM9SKL7dEiZdrdtSZMF7s2\nhlgyxloQlexqYhVU9hA9xFs5E8u8V2cWaopQ5dC/Dqy/g2VH1zdh46k0XsTk\n4yF7QqzH6gpqML8E/LYtnljKsrsrsfcqzXaSaFTMXVbyssSix6uChc3NRuHj\nTwAmalEP3KV3pfbly5tBgxy23voK1CvqKg2F87s7afGAYv07yBpmUnFGAeYW\nEUYrwejC7fp+zgsSbTWpKxWtrlkXQxgf4fDxPDk8FcwaFGuBiKOUrPJNwVjh\nLQuNZ9YGM3QyYVkQCmw+UtUoqlv9HQxgr0Rya/SpxWigJv3JDnQQj5CF7poT\nNYaO\r\n=LQxz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.0.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-c46a66-kfqpabvh_1601549635404_0.8193653336465649","host":"s3://npm-registry-packages"}},"1.3.0-feature-5471a4-kfqpv1k3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-5471a4-kfqpv1k3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-5471a4-kfqpv1k3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a5db32e3ef93fca2c359fe9f71ff8e5c854e109d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-5471a4-kfqpv1k3.tgz","fileCount":304,"integrity":"sha512-zc22E2Le5Pxfy6W9BG//LEkzg/PinYjrNxpPJBIO7CF+ukr73KonPoQIZYgoOKxlWBZ4onHDa80fLXpCNlxcMw==","signatures":[{"sig":"MEQCIDZpHHK3uXxruDhTJHl5ZcQYsK42GYROXTM4QVG44bpuAiAI46UDZhXIdcEtLcGX0MPORSnCvb5f2HNjiun5xbOAbA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1494462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdbkOCRA9TVsSAnZWagAAlzYP/RIB9uYbB3zqCmFU7EQ9\nI5/7/SMUuuLiqq/v9V1Xm36cEsmKGyx06PsDsMQjH7008qW5i/eBVBBB+mRq\npExAq/r1QhucTitafxx1abs875ozs8/O2zmT0jVqcYYTPJXKAPl102Z+1wFB\n1Y1q+DKBzULO2LfjpzGTtvnbMeixoKBFEzZ5BEMTu6PsBxY/l1ZiTp8dIKDf\nm78qSN960A2iKPUIaRX6v9MgDsASYAFQF5x2PSSfHrmNFBUj7an/pVb/o/5v\nFURn+7nOKaBehPHUBT+EEdu3UqOwdjZbUHoXTM2xLW6M86q6kBWo9wzvjPqC\nGn/6NHPebe04bksDtzjHq337i19e+c9cidZVp20H9mRLRMb0io6enq+AJbHK\nUsNzF0WOdAKAh8DMAZ91WC97TqxD8GqnPwxIp2uxQ/nwZYBGX405PyY5OjZU\nykNEGWgg7wnKGf26cKrAdR+fI8IAhd1KMlnYQJyMdRJqtQfV+uxqlOu50ktT\ng8Ni6CUBUkv6GB+1MpAypBSvSqUertSD4J5umZMQQZ2vknpfoexusWGCeJ7K\nvPlBMqqRIENSfeGC4fESJZP6HhvEIvlzhh6Zwg0ZUpWvAC8I+rDSpge4HT77\nSlf/HTTlOH66T2Ng/IciwjnHk+8jntZIwpbo6Y/P9GM9edOrK3zxzJC8dgDt\nzlb3\r\n=mmB4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-5471a4-kfqpv1k3_1601550605449_0.33462315769018236","host":"s3://npm-registry-packages"}},"1.3.0-feature-37a4c0-kfqrtctu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-37a4c0-kfqrtctu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-37a4c0-kfqrtctu","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"9a4d1391da87b8b06f72662f066923d98fd48d49","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-37a4c0-kfqrtctu.tgz","fileCount":304,"integrity":"sha512-WtM5lND+8GlN+yO2M/Bh+xBt5E/Z1sPxA1ilhzx/flj9SOSZ9GDHz0gb/50V1Xkpufkc5O2Pi/XZF3QBy3iqWw==","signatures":[{"sig":"MEYCIQDDtMCRjXmU6R4lXzmEW4jAM1HlAvEGS0jodmMzdrKndQIhAL0Uq+T1LTs3RYO4lzB5869kRsrc6YXkYE9p0tdeZdOk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497432,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdcXbCRA9TVsSAnZWagAATZIP/i0KBcEFamWsegd04xxI\nnOFnBY7hnebmlKHvK0RUvb4MxZargpgiQNOwVNueTiooZgdnXvxGsJmTGDCr\n2UwX3Pa95V9CAml7El3gjYCDifgR+64r9wfJRFnKtkMbV2ozKZVPNX1Ynt2A\n5u/uIiLYIzvGIbW33E2FUNPpivAkv6WKQc90JSFUacYwOoZ/u/vU7na5rW77\nf3mwHG2rUt3j40f3kB0meCZyDf+2Vfc2yiC+glwjr9rGYgvu6I2A+mSXrZi5\n/EPRFRLeujD7VgDIj6HFHymoBPTcb6gZRZoZF0PxmARA8PDou4PtcQWNF8cp\nrTB6OybstGXAokQ1h7P+Ti8s5Sg1CqnibNmhqQmt6zvh1k6+DRs17HsPSoI2\nX8qPktQvFWW6AzL2jPZRswbDRki5X7AK17M6KJ8atYQfGM2cHI004re5XHX2\nUPOH8HIonrTUbcfXCQb2edVYM18HKqNUwnkSS0M5h8I6XnluTWm0yR/YLZvp\ncyCAxIzL1C3GnQwas4B82KMMAu/03QWlcnFk/LJveAedMc3d2hSX5pZfdmRN\nlroK1v0a9EKWzlIkeDi1DebFHGG+ih5SMb3dZjrB/pi4tFTQFaL6V5LHcqR1\njEPS/YGJjvVNKgqMOh/+hWep3jqLHi7eEZa7woLHmkpyo9JSpAcfwdJQMVBu\nHGpR\r\n=2MVT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-37a4c0-kfqrtctu_1601553883013_0.3779110436197053","host":"s3://npm-registry-packages"}},"1.3.0-feature-8ab30d-kfqvsyc0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-8ab30d-kfqvsyc0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-8ab30d-kfqvsyc0","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"8703ea3a3405e4332007201520ffe12ab716036a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-8ab30d-kfqvsyc0.tgz","fileCount":304,"integrity":"sha512-TWvY5aZcV0WeQtwChLhH5voy+XHaTRUKzR/hq3ynacwRFoYElZU3gDTD1+q+snZUeNnS1ZHbg2CpCj4u3zSpaA==","signatures":[{"sig":"MEUCIQCzyADlBWa/l7s4f806d1fQtCf370GfBIm0oa8wKrNO/wIgFr7oaZDbZXnts4v7rKycYpwpk9oBsafO8T+h9qmbUTM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1501620,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdeAICRA9TVsSAnZWagAAUJYP+gN8Y3iDuGKmQOLpL4ki\nGSQBgWv4exaWhim25fw96iHI6ZTsgos0vLAVvz6Izuq+fsT7iioIUvGHKxDr\n8jHr6FnkZnswVDcN3dmB0DrRUR62K2BrX2zFEmZhrWKQ28vjbkEJ1Pnb2zs1\nPP/80WaB9nPtrloGyzSeDDz4S6e6PsSl5sjw5RD7Ra1Cu3ttnT4LxgBmZwQ1\nAwbY3kXCd/i6YvnTMKT6uSAl1Ki6GFq/IAlJpDWti8PS9PPgEk4gPabCgVR+\n+uknC+DLZOUO5XXS24v+gL6PCKplA228IayHGFvvPGOO/1wZ3i//WeVv3sdx\nhc4Yr11llvpDZ8nM3ou7p6KFj1Ip3JIU9/R+ap3lRaJUT36goNsTYlTZxW9i\nW2lyfWOn5kS+xUJ5C7bCxP68cphfXiRzkbOxG5n+r9i3XQdNBShhs8woIOVc\nIH8rnzHpEbQrx6lao0IvVd1giV2swcXCVqwz2PT0LXWy8dcg2F1vDzo07z+5\n5mFRwMR6ZZ/8qsehQiofqoWoCAflJjLS5mHhwpohl6EMCWx0MBDT/cDtXowQ\nGbsEZrxXq0LWiM91sn09a9PNML1Wz3h02J3rXXehY3Rk5RBuIih+mAQ0OiVn\n6LhRvEXKb6tBgoqO3SswTZLLX3WSaXRWpPBWxr4VOCVP4iNGXkOfCDG5DBqw\ng7fd\r\n=6j/1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~fix_handling_multiline_expressions"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-8ab30d-kfqvsyc0_1601560583481_0.7831388657790537","host":"s3://npm-registry-packages"}},"1.3.0-feature-f3e1ac-kfr3eyx0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-f3e1ac-kfr3eyx0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-f3e1ac-kfr3eyx0","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"f5650d63858f3433fd6b34420198626ab39817b2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-f3e1ac-kfr3eyx0.tgz","fileCount":304,"integrity":"sha512-EmL/gJ+xoWK5pKADj0Q0Cm1SJHveSfsQzyqEX7lWBT7627XRpfU2m4fNeJQkCx0FoHlQkom2q+NXZEEFu3hMSw==","signatures":[{"sig":"MEUCID0wsltHebiXT9V/J9pUH9RTu/JHtZDchak+SuVgWcexAiEA1g3nDO+rkdUb1K8mlgYeOvH/gYPBw9FTzXbFD/9RUnA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1494148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdhH8CRA9TVsSAnZWagAAZj0P/3FM4tVJMx1HD3BaLnWy\nvXTMAwhToYmqOKXJz0KKYq61Q/Zj2bWAnbH6xqmuiq1jbRQ3v3UyjH66QDR5\nJwhb3K2AheX4K6cbfQbMJboF2yGxpWunakT7tjACrvrEo0Hlo0M3xw6cF1qd\nikp/cGkzT930I46FEGwdUdNxOzCLrba39qJLiBWqZJ2sr51FjQ88bRIV8yzO\nimtPrQqm7Zf2anhXALC+rXYsHQHSYy9vXZuskoSL7eVZuFc2l2/oJF2iwAbf\nBkFHMT1u/hZSMbr7scL9knlr9KeiSdbgatoNw2x4pdR3bT1Wz7xrW5nYvX23\nUUTKhegx7MmR7A8I+bhXbTLFIMC0Vvk1yG3n2/6jC0Y6xryKPvSkNU0luQjC\nFmtXATHa7lkDDoY2jHC9BW34vbgU/dWD+WF33Q2FKtAfwtOS6aiD/BdryKUa\nXyCpqSFKorgIzBWujMp2e3ehaBrXMWSYsMaz6+9Hhk2FZIfLKIMafhmtk3zR\nqBrDsS2KxWzavSd350Xuef8I0L1pO4SZArgxUF1ZqidqbpyiwXNqFkXvvjhE\nkpS0b8DAZ5ngMsMe+yew+91mF5Sky1yEFI6FTOps3H/EGsvjk0ojNp5VWYzB\ngNqxPNrcij8Sj9DZecyfeExFukbzoC0Kx7RU9xwEf/UwM4F22lncoh3B6twY\ne0zQ\r\n=6F1J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-f3e1ac-kfr3eyx0_1601573366084_0.36512009964454495","host":"s3://npm-registry-packages"}},"1.3.0-feature-d0560d-kfrykyzv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-d0560d-kfrykyzv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-d0560d-kfrykyzv","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3e786e594c34ac3f2f932d7e0b556d4a7cd8de97","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-d0560d-kfrykyzv.tgz","fileCount":304,"integrity":"sha512-vzKSSFl7+xYgA2eDocAsmPh50LEa0pt/BpZlH1dNAjztpAw7XqckGrysZHHSNuyMmoABH5wfcRBDt52/FOq4Hg==","signatures":[{"sig":"MEQCIBV7m5oikOJ+1RAZLph5orERjofKYoyKeT23uemSlE94AiBDXunv2F7FwL9n1ze1MujkFHzwC3U844DJ8CZsZv6mJQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493526,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdt5vCRA9TVsSAnZWagAA72cP+weJh1LzxfMPCtlhxUhE\niylOoiKxYht//ArqRfhJnQW9g+FkFUxYeXgHHQotPHq+K92TZeJ9jWZFj6Uj\nMUAgZ3hWRUbJWbNkboDQc6IrSOSsIjuIZ1t2aGdGs1AKqofCHAdQ+zXTIY7Y\nsQcMzgWg7ht7Z3QcH9qh46q+Rh6cM3jJSsVk8JUzFpHnCc21FVNkaKbZiwmN\nQBvAZkf8GOfIlWRpziD59IUTCf0H+jlwCTBwlxLS8JH6EshgzlOWzV9mOaVe\nMjKPpRu84743ff96qOhbrugSQGlc7RAcOjmY37Ilb7jMZlXGu8CqjuOtjKx6\ndm0/sMc0enW2CWbDuE96XT+VmLXVAukxszXaAkOaoJCxGusyo1FNDmmEsfSS\nNyfcXNDc9iCfNv8uCWumtOqoGVhw/BBHStzx7i9yJXFKvMDZs6QJjBBLoOSS\n6hnGPYYEHPhmDNNEsADtUxOirZFU2t7rwE+fAB2eXJbGB7PP5Gg78cgZ9gGE\nffuRKo3vFx+CdcHaMSGgWUN5l7u3/I13tGoA05ve0ljl6l92XTYyu0wNehVL\nxmz4ZZN7yh77KOL9p6d7rXbBnUNACgdwbXiI3Tc0IqtRndS5c8YWDB7J7+Eu\nV7Uz/Ex4RwTOo+T530bofgyK9E2syESE5hqXbPTOnKE/BkZXPCRr1k3Kp1Ix\nVwFi\r\n=NLQ5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-d0560d-kfrykyzv_1601625711086_0.6185308606270126","host":"s3://npm-registry-packages"}},"1.3.0-feature-37a4c0-kfs0mk5v":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-37a4c0-kfs0mk5v","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-37a4c0-kfs0mk5v","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"48829392d9b405b079fc484445b888864d9b9891","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-37a4c0-kfs0mk5v.tgz","fileCount":304,"integrity":"sha512-SRSQme7yE5WlZhXWq7YA7rw+oYm/b7tvOS6mgdTZpcLRie4e9+Mh7p5ITyfsx6ZxlhljQD55BFQZwpsNR0iJaw==","signatures":[{"sig":"MEQCICBevuPzfxRvtVQCckWh0jSP4kpRKueaRzgHiS+E+F/BAiAJbZUtOLSxmWYYl22Q+EEhAkbNh9k0z7Pqmh9eC6Qe6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497432,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfduvaCRA9TVsSAnZWagAA59AP/0yJU9D2AamXoBHWoAP5\nQyOoiiszTEVzQ7DXomXcA6OVSREkQSv4QgmKYkQ8BGECRpzfpEUuvsWO5jNL\nloPbvd0tJm0O++8eNFhAxvA96O6J/WE9F+PdqSt79fi91xB7PHU0Ew6VEZou\nwF3s9//S89DzgC7kkdnZxK/tOvsci/S2dAfubfB8pw2hyWExsyyFDpsxnMgf\nvJS4MVL3DCnWuWJygTZVru/wxShved6xuULSlxriqTTOB5GzAtsBxAozDqe+\nmzpPpm8Ge4neyBkH8bdGn2RVZ9/4XvdMjIqVU7dTlji0N1zx8bHQM2Lcagwt\n7vaT/IQcEkDt4je0dv99xJ825ydas8OOkdFaWsIWEpnu+24Zk9G3gPb+AgmT\nhbvz1wf4ws7upRGOMhDm5zMP64PMbxbxcsfpG7XjI860zRAlacoU4NDhsQsr\nfTQtVtoEH+TM+9OQuQ6YpGGh7dpF3P0SpjElDxAxTlkaz0jOUZXORv677r+n\ntWeGSWebh98+nszUm5qSm++jrh9Vv0Lbwrt67+KFNCuJN4vm3YCpV5fLMJ7X\nHoiVyZSUW8Q4byMOuaZhXwKgt0RPU8pJ6+pFSJds/DQ91Tv1Abfvy4x3q3VS\nZ7rhqpYvnm2Dy7Hwa7A4n9wEIikc7NKIZ3/7zfe/KwBiv976OqhXIEj5pGhC\nMoXf\r\n=8Jym\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-37a4c0-kfs0mk5v_1601629145579_0.9539700601883683","host":"s3://npm-registry-packages"}},"1.3.0-feature-a0cda1-kfs1sqwm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-a0cda1-kfs1sqwm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-a0cda1-kfs1sqwm","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"a15865c96b0fda61672aefc0d882672ea956f47f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-a0cda1-kfs1sqwm.tgz","fileCount":304,"integrity":"sha512-RdwQo+0nqmZBwTipF28+A3E6/fvglm8DQi65mq9AZxypWEvbHL5G4pzvrpEfryzCOHF/z5btqWLG8YPF+cTk5w==","signatures":[{"sig":"MEUCIQCf7/iUHZn7WIAlQfRF2T+pGEqXDy+52RbRYNPUaOalfgIgFLWR3Y//p1AZ3TdGOb7/6Zgw2spAlnf6VcTxkwLDCfM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdvOKCRA9TVsSAnZWagAA0DsQAJhaZJdwU8OQTMAEsgIX\nE8JzntNKihKCZSe51E0Lh1RAgFTUDxeIdGn8HZOoCZcFL3clZErFGr/xBnZ1\n4sXjR8IHFuYhvuQl2THMIhJx85hYRrsLM2sJkBvO+ynMO4a/QvvsNMZbicJo\nL/lwGZQo83YC0JDEvJyT6ak68Tn8mxMlUgYzQbhE6XYen31ukTS2VQDMYZuY\nLTDnk60B8AvK4RaFpJtbyTqJGCSCoNg+LBNqNf+nNKKi3FgZJh2GxvZfUygD\nrEPcuzDCspSFiG3YBCOBkSoGRRXJwS1yVk6cLpRyxDCbDsyvhrdq64UDwGUP\nlFu0cTycNtpg44Xdx2nDVo7Qd73qT9XVn6qxlcDEFtWetbtwgHFi0QJu39Bj\nf0hRLyE43JCbJ0ZvVPWBAwFPLGDaIzvZ8f8sJ+xEXEvAcYRlc2KOOm+O9Bs8\nVCA59lEbqcvzuqU1tvB7HXKx2nna0/+YRBthIgYDCR2uwYchkYHGXDZA2N0e\nvzcegbdOuyAf7A9A0Wzg0laAZqzhWKDzXU0YPhK/9M5k42N7Euh8ZnyGJt8d\neZ3UTz8yTlOdUora9a4GanJgkgMB3Us/lRhCisehGutK/4Kdyr88/vsYGCgX\ne0d5chVKUrrItxXDKsCn0XzlgYQxqfGaLPQvTAyLJF9kFZIA1jED3FRkwrvf\n7INe\r\n=qiUB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-a0cda1-kfs1sqwm_1601631113439_0.19430422040602768","host":"s3://npm-registry-packages"}},"1.3.0-feature-f0ff39-kfs2j225":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-f0ff39-kfs2j225","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-f0ff39-kfs2j225","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"3116db3b4bdd8b7406d2a3ac3bcea0e99785719d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-f0ff39-kfs2j225.tgz","fileCount":304,"integrity":"sha512-OAzZOXVyh8blT4e+BoGa4YEbsF5JL51NzWXns9Wkf0hMtaF1g1dG5PVIHrCiVRPsMz3mfPnwuo+5pcG/pf0uHg==","signatures":[{"sig":"MEYCIQCQ6nabFcg1+jLi5xgF+BQd0qsjbDVGjUXFFmtSe/6szgIhAOxAmG1JucTudExnkEsc/m+bSFCEY3qpXzibPEHPZivd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1504272,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdvhZCRA9TVsSAnZWagAAWS4P/1dwj8kqMzxeVhFyuz96\namaVp0+1DaxfKbxzUL1LS/UyxEe+z0BQgRzbZBj13g04wwg29Los5NXAxBTo\nU18LOboiAyEtyw17Ow5QCBEghTHnUnWAe9riOoqNa2istxmzQ5Xhxy4LWeMs\n9auHkewhqAvUos3LZhlVzlX5sd0OsbGVPs0aZYaJiczUZPKPpbmtCiKm2rw1\nnTd9fE1lD4O+ij6iihq5kELyDl4EUnvzNVsojNzvkwWZ3f/XOdwEPyYeN9z5\nHgarxoIWgQh9dvM3o9cJrRYz917oA4MhHuXHb1xq4EQsmM7QuVa5GZ4IyYIs\n6gXAU5wco906foramXJ3OAMhNl6/WH1rY6b8ndiaWFW/y2x3Fm8UWB4FIm3C\nS1cTfu1cCuxjTYfmEFIO81Zop4FFP5Z4Pp9OSebAAg9UmEA20YDTdtBVCiDT\nh3X3mNNrZa1p1YSyOpnnMZvcNN0gmSAitYKQBm5kMnuGqBcZCcCRt46mEXOD\nd3UY1TepFWcwKYq6P4OUKf7AUsxlTb46YEaTxO2DPas2pRlBnzEslfqmZ75e\npETNRDwxWvP7XAeVzMIwGqFX+j8myvYFG1l2x65p8JlrbkrilQiGb+tfNAEQ\ngrLMK99rwJcUUMpDGsIC7/Xg5qth6m6erJaWZuI3767nAXqJeVYqYRIEir5Y\nObO/\r\n=lCFr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-f0ff39-kfs2j225_1601632344662_0.17122120052294254","host":"s3://npm-registry-packages"}},"1.3.0-feature-c0f6b3-kfs3lawo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-c0f6b3-kfs3lawo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-c0f6b3-kfs3lawo","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"1cbb320e9760e129079f5b0c2ad4e82ed76a100d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-c0f6b3-kfs3lawo.tgz","fileCount":304,"integrity":"sha512-9FFQWYkzsREDkGYEi1anzZWnQuBktmPpMYfYQdp1ownaVaJ+hN8LVZZ6gAT8P2dvP29CjqF947msE7BjKU17Gg==","signatures":[{"sig":"MEUCIG+SFx0aGlt5dPRXa2IYu3CqE65Pb95ivLa6h0zMDg6CAiEAgO5IMIqNtSlMJ1QIxOQtOBqQIUdh6mSeETrxFpmPW8Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1507535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdv9NCRA9TVsSAnZWagAAyh4P/2rs1SoOvBFWxBn8D0Sz\nlwWYKTlZcChyg3PVFQy3HWsQ3jFMqfO8qVsDy3NJBNNqHJFF7H/xNOYlhegO\nzw19PtVCWIsmLmzBDQsSZ+ETeaADT6Od6leZht8gCGtKV8IKD4whGmFmcdjy\nQd/I6NsxBs1YNvqsLlMsMQJo0T0zbtgsa26cCnOrNrRdg0v4PVVbT8NtXbW6\nVAwzQ4p5Z3iOX4IhSpO9q3yX0BIknxlKUsnmpNmsOuik2J9QJvLhyYlbXbJ8\nuXJgkNv+CNg3CVlpgtH+lkwPor6qFh/AbIE3kTU0DHtCXmm5PBwYnkUvBGNa\nNKxhg4JY2KSp0nXSVFJ0Ff/tAuiDB5X6VewaKsU6/HJTI2BcgpMASFe/T44X\nPXsAZOVM/HDmU6+aLSYA/ks+0zrxct3pEBBeYqLlh2k/q1PKjIBO3VtVi5mE\ndt7bf/r5agSqmizqMy2+ydtLjee5VnF+VcOyPNvyFEOZ8UQ7pDMILGIfcA2I\n6FBKLQmvFp2RfkUPX4OGS0wNa0dFbcFI4/1K2ZHUO++Yrlmx7vZBwUnQ7vAB\noR0iOvUcml1f/UgwBNfuyIOZ6jXzBbekXGVgD3hJpsumnsdlOvsSCBRy8Dk6\n0ylex+sUaRODelraZ2VFbEx2h9vZr05OI7DOobniQbcZJBRniGMiDdJD1c7x\n0Sli\r\n=PNGt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-c0f6b3-kfs3lawo_1601634124374_0.0034547569790250865","host":"s3://npm-registry-packages"}},"1.3.0-feature-b2fe8f-kfs5n7ve":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-b2fe8f-kfs5n7ve","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-b2fe8f-kfs5n7ve","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"b5e4dadac675288a2e54b2383ce784f6aab754f2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-b2fe8f-kfs5n7ve.tgz","fileCount":304,"integrity":"sha512-xkvxLWONNEgOFUB8VRnB3RpTjkMvqfOpBPAxsINDqWq3bxSbkEMSW5dcKrm7/oTh5FlgPB+OKqRXW90ix/ulYA==","signatures":[{"sig":"MEQCIGaaOu5NSKdco7WFoHru3VJkPrp9ZfLagAPfy4ValqvaAiB/NIzB5pGR5EKifEYJ0gJtw2nSlNBmVN5ITdfrIiCswg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdwzJCRA9TVsSAnZWagAA+w8QAIvS2GQ6RfH/MkUwxHd1\nAmocmx5w25KJo5TLFeABGHf/KcK5DUAtA+ADnLyyDHSvd5GwrhtSm4xlINCT\nqiUIbJuVDDpl2rFfloeCaaRKsdNdBmvCuAL1oydR2iFu1EGMgHIQouYzVSXi\nfj6woPEAj4QfXAWNRYRm8J2S1G0XrUYSIl3wPOZsMlc8xNz1EKa9s8Stip7v\nkbmjFGwVTLxTMNQZy2K2r/PNNOfUkaa+JevnyxQivrJeIIsewMu6+5ILSFfb\nD3s34MBMt4UL7P9CwKdP2lWvwq/His4MBF0fE2n96i0RNfWgYxOj7FyllESn\nUhIR7Gcqw57TCrgLkL+U9yIbveznPbpjfCmP/XhrWaoY0LqPgwmHCK+1uU4H\n7R+64w4ycikLfDqYPCltg1elJwEtlWP3dvPftwBx24DSahhknNWw9QqWWvh5\nXnrkoajhV3MSIqC97pMVcAQOMgHE0IO0NJPRC2AEqYCkau4yzhRtNvRE7sKK\nU5KWdQtjz0sbwkV/xwfukfuLMt9fn9eUdgKT5OWvt1L3avk3Y46YWAntLU1l\nNcB05XIqeKy+dNiEyExKVoyUXT9vXHTAJy2d/wr4lEWZUiaLmq3KGHZizwvg\nf4jFndY2zu7ZMUTs4IckK523HmuT/srRfy+uLSYKGawSuKLbcJ28fhTFMxJa\nfJhO\r\n=Y6oM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-b2fe8f-kfs5n7ve_1601637576391_0.4814154477492596","host":"s3://npm-registry-packages"}},"1.3.0-feature-cb0dc6-kfs5nkdp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-cb0dc6-kfs5nkdp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-cb0dc6-kfs5nkdp","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"ad4c79115f7b7278ebe336ff9247e909b4b63aab","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-cb0dc6-kfs5nkdp.tgz","fileCount":304,"integrity":"sha512-sFA6W24RIBePrZEkgq78eCKrBnC+97g/uHIbaDKmsgKQ36fgCGK4VQuS6Gm5BXGB8DnbrWLiRmSV1yrsPn04sA==","signatures":[{"sig":"MEUCIETE3llRKm0NQU2c+x9xrMvQcsI7rpMol6HOSrRJlGUzAiEAwW8DCm8rs0q5fZTf3xXlRPC9onFbkhiSMZ3F6jgqULc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1507545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdwzZCRA9TVsSAnZWagAAZjQP/i+VboaIZSEpA6fTQR+j\n0qkFJa+75MhfQMMNe89m9zIzkWKNNd6s/0l7LwLMda+GGhuV6JxGC0cTe4h/\nuy6U2+8xtXkBqclkdjh1VPfS9xLNU+Ox+QiOSllrVk/RYcqDZIMDg0HlCioT\nRh5+PhvLDHQfXe0i6MkOfwMCilP2pMG02Hm9/A/0E5UcicLXF+ltO9sOJZb7\nbQbazuuoVfHRv3U8u8WK6ulkt2agC5T/lpqmKtNKaD8MSNOYmoQeWhijwoth\n/vDeoeNjeFk+egT9/teexFLj1NRN5tQDCUe8vcQi9NYK818zN+wX4xdgSSwf\nDDWVc4VOBn3s0j6DUGFaoUv6tZa27FWuCKRJK/t+grcKJyrLdDvsBgA8P2yr\ni8RVW+ExwUNDd4E0auCNKWDrRBYl6MGexMtEkyrDsNwI2EBuV4eOu6XyIlND\nwdaiE4kaxyXeBOI7KYfjAN8A3GBbS9yAHxbRC6aGqnulb5jT/pN0oIb/HAuB\ndqYQlguwHz1bDoD7aY296y8kVapGW7matX9GBDoxSEpgPrR7mPVL0NDVP6eU\nVO5XtiDVKZIdvVrA86tnMC41j7eHviNFjbjjGhmGpnfhQVqUL5GLopydLXgL\nhlb08HRp8vKVE80Ak3K/xrnSYdpQvASSW5II/wtNJJhUwbpuqgL39q4uD116\nNjto\r\n=JyR+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-cb0dc6-kfs5nkdp_1601637592707_0.5215504418820642","host":"s3://npm-registry-packages"}},"1.3.0-alpha.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-alpha.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-alpha.3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"de382dd0f0cd6eb03ae49efe5b0efd30971fa6c0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-alpha.3.tgz","fileCount":304,"integrity":"sha512-/g0WTQ5aW1jP307te+UtoZ24Wpg47JDboFzEpc5r7zXJlJP6JueZyzhjrXSQ+yK141m1gvIiUrPhzgxjpGJ1tQ==","signatures":[{"sig":"MEUCIFMh9hG3BLelshWd/22mElQvmYc938zp90ylc0i8kzt3AiEA2wRE9WnAJvs/aAwJJZn6SB9CwbCOKpGiI2fF3FJEXlI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdxD2CRA9TVsSAnZWagAA6EoP/0Bt1A/YEa6mnjXRzcEA\nnREwNJF8TKXpFP9gyPAEhjz7Nla5RpYlcrtZlhQyFN54cOzh0EQU65DtXCbG\nCCjZatg2TxrVM8PhFZNArF9Lfk4wjQvQaSi8BwwSU7AmR9Se6VltO39IaLZG\nw1rdgNeT+JpB8pJzJqNH7bVx220ce0P/ZjIykvlqG2wixCw+RMzYLrdfV10P\nqrxsd0HDCbcKk/8G+5mufphIK/F+ehaq5OCb22T1Q9jOqPDa2LBAt8rXM7J8\nbUb6EMkHDaFn1vfQB+EStZeBS55xiMB6KgYV38OGm8twEiGR+fcwvxRMrwde\ndJJWEQrWQ5d2rtI+zaI65d67DT/5buiEpFw3lqyV39jW1VNsakxlI/ffoJ33\nj06MkKuALwz6gPmJ4QmtMXV42b/dQd/flI70EvSR0dm0dK+Tj3OtfOjWvDVS\nDtL3t0V+OdI4MDJFJdd5U1TuYJr8OPSp+Q83Re0sJJn9IGPjQGKx2+tmbIXm\nrbTWREIo5F2HUz2tLQlWbQXEJ8gMbknpC2qrOJEKjjxj9CKt+UGrdOvzGi0y\ntmKxGZHQC5axNc+RA1PRAm0zE460RtXZnAz4HTJUIAjFhezwTW82XbJ9zY3a\nAicMh9VtbX2s2g+IgixTXf/i9QKpWP76yjkp4XjmLpgdFDcdDo8Ql6EKDTri\nEkJZ\r\n=07Mk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-alpha.3_1601638645949_0.9327633875632124","host":"s3://npm-registry-packages"}},"1.3.0-alpha.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-alpha.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-alpha.4","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"69d791101d8c3e73cc07f04405fcb7c4a0105b9a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-alpha.4.tgz","fileCount":304,"integrity":"sha512-36yy0JAmHy3gh6FLqotRCq2awez0Mxno9vIas4Bp4FNYTUvC5t4pVt/bhRbbA4f23x39jBYPN5XilMTHWLAKGA==","signatures":[{"sig":"MEQCIH9yM0cJ8zRHRgcZWzf3OboWreasFlhkDfYYrs6PF090AiA02VNgVwhFYhzFNJ9qd2SVZGiZpVTGpt4K6zI13y82jQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdxG4CRA9TVsSAnZWagAANe0P/RofDL3rT+vYmzySgF7L\nD2zIV/tzOAxS3yQDv1+WJID4FlFTacOsGVvU4slypXwjVmz+GSYFDhBxk6Ta\nmwp7QykQAcmkI1EE67VgXo0Aw9G/3/Pesezk2R0L256pp1bsoHU4khj7pzqm\nLoiJ+9hq0wxhSSNlwmzwX9r6D/HNXrwEryyQky/DNchww3ljmfSRLt4gaNkw\n0ealIh/6F02IltRqaDgT86Vx0w90doQWc2f1D0FVrWOsZpifH7baz+3TVBQN\n2ZGYDl3XWqVgxbUkQLa/RiKOivfDdccJnwYP94WTXv8IIcklX6AMZ5VcYR8v\nGNFPmp6nvpgRlS7iw/UBo3h9nrRkCF5gSCjIpt7CixdSk1aWjOpaIG9cWUxR\nW3iiBD3ejSqScs0VvQQ9BY7LbfX6fgdq/hKlLFt1OmFOk7cXwqgqklyHJNtD\n1A//wnlryHCQaCdck9+2YAuGl3mYEbfPS2SdsTFZnuQE7Wcon/5QODmrvMFH\nkNxsy8FaJCcvFD1UysXT5Ty4C2oGsFMpmidjcEkfuftJ4o4GJaPU/U54UDV9\ndM3eGd2wiW+LaHqRP1ijzhYgDGFQPTNiOgei8fIzs+d6Rwy3bm8NC3EAlhWN\n1iozJgSKIjMSVSIlZuF8K0Hn9KPpEnYrZq59D1cqSoDB6x16VvJspnGXnq09\neCxu\r\n=V157\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"1.2.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-alpha.4_1601638839951_0.31182012256105485","host":"s3://npm-registry-packages"}},"1.3.0-feature-dd8804-kfs6r40a":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.3.0-feature-dd8804-kfs6r40a","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.3.0-feature-dd8804-kfs6r40a","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"0e6c85ce3400e75c5dd3fd40cbdb450cbcdf62ff","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.3.0-feature-dd8804-kfs6r40a.tgz","fileCount":304,"integrity":"sha512-yG0TlOqs1fJLmcc6aSc91X2M2b2xIQae3sa8iiVxWlF64jYNxSc3+PgT2bKqJZXygidzN7O2Zw7aZnoAK+9l+A==","signatures":[{"sig":"MEUCIAwbpy8kgyNRvOSqT86iLUpa0buvrVEmNseNQ5tXyuJAAiEA37SG3gXcDIPb+Sz7ZHTMvKtOv2PRgvmn+F2lFPT+ahM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1507545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdxQLCRA9TVsSAnZWagAAlg4P/1VyXA1L17vpSn6weXdf\ncyC++WEZ2U/5Uv9nOXuetlC8jYLhvc15iGpULq5RIvosX9CDuUpk4SlO0nXC\n+bbYPHYh4q5FS61U+h5L0IpZOfc1eIMg/gaeWLFftQq3mAx5XhnCybxNr1Zg\nV8eLHj2u3sZ6tMq9NWKWVu8b7+Pjjpg2X9okBVQkzN0bH/nqaQs3LRoaaIk8\nwmAFFJR3VREOUKc93mv/vKiZQTvJtFNb9c3oZRFHZz88/WeDgXytR12uVADI\nJqYeK8Cvgz0y5x2dDWMg9Z10pvXMQfe0t1swbwI6Yo93jdb9JWP0zaUkr/uv\nBRllkp8Iuhc0U5SbvBil1jEx49fKhrYDiHVTyZA6x5vPETpNGL6/BOcCwls9\nIVFGVP9irHXKX58R8Ouxu017JV5v8kvqMfAjwxeyH9T+FtFZ8Xt3zjWDT9DU\n69+eCfgAYss1UaEqLnySpQQQOCl98+tYVkyRoqSiQoU+JtynWoFPpgs4tM/W\n9HR40x4OCUn71J0Y/NaYoWRKxC8CSS0Zl+KelvZkaAlTSlYrdB2Tk/mWCrS4\nHhN4iPJZXouJuI2F+Dg650tU65GfbCfWdEsdanejGBiVjs2fUv5DhuQNroK4\nXj4tEVKBpwC5uL/zwu8meZgVqrB0hxZL2NUrIBfMlmHZJ8atHP0yA2DJ/nGz\nnyPT\r\n=Svxn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.3.0-feature-dd8804-kfs6r40a_1601639434760_0.926520017495017","host":"s3://npm-registry-packages"}},"2.0.0-feature-174367-kfs9b83d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-174367-kfs9b83d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-174367-kfs9b83d","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e118984719480823b2e5d1c1e5c9053b1f813e54","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-174367-kfs9b83d.tgz","fileCount":304,"integrity":"sha512-uH2dzI/+yVK0dsxfWpc2SWJCXGarhuowFNGVCrYsiwiphWczyhoxjLDCQCvPLiXOpzxekMcuqTHFaTBTQqeCTA==","signatures":[{"sig":"MEYCIQCETAiO5jblCpBKTRMt1IhP+KeyLMhZ01ciGeUjnysAcwIhAJELd4/v34YPQaXClW8azrURqElmupNqF7S76afvxC80","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdyTXCRA9TVsSAnZWagAAo8wP/19Z4fjPj2taz17Vggc2\nI67dljxr4KtpT/ccWYx9rCbV1U2wBafEXvoW/grN95q20y8mc1XRjbBVBNpy\nQy3MQoHTdIx7gk2y3nTbvrWqjvuyEfaiX52NblmT9uY/19nRgI/Dzi15nT17\n0K90zmVWhyJ3ry+TbKjurhu9Dvx689kAJA5oqcpOWtUb8ouYSeC+fzGsf0Hc\niku1NpjVUNCxw9oRXgvjoo0ETqHdI9k7h7kf9TAF+p9QLPI6FV9ZGaa9fEHb\nxoqGi6lhfnHFPcaHOBMa5W2EBxgVAJmC18C5G7nBYr8xWgQwUs3kzZ3lOK1x\nxhSKCCJy8pwuFHZlNx9Rx2rYZ2/dLxN3WW8uyzn8akYjsNdGqtH3YWqsscrX\n+WU6wbzIXceqhRDo414Rxjy4E/VFNSwlX3ZiA2RWTyuafVKWZrhZgIWzVjIa\nSCrS8vEpZo/CPpAfM39BPkACpcTN/+GlWdweMNYHxI4q9TqGAG6kZkwRbizs\nrZEW54ocA0DRou/fAEJ8U1yLVprXWgBSIY03MP5rZh/8hAQxjvkCF2HTNyzu\n6JdoWkK7W2Q7TOPhkF+7+4fY5RQXK+n0Wl1qLEgDU6l+WfVyQYJjaa8w0+Te\nvH61rleRzXSz50jIFbjGtKTi1sC3moupsMgAMWbJzXOxnwYLUyXArsU3uFng\nqpk2\r\n=lcEw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-174367-kfs9b83d_1601643734342_0.2672172375740367","host":"s3://npm-registry-packages"}},"2.0.0-feature-2c71bf-kfsaef8d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-2c71bf-kfsaef8d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-2c71bf-kfsaef8d","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"524fab177cf699fedc7df53f5dfd621e94673429","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-2c71bf-kfsaef8d.tgz","fileCount":304,"integrity":"sha512-2Dq0y+AAFhkCuvJy4SDA9MlyWZQa5gII/UYDjdf3PTYslmWAZ6m+3Fmy2B2bzHmSz2V/xku9TqAE+VOHitYw1w==","signatures":[{"sig":"MEYCIQDWNm2Kx7Uce6YcMjUxG9yn8weZ+OrX7AiYTXqV+7niHQIhAOXG3P6RUIuHgUIZVQ8uzFx7FB/uGHZSYOJFjw6k24gL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdyv7CRA9TVsSAnZWagAAAm8P/1+cFdHKnR63WJRMsLW8\nsf02zxfo6cC1RQOxsWYffTPWi0xPGtPENXew/zNampPz6e8fWYFL9XmVkxDi\nmlFSkaZK/OgwkLUfBxz7bJmi5Frue4/kDI1LBGdd5n/Mb95y+GbkLYdRPpZI\nfP5uTnJnPjsNDHDysNWo5ti/0wEtvqMBPN5hDHkFkBfV8Or1E3uRJi2AdMVK\nC1PO/+ANUQ+uhbCLVcaoyd42LHhSDCJW+QjJWVoRXe/r/uTsmqe1WVJpYKbO\nctaAdwE7CKWFFOLIWX2vOkLLhUt1SY3TDCoszIWCc0PSk4t+1/gUzX1uJh0h\nNP+9+es7h2hqHOFBzMwjEnA0q28l/Xa7smmT1o93/t6LvyhAe0eIAYDIhnc7\n+6jJKMVKscA+bBpbYHPr5IuESXUyxYAszttCqtGmhKniKA9aYJmZG0xIbezG\nYeLYuMNE9V6NH0Qy2zpfi8NT096y68k0U6+mGbyW3D0BsauBZBjcI93ib025\na2wmszt4Dq62uztiKCQcwhn8NCksJWZOIHkWwMYFynJizTawBDwwSTBcqWcW\nckjQEvNEvGBnvKdjzbgTtXwcGJuycfnq0Lz6KOXQM3hiwmEmp+XBRUgNvyir\ncvpbj0GwYqm70KH6rhAax60AEWX0kiR/3pJ4R7P3gSz3SpVzFIM7RyS9G+i0\nYcAp\r\n=aTAT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-2c71bf-kfsaef8d_1601645563216_0.7815411293080932","host":"s3://npm-registry-packages"}},"2.0.0-feature-235482-kfsb04uz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-235482-kfsb04uz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-235482-kfsb04uz","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"886b612ac3735237a51cac98c12d3b6656271044","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-235482-kfsb04uz.tgz","fileCount":304,"integrity":"sha512-dL08hWQqs6YK7rirG1OXow5K5GQHVTUn9BLBU8iXdsF/SohODU3vfk+ZPPbeDYJHU+gkwODGkUxHwVJHoN3kIA==","signatures":[{"sig":"MEYCIQCdmYcyyNY7MshpWXi8DJAIj8AQs/MHhy8EpLB8V5EfEwIhAPQmJpa6EdqPWHgQe+UNWt0wM7y/BRybDQcJ0BAWHlEJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdy/uCRA9TVsSAnZWagAAo40QAKP+Qe/ORVCfFb/GO8zr\n6u/CUHRhW5yQEfDCYR8lYa5pksM7gDkWyMpt7I1g7uY7qmRytT/tGVpLf7dO\nY6viKKyktLlSE5fqPxI7pao/dVCuYtPLrUA9dw20ShyDXoep5Q3t1zIad+a8\nd9pWbSNQA6FjNo9Ncz6y5XRzGo1OHzLglXizWSbTeRmJLAIYHUWGn6nqNkOw\nFTbX1AoJe4COHFCjbdzWP49g0jzA0VHpL/IowawxO/LrQmkBMT2hpRqO3VGI\ngf7ckWj6avGIkfuZ3r+RYq/l1RHhuWGKqaXN3ZippG5nJpwA5Bx7pVHXufGr\nOkuFEMNTGKEOxX9LYnjMHgk4kam9mATm0p+3MMwEWl7zu07I6KSE3XcX/iTp\nkqEY8W1ZDhGOulvgqf0S9pCHatss7qHvmyXxVvHtCJEramNavNC2LXxtIv65\n7DRsXPwDy2opHVuxw5gxwW9uwrc/1tA8mLkChJiwMOB44C+4PnkiDoZcQedk\neI/ppFHtnntCA3ebRSJe9dEqlKCif7CR/V/o7LcBSi1Zdo7gwmhOhhWgx3kE\njH+KZ7169ukhtv6VWxu9QmWJKqtb0DAVvPLNDERsEQ11vjl16o3hor+WhvAl\n/LHagEedLGiv0ABIfRvU54NG5Lz1LBA7xwL9cUzfMM0kdM8FwQnxKh4ukUIg\n6OT1\r\n=Xp2e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-235482-kfsb04uz_1601646573988_0.5158964021255714","host":"s3://npm-registry-packages"}},"2.0.0-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"da14722cebb3e880c12c310075ec37aa38ba5ce1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.1.tgz","fileCount":304,"integrity":"sha512-klmevTkERS/xCh+8Okoo1e/AWsVe+rKvAfGm8dU2UwK1cEh7rGpMYv9PQk60H7m8l9yXp5kOMifojP8HgJrTRQ==","signatures":[{"sig":"MEQCICWo2nVQLYJ0/RHdC4PFHEiftJ/3hWTtcyzEsBwOo6B4AiB6GLFQbZuRnpvMWGJKwtzPQADq15XioUCmHjuTSLD44Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdzE/CRA9TVsSAnZWagAAPE4QAJv54NttAUS28WGEqA1u\ndWJt2l+pxUyMhsb+O4AvPCN/dV0FB4IEYBTzE+6TEaRviyyT7yyKH1DeJnF4\nwTFIcNUmhUFr4IEBzmn4UtoqCEeZtk0+F+NP3dePOyT8hSxekhi0Nfy5StM1\nLQafmwXM6aC47xtlJ5Iq1iIKMpfm7dvSmW+VJg+wBnMkt02borWiQVc0effh\nl6ZJUhZ60bUcvhH2kKJjHEKwRWtGTzTtuwsm9ln7C2tObIMZoaoal/ixflAk\n05v4JOdIEswIvTUP1GImVCTFXP5S+Jw5qS/7jfIxNqPmqK1cwQA1h5F27dJf\nWYp044CUv4IpgOMF6/ndMb07UAP/bvNspRkTlMiPUsLY7tFum16z4kRBsrzJ\nwB8/c/0q7NowUgso73oD781etUvmJdE3NHhd/bvXQN0o6bDMxdCgRWbYks1d\nLbN9au3XIIVMMezil7XHPkBKpF4wbeIHnHojvTQgWY4hqt+4PwvYf5lAOmYM\nR4+YcGBOLLEYOc6b/9Uphc4tobz4rpeKTffui1LTyCQr/VvVd9Ap2td62Wz9\nJl6kQ3hC90AGQc/RODkELrhUCyL/oam/HHSj9wxBvIP2fXphpPjE0DyQ3klc\n+hB9oYRrTJ8/uSoY2keodw4+BCE5KJF6wuYHkSJnHuhLPKR4u1jFxOf/tUox\ne2gJ\r\n=Hn2y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.1_1601646910586_0.08999082718583784","host":"s3://npm-registry-packages"}},"2.0.0-feature-9ddb3b-kfscaysc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-9ddb3b-kfscaysc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-9ddb3b-kfscaysc","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9cfcb1af87d94561fd03ee3ccb470d75f7cdda72","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-9ddb3b-kfscaysc.tgz","fileCount":304,"integrity":"sha512-IBel4cZFpNNSNH/v7XjlgX6okL/faQK1UVtj7ozxv8iFK2QWva62NqIm0X050Bn4A9lIn9v0bOaanL1vyyHFjQ==","signatures":[{"sig":"MEYCIQD6uBefnARCZZ8npfNZyzdsDY0Ud1d9IfTS15VNLwOaiwIhANmLc5vYP+aWhzLGQOPm7QDvpIO5Qc7UaWliPgdZbeog","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1507527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdzh2CRA9TVsSAnZWagAAQasP/RfmDpnr6Uqff/pkKPWp\naIw9GloR7eASI2PdJSDD84obTAE4XfnN4bjOJiTmRAqckRbBzJkkZLYTxOMD\nRbQZTEsCUPeR/2wmBV4MVLQynjPUpm3Y0lRu6m3aErmhyrge4O+FaMq51RYx\nAEYHo/sPo4AIQKwGrIfEAaiz/a9F5GbkwQzzwsX+VuiaJzWtCFZ41qKz7Yes\nsbE7hNhUnHhKMRuqdh1WfS07T1iGnLEEXLAS4YCQZtsNs5AWr8859G7TmCl8\ne4GeQGEeyZO9BLau3Pwp7OOzQxXhO80u1Pzs1cIfiRiJGwbeodjgG2w0tosx\nEf+32IdNo92bIv8gcupds9b4h1dkbaQtoCFK51+EFflclMIdzfWlGNzEuy2p\ntKJikcizifr8gZNqQ3xxsuZMTM+woC3IVi9lzLAdpvi4OW+OwX8OPs+I1lzC\nDATCZZ8taCkx8Up5BfYtlUJ1z0D+TH1cjJQm5EWUeUKlvZMZQcJbDBYQIhBT\nRhhppPpdVuajsww0f5ygTUWEjuz7BcpAjHBmQ6Fje6SLk1YCOLjjJkOcu2Ja\nKi8YORfK1x6WRCOMvM8msHQsQpijbXugFXV8OVSaJwxDZLf1VK5xQ/aj3mEs\n3DEsA+YJpcMtMh6cejQVu5wIZgh3JFCebqgZ/CBnsn/58GAaibjzNjePdRdy\nyyyx\r\n=fK7H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-9ddb3b-kfscaysc_1601648758034_0.917187878080967","host":"s3://npm-registry-packages"}},"2.0.0-alpha.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.2","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d4aaef1ac6f9d6e34fcc7d5899d63fd41c4f7520","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.2.tgz","fileCount":304,"integrity":"sha512-ggvcSiJ1+GZuKoxcOLu3lnC3GhYqS2RyJBkaxbun/saHekSKXxsAweXJ/sgxZpMuH6nIzTcYJJ4FR2oqM2A6vA==","signatures":[{"sig":"MEUCIBTJfeGAB7xgaB+tGMtZ3iFBvgmnTGCIhRVqexnCMYTAAiEA7IRhwFo//agx3P+gLcMaJzm+IIYB30VnWd6qcoEcpfY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1493447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdzufCRA9TVsSAnZWagAA1O8P/Ro2ukX5pjoTy6Dt2uLA\nefvwOtP+idCPJ68f/kzvB2LPpwAtw81K3bYgF1G1k7GGFxWyGbB1iTDxIqNR\n8hhGKPJKkn5Jy7LR7B+q00W5/l4wwdcXRqsd44G/m5uPudkp4TN+ah+M7tUo\nIznZ4fyjDybAxvgN0AG/AlRSMJoUVDsILLAn5Wz9uwOBV1ZsEORarSJFU/l6\nXlHRfHATp95u6kvesRsIKHyQV2gmojpB6lFgCOwUeZlg8WhO8vwCU9A3rNYa\nKh8hpbvTms6/egoTLShWEl9ob4tCYp1SKTZ3sTXbpJ0BiRMC2S0LL8mVWC+I\nJopeIukl1aZYeAtCwayM2yNP0u2Wh2qhyS7o02aXyDStTX/LFtnr08pPNKPD\n6622k6JHTPiTwNXv5vqIeFb1ax0CtFll+VpFFMAPlIyMXYzD/jJGaDkcO8L6\nECUQFO01w0Ob1Uw3oNloBuYROHuxyW/UtCti89+SZcrlLrd/Zd1oTPF41UEy\n1upfY6y+Qq27At1QXnEH2zWv4PdJKECjPU8SvetegMYh3umOhh8IHViwDSvp\nWaY4SRBLjsijXxFA/R48IacdKAYRhQc2eKFSu1lI6hRDKMcIo/XwfFkkKUIj\n7JxtGkVBZQCKdBKzVtaeXXBZYA0iem6pWtPo81+hVRiAlq2N6QPST9Bhatzq\n1oFA\r\n=zjZK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.2_1601649567260_0.2177723194857739","host":"s3://npm-registry-packages"}},"2.0.0-feature-3fa49e-kfw8wihq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-3fa49e-kfw8wihq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-3fa49e-kfw8wihq","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8db6ecb9e33ac5ee910e8517880687d30f1229aa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-3fa49e-kfw8wihq.tgz","fileCount":304,"integrity":"sha512-SlDTTQAOVK0vSEUajZR1YS6YkuxrXv+stsO/VlUh8BfCnAtbekBAjuv/dmOC5L8eXo1x+qRgJaCIq2KT6SJ00w==","signatures":[{"sig":"MEUCIQCE6oHuqlsSGxVWQtT0k3+6YRRzvoDy5GRF6o4bLoiP/wIgIf50w5ZqdhS+cfH3D4OnL+IWyTwi2VmbqPC+5nElrRw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfetLzCRA9TVsSAnZWagAAlZEQAJG+FTNEph7oPuDqpbaZ\nzj3aDUuOQjeKvI/hn+yAD9Vow0gIZ0GQGnqsO653j/41RkFqMxv1frOhi+yA\nsNE9mtWiWPUem1585ZY6aXKF+idS4b+FBsHcLHBeqJzl4sg3nuRizwZmV9mo\nL6Zr15N2mWeR+18klpMExAq9UQuIfjlqUiXcvaBY9KoOGBEDrrjKcIOgLtgo\nTwoTqDMrEGIHqIN2LiNwQVMk8i0KhRfSUXzNedmM2cqDJ8KERtPP5K4qo5F6\nkB6eygJlc8gpJFA5rjpMBLb+Jkk3tx4gbFrhxMRIlDLYyE3PY6NHqGmftAbo\nH7dTZ4hIpWQMThnCmDp4efr/aMYT1jWxLdsYu5f95YdQFvibnX6iO1BL6/2x\nyMzkSscM9Cg/bozQAxHby8EM7PHfgkplhoV4EPXTpIoauiIuae/ZauHCUC8A\nAMXAZBADKa4x3HFTOe/IRBFC00yrzkz5LRVm3bDQd2v8SLNbsiX5H6a2dIjf\ndcxET6wiLUtbKP2Y9ies0y6xb+LwZto7NS3I7AeKPyAHZ+H45PwyM7pYEzNt\n/9HOAeDXKSsTmwUvztrAC/7G4V7tEYW/YjDPJf4nkHbE6piUylwi8aF6Yhqb\nzq+CLL9jeXjXyjhszHQJfAje6ULbDLLC9ErzaUd+uMoFRnbMOV+ZyL2MlF+Z\nECGC\r\n=uSoH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-3fa49e-kfw8wihq_1601884914736_0.8153484218946347","host":"s3://npm-registry-packages"}},"2.0.0-alpha.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"995c63d95c11237303129bb6c74763018304c611","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.3.tgz","fileCount":304,"integrity":"sha512-USnBPf4qcDoIW4SiEM/AibMGe+gqLmmnMzXPwrzrFxJs1HFLoiwLqlwkYLqfpe+S/qzwy6+V6VUhrRYZOYw1UA==","signatures":[{"sig":"MEQCIGxNHLrZcU1JVgaD/j6gHeg4Msz3MjjyYyH9lRz9Lsl2AiAoySe+3t1ZZvJfbQShSwjPQX4zwcji5f43YRFRsD1p7A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497217,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfetV2CRA9TVsSAnZWagAAjX8P/0HfLO7siZCCwsxrRvkl\nrP2Plo/NIr3rUdnwC0hC9eNmbcGYNul66h7VmXK2wkTypDoViQATSexSDpuq\nplnymymlm/eT+bPkXUwYMBxHdUh0N3Se/iqRjfQ9dsXEhydN3DQJmDor+8Yk\n/XMx6B58mGQk1Wgu7FXcONaeJisAQIEMomKj9PPLREMOGiERrK0RdWfgfOl3\ne/sH6ms5E3eJTPGmlrWNEqWdu54USQcLHqw7no3OCr/QFuWbAYApTx1EXEco\nh/7JaCuIBHyZFzTQu5L6JhjU9HE3r1qTine/4/e+bIqAgZlY+FuaAbykCTbU\n+jMewFRy0dx/726GgcWVjtgDx/TCQGhnx7zaNrBCGvMoSs9wbe33oVf/Ynia\nYUIjr17T8xfPKgmQ56YxgDWyCHBwHGdh2yLjnrhlTB1qc4zLKohWEXPnn5MO\nkXUyyMCakGpbHz0MnbPakRb3SkXEfH9TzdTyRgRh4YYRw7ZLH4dd1ff5yBIV\n60+joLBejaLKFr/cCor6gvBuk1lAMUKRsWBRI3KFycvTs6jNY1UhAj2oofxe\nmMbGgReWoM9lmz9ULQFpilXQfQXmmrL5CXK3+V+II9aXWVK46qpX068TZI6p\n4kPy7UB6vt7AooGxbCLhukSfzi6ZuoYUVZW7ILAFxPwXgITm583/Fs4xVODe\n86Gw\r\n=J4i5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.3_1601885557624_0.6913657361955037","host":"s3://npm-registry-packages"}},"2.0.0-feature-68835e-kfwbanq2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-68835e-kfwbanq2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-68835e-kfwbanq2","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0fc5551d0193d8d4061887f7c23d2447d44c39b0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-68835e-kfwbanq2.tgz","fileCount":304,"integrity":"sha512-k2OGgbyM2xTsS36v5TBO4vWjdrL5d3tqBfv64rran/qPImR32+h3vUhW9DcpFksPqzKjJD+oJrwDzJ9PXMgMbQ==","signatures":[{"sig":"MEQCIBa87lQPQ7PkfiegSJKl9wTXwLpKN0Tkwms8Z4Uq1g+IAiBlPMZs9Nhf1mkOxrvGKSKCAP9wN45REXTAK3jaytzn3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1514508,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeuKqCRA9TVsSAnZWagAAZPAP/3ESyS2d/gCPMEg0vxW0\n+3kntG0zpq99G20sgbc2djqsc6eJG0n+0q1ixerVKsJJpCqaBS7FzY4IK7S/\nG9pk50OBVuVLwQs/bJbOxFpXVviI5rQKHdyuLNkOfUP9EPDSeOd8yBokUaYn\nbjnx/wAkoJIrTQ0RKwdZ3DZ0m31MPgh+VVkxIZA4jJNG99MrHJb9+WsVykkF\nhZS/MIgM7VmaI4TM8RPkXsrJ6tojky6+x9rUEvsslRRmtK9Nl3t/5FRRDbpu\ndujhyxOKOXPYQ7nH9RK5z/kF+R65hIyxA/L7gdpO7JjLIiSKFO5bf1d2fbR3\n6Kre8EiruKnARiAeunSIzCwZyUFXDPgutk4PvRfI2nn1Pih0vivpQfJA0fXd\nzn5VTywNB5NVEQdnsSY0gzEJx9yUD+g8XFUSD09VM4zSNC3oF/9BnXEGY4Yk\n+NFA2n3bOFG+mKwBeL91nsp2+H45oMf7Ba4JoB62BwlzletRfrD8Fbj7L5+U\nMWS86ZBo3OQTNZqoB0GN0qatx3O195gtzRpWCEeAq6B6FJzcQHQZppnAto+G\nVOCOr4AS9jIc2wIlSR+3ZGD1OaJXb10ZLaMGzwB52Iv8Rl850IYfCUJHkxl4\nmS/XvfRImwI3JEZew6PPI0LsqE7nVrkFzrOA8jTkyTUYG9U9xya65HdvN/Fj\nh3L/\r\n=YUQ9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-68835e-kfwbanq2_1601888938166_0.09147141239372503","host":"s3://npm-registry-packages"}},"2.0.0-feature-5a1bf3-kfwbvg4c":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-5a1bf3-kfwbvg4c","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-5a1bf3-kfwbvg4c","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"14c874da653f635461fe3171439ac317bf794486","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-5a1bf3-kfwbvg4c.tgz","fileCount":304,"integrity":"sha512-AZzXzu306ymipWl0HdI/9gxB8PhnV3GYYLgXV0/sfqBEy6Alanj6/zZo+pvOT7WnxnybutiDGW+WCF6mpZDywg==","signatures":[{"sig":"MEQCIFSnjYs2JmtF5eMeZDvj3QZb1dCLNMvi3IuaLXv4zamFAiB4SNAjXhayttMtZtaMkeNIig1fZMaUVNGYX/kJwnd31g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1514508,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeuZrCRA9TVsSAnZWagAAsMQQAJHmz3Eefoazss3otsvo\nGp5YVxZAJzFH34aD14d2j83QhkZuN8BqckVhKQVRBfmR+ea5zD3YXfg0l4vY\noOI557yWDori4HPBv5XitNhkqioZ6xwgSWGjS/aP1PMuzolwzIxta2BkXfjx\ndHabBnR/qS84Mn+5pWv75pfSXypevEotM5hg9ZiO2WbU39QVOISICFbpNhmz\nl7ZPcpf97tE8U2UXI0a/mwlNLI/1Otp6VOWWmKPUk7xhu7QcRNboIPuFEbw/\nmwPTVL2HAwdQrXFIH8MtdXUTnytuYteyg3dP+7KvUb9pKna8aPOTK4D2VB97\nDzavZfnyonaixtSFD6jVNNIJ+Rlo1w+ooR3S0gIIghR17F1APgpQVRZi02Uw\nyPtu7C78aLK5iRDNZy5g3P+m+nZKGeZPMWDzdECYYMEIBZv+8bUidapjsQ86\n2XBQqoq6sJ4I9j495doQgUYF/5k4EuGJxCKUCthT9mx5+4C3u6ScAdt5XYIb\nzbUHDu6231L5cOpYAqrVyIi0HhqrU5nTMSlkWdGzvr6OaDv1Pvg/n1OTzkus\nCN/q9alwCd/dB4hVmKv5aX7APraHzv4TgdAmPM8/F6LGjJuLxMk0snMkGA2I\nbwrVFze5yhs+T9qc/WOolijRbGXYfW9tx6A18GzDma/oHoAcsgHgwa1YH3ei\nYFY4\r\n=MAYE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-5a1bf3-kfwbvg4c_1601889899486_0.4210636332921447","host":"s3://npm-registry-packages"}},"2.0.0-feature-7a0185-kfwdyl9e":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-7a0185-kfwdyl9e","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-7a0185-kfwdyl9e","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2e75c854fd9d8e0fda788404858d3f0fba03a136","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-7a0185-kfwdyl9e.tgz","fileCount":304,"integrity":"sha512-rpFv2uQrJjaixzQBf45p5CgBrY35tMlB63sB2ExBHIKfL/rD1IwpLaqw8l4YpqwWQ/zAmR5J+GOtYYEIREu+TQ==","signatures":[{"sig":"MEUCIBz4YqYlGSDpWCoi8lo05zzE1rF38DbQlP1XOhyrFF0MAiEAto+ssuSmtAstJagOARunmFR98teYICtmWNrdsha0tMY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1514510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfevQfCRA9TVsSAnZWagAAQJQQAInWq0PHCm7GCvgMF3DJ\ndEl5rAA0Ln5cEMFCHLx4Cqshs4f76LwU4BG8olZnHPfGnckMekP2U86rLay6\nE2DIqvh0wLuzWKzA5YLp5bghC5HtSZ417VBpi+SEMMwMDb3xV2uaWhDRdhlq\nMVS8XEpB7rpSK/iUbZlVo/m4FHN0awCs6C3Z5xPpzG6SeywA2DwDpoNchedb\nmHNPlG7OArj/ZUzGhYX581MjZjowNkRw39ujpEoqmaxwTj1FCSKfBIwmkz+E\n1+Tdt9THLlRW21hbDFj3ihqotnDzXla9+eP63sWT9jlr8UFDIwI/aTeq21id\nfSX/PptsUxDmenjxhMMZEwm7PoYcxJ/7YK5xJg7wmGfXZ0aRj31M2HZsEnDe\nh9AWUPQAarzz6RXM+udtgsrGquJmidLU8THN/Li8fJmTNw365Y1gHzdf6tHH\nZQYL3Tjd2Vu63hMWbffLVMO6uUQHejytUWgU8Qbs/L0kSvsWuiiIpFULc5gz\nsaOBwuk3ZtNZDfPuzv8ZnYtuZx5r/LwPFmt4XYdTVS7kXgmP3N1lJ/prHgiX\nVWXGIpEfvQlydJ+mL2cDZgVTguhwQl2seAh7KeYle/bx2fbNA64FGrdG2wBM\n0H6V2mA+4N3U6IqeQySZwHDlPmnXVuk2dDcgjx7Fw2iJHdcQh2qxHNRdTGgq\nPtC0\r\n=jtM+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-7a0185-kfwdyl9e_1601893407064_0.7638362005520476","host":"s3://npm-registry-packages"}},"2.0.0-feature-acd313-kfwf46lc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-acd313-kfwf46lc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-acd313-kfwf46lc","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d61a14ce3a8e7bb88fcf6a3e64f90113e8476560","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-acd313-kfwf46lc.tgz","fileCount":304,"integrity":"sha512-Ej3nDRVN18XgZeJz7GGd5SeanZCv+IQ5XsooFgJAjN8fSibGcEn4WVQI+FeBh+ljBNlr8++8587wMbPPygW8HA==","signatures":[{"sig":"MEQCIC2+lDlOsd4mGhVIul2mFhldzOxsDEanGB2eGNzCItbAAiBXVvK8yZ7/UJO1K3rDdMBr6IHpKkExXrA4KAdBmLXYKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1516795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfevuzCRA9TVsSAnZWagAAqSkP/jzIcflVdC3pXp+O5b73\nl/emT5BnRHmOyHWSVGhBjB3s7vEgewN+rE2mT52MDkU+XrZeQDbA1mgNc1/6\nvgPA08k5ppG7b06Q2cyryxQflCZ4dBI9ZEgv1ennIEMwzaU2dtTg6khp+qDB\nF2aHunN2oVtmY5akBjwJUaKnIuadUudAzgDQ6JxI4L1WRaA1ECiG4fzFkN+Y\n1ytYzhfA+NkNlhoHfuYsfG2muaoAlKxhxgeaEiZGZXYiL55jZXW10/rWVRVf\nCIFA7UiZx7oguPLfeGo6qiOo3BtQjA4LNAn9jwx3aOfoh8POfgADNeLMSx9V\nxhPw8dWTutXGBS22oj9DfYWOsHxsNoUa2E2CLBVXaUq7R8GconNmXljjMAPF\nlBOdWxqUU4APJgn/VLWau1ySpJR6xPF5+9W+C0kbkh4Ni3jITbjfeg7oiUpj\ncBN+N8yEY8HZrjJnAKFzSpyG4ORKTYzv3TSkzGS1EOLJ7gwm6m5M2ORuD9Ul\nUu6nHQi45gXND36mhENdDbyb7cJCOdwUEf4KX9hDxVuVXBI1ctOsa7i6SxKF\nuej0zMrbGYtfFKxzbrrVUl+Ih0R2cbNoC7hkrKE2NA3s7+ugBnPy8+GnnxTx\n46g8koMtpZXyj9vy09u964yv/sWaKTQg2hFTYAqIVkq64FivbxHWZUkfeW3J\nSc9B\r\n=HYy0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-acd313-kfwf46lc_1601895347104_0.9592726496965143","host":"s3://npm-registry-packages"}},"2.0.0-feature-a3d3c9-kfwgdarw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-a3d3c9-kfwgdarw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-a3d3c9-kfwgdarw","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2146cd708adf5a25d9aaae24b33051b2a59fbe29","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-a3d3c9-kfwgdarw.tgz","fileCount":304,"integrity":"sha512-YQmOJP3s7+bM2Uu6zl/zUYvY8Q3/PkL9u+oFe6JYF656lmPk+h9jH+i1zYk+VR6qQqnLg/dni/kXV22xK2B35w==","signatures":[{"sig":"MEQCIDIFbZd/ziAa/XstEJNmFIFFd09n8ZGXQOJpJd7jRFa5AiBzbPmJDbyvMwWiR4g4P0gnUnKn1i34zXetG/H/LHZmGQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1516811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfewPtCRA9TVsSAnZWagAARfAP/09ow2DFF39VkFoDUNvn\n1tnrM/d77BzgxuMp5TCoGfX8gj25x6wgCfQXiyxOLVy/sClONh4bqDf2ZR3N\nh4selMn+sXvP9DxXFjBbOuYEYDVNt9ub4htLB4p/bPZD1Gr6jJPeWS6ErDqI\n9Wts9Jlu2v6n8DXPpIsx3HRoGP0wHFgXNLuUFsNpsVShW5mhucuuFIaSpy1P\nqY5dUGOAtNiyppV8BZvmJM9Sbszl/GZJEXHZEqMxmtIyeobWXQ4+Abnn9a7d\nYTeEt0kJDPuCSvtxQg/tHoFrFIs1qg1kv1sm+lDpl3qlKoLbtNeITloFkiOm\nycMXUrPEOQ5243ELPjgryPAnWV/b4g2yzVP47mUqJ77asV3det+1DZeRutkF\n9WkVxKhHkwpm4rifHrqifRRHTNyNYLYb+kn39939ONM1fdEEkB+xbSOtoZsH\n9tCp4ApaeEHC1S9qx6LH2AbkhUDxs9rzRzTh+8WDQ15NEcQV2/+h1H+srzvI\nRCxeF6ERIqi7knWq5aOLvxQALbvv5I6/+raIvyhZRUW6aA1A7Rd7nbWaPd9n\nQYfyC8mSyPsylkh9ZSVUTfIjsqB2cCj0LKR8FrSxh1FXTvdMGt4Q0EamqECb\nZu/yBjaIbePMfgc+mMUKzePoRHUlejg+5cn2myQDLy0dLSD0rOYOQ82cSsu6\nfvXh\r\n=ihiv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-a3d3c9-kfwgdarw_1601897452992_0.5532509242458246","host":"s3://npm-registry-packages"}},"2.0.0-feature-014eed-kfwli597":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-014eed-kfwli597","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-014eed-kfwli597","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d14c51f59bcb2da8b8e8fa06405a2a2fd4e416a4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-014eed-kfwli597.tgz","fileCount":304,"integrity":"sha512-F7MyToDyG7o2vJJ6rk9kqvkXryKq3i1AyyNnhua6U6so7KcX2sokYPyuD29LXXRg6KD5vKIFq3d3W6Gb+2cN/Q==","signatures":[{"sig":"MEUCIQC8yDhxQgnodKzZNabujcGJ5Wyat9qqzvOsVjL1YV21zgIgLEjUPxRncoodQNSodu95JVR/BtrF720Ye1d2Td7CPA4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1516173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeyWfCRA9TVsSAnZWagAA9WsP/1uyoZHyfJKhB9/3C1qg\n+HIeQYr1GqcLHvxoWpSYuR3n/jCGzhcBr2vQ/C/dTMw6zYqgWxQr02Wx/40M\nqM2DrtVzF7FKx1vNj5+NE2Fv//BFrALchpoTdJ7osCa3vvb1Sqt2H7yGpRN7\nWKMFYv1uRGZffATRWAb89/P24igSIJ0MpNCTwWJuAzX67x4EbJ1eGfWkri1I\nfyZ+a5//4FjoXPj9iTtklUUa1wiwVGLiliz/LNd2c0lWafxP3vxRzG3NTmsd\nLpuyl5i0kJxruiypgEjxFpbud+xKO3dUXoBuDyIZAI93sCjQFK/Y5u4TBgfT\nhsCZuHUPrFRpPOw5w/Gjb2cGYXJykNVs9v/0k4dm5024P/Jm7w3n8xDGJ1l7\nw30QMgAYbOuBGzq1rBJoVafliEVwN5qhhZ7pziJZEKMmQaRn4Yd0ojapTFlY\ndR7s9R9JmKvXkejjBgYOXw+2DWgwIiw602vOZuiVKZ4EF7WIWJs/Bf9GeeWN\nxbT7cpTyiJmI/rSpzyZpyPpULuRb0sSaqmFx/0KqXnDW/5TgXwHltGNaWOVY\nlxfUn8iUFe0+rOC0XjTj7t3tLVYcXTMKhbmMzsMP2VD8MWkDazfSrZw4oQb+\nF0pypqH+Xpx0a58Ir0tqMpeh9NoJplM0dN5rEMuZEteAQafXjDTZGoGsyr8i\nlWoW\r\n=zRC4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-014eed-kfwli597_1601906078504_0.03044279554080065","host":"s3://npm-registry-packages"}},"2.0.0-feature-52d78a-kfwmyy0r":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-52d78a-kfwmyy0r","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-52d78a-kfwmyy0r","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1ab65eb2f12f333fdf15a82988987cb69099f472","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-52d78a-kfwmyy0r.tgz","fileCount":304,"integrity":"sha512-OIa9/QFkGGaaeCNF8yVhJzzq7Zc+zwFSUETpo7/eWJmhjmtOrg3waowdJxjecpsrqkFQNPYuNn79Dv/C3TGopw==","signatures":[{"sig":"MEUCIQChiMtRY2CAlahADs/2OFghjxZ6fud3OlBXrtNXcB8N1wIgalfFmwzwcRZFQB59UxmyE5d+WvLWr2JzjySDN1f53zI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1516265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfey9CCRA9TVsSAnZWagAASt0P/0AF81XJcOPi1G2IEGRK\nhIYMLekJaaZ5jNLHNQKS8ni4Y+TutZcm94PR9KN9dgj3+o/UAC0PT7WV3uJd\nFqIXQ4ijcZHnabzPATXTMfVoXzspH6OsUrw2tQJK96rRRf8Nc4HBJGEHBtsi\n56uWN69CwN6Jo/EgXm/ZQsmfdP/17aXbtvqDXMTNdXqkGf6aAKaLELSM9Yqw\n8+Rt2Zyy6FM79GDWr3mfQxzxtYoewrmOEvMme1P7lXqz8TLf1GrdP+WFWxoT\nDMmZetjSldOY//SIy6McAlno55/+t7MoNB4C58z+hdLKJ3rD5Q49ra83yVs4\nR++78a9JL/ywbC8AQFVr5QS2Ogso3YDS9O+yXFhyGRFomdIhsI15B0cRufyg\n4yJW1a8nLwJ0Pz+atlFaa/jF5VrXGt3ZOwFQAgW0gSisP8DpEuzBLghYUYX5\noWjjEBrOgz2y+c6MgR7uR2gmYbgWEuwXhsH3UHI8HRiVcVjDYHQjd6zXpzvm\nTXSPVHq3R5FCKHxmDYLBfbIl94rzm8Tnt2NzvZKlo46cy5kVKwSeFRHi8cUi\nH/K0JxoaNmyT1b9WiaqW8RIKvgeKfLDNl4BLNa+s/0B7+323w3l+mj7DSxMv\nHV8pUpT2VnixjTdf9anVTeFqYCsyjM1bk5ySnDXELVhVR+qAsDX7vh6Q0xG5\nuCgi\r\n=rUFR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-52d78a-kfwmyy0r_1601908545708_0.44184806347102","host":"s3://npm-registry-packages"}},"2.0.0-feature-759040-kfwnqwty":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-759040-kfwnqwty","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-759040-kfwnqwty","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ebfe0ece77411a2234bac3123a9dec1f6440592b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-759040-kfwnqwty.tgz","fileCount":304,"integrity":"sha512-aqJYZV/4IS3VRaW+0U6KzHQeN86D1H2KgVqC0HEjYt3SjVu02knD4eQs4x/2iLUMoxgHz+vJiQqrBl1fvRxNeQ==","signatures":[{"sig":"MEUCIGpo5GlSSdk2okydll55o78Khko4G8oGuP0dTGYIiJ/8AiEA6nhFcZOwZxmntQ2mIgwtSAJsLsNOCIXK2DlHc2EZOrU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfezRVCRA9TVsSAnZWagAABn0P/jSb80QtjONsGpYCoCCg\nBnDS9E/v2HTsL4dsIutQx9Gf8wJXOyGORJhgLZwQV+OhcOHkJ2k+Nco/hmHW\nlGLfFgOQ9S74XeHrx5PE6hIwQDQx/GffKZoRTRbWFq1149KMcX1BD9XofrJA\nfWKjgRTUkoY8J+AEjjXfoMGibNY7pFkeYHMAliyzGpmiuOqzI4CfztJeQ+23\neT+DkpKUxXv3g6DHqiPSqyKwbQy4dfwif4actriAOpdd7JPR2bCToYDfVbP7\nxmcda1LFSVXBCzENyisWoLr76V3WytD9+iC2z9axXVQ8ZZozVR89CCUM+bKu\nnQgGH9hQIREctxWmt0eh+uGFupk2TheZ0m3wiZfRzPwPAkmLIyW9p8VkXsHK\n+ZOLHvu9NTpDftratE1qOVWPrHAoquS2NL84Opns1TPMlz2s1wPLkgtuLZnY\n5IlNYXgTU1cALZrI2pdocsxR8hFhdKXYO4f8K1fFEa8EseyWQe7kfNIX0lnh\nv/ysg/4O6OwEE/yqU0c4gnmTX3E6c/8z17qqMbwFaErbY0xcmtabetBmtaEh\n0pCpONBQ+IAAUOW+KxSP3ve+Dx+nTZZpnAP9feryNLAjHceHYcU4mbbA6eDs\nK2juWGLijqdCiweqlkb8bvUCJQvI8iMQH7U1b/iUKy4OwaUE8gYsqI0krahC\nQyOL\r\n=K0LQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-759040-kfwnqwty_1601909845310_0.5046883240086439","host":"s3://npm-registry-packages"}},"2.0.0-feature-640292-kfwoke6f":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-640292-kfwoke6f","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-640292-kfwoke6f","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"01afefdce6ceffaa8da41d0fda1df27e4f7239c3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-640292-kfwoke6f.tgz","fileCount":304,"integrity":"sha512-NdMpMcQFGcv3a3tvFuWgo7RkIbc9jnoQQo8x0BBAfoxsRw8Y0aPep1ho1ZKjdbPIFLYUq1WlMrhLhPfIFegzyQ==","signatures":[{"sig":"MEYCIQDR2fRxT+4yvI7HUTWaqA9hOy5C9JQLtnWC1c1YIQCcfwIhALIXCnfouiSZ+keCEdu3t8Jk4zIt6+NtR3YoZpJXtzfW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfezm1CRA9TVsSAnZWagAAmVIP/3PNCLto7eBQjcEy5yA+\nWzc8ZijYAyc6AHgEOQ3Uyw98x16VOxmth/wMumYxzQgv83R2/gVVGBbgQKgV\nUYBF+gvMN+gkg+nglt1mvHJ32JvSnR2fa7TV9bHJT0iwjidPnnwovuuTCYTy\nQARG6k8x1yYtud1d5xVxh5rhhytUQIhinRCIiygUhGWVw5HnMs5EPPQwk3U5\n7qwAjvKFCeDeIAknz6QGrKG9p74BLphHUbIbsZm9Deln4EDhVTQAyiR4crBe\nRjxwuYvMYR/O/92p7iA/G4xD6xrmhUTc5makb6OQB4GbNrz2XIH5LEpHgDSc\n6NSZWrk1GbTqE1Q/aidwRgFcU0TGiAPy822D1ISn4Jh5WiYQ1Z06yiR6ZLY+\n8x6Bq4CqQbEGA0pda8QjBiKZPaH6hKKgpTu0603zUbclT7h45xtUytuLpOhR\nZ2GCn1Z4Qosk6lZbnapzIZdSgLyGzH9zgv+coMDxQCconqjs+9ZpNkbA+RLw\n3oqfkbEJpSfWt6E0PO+swTCqMnNpFMQWJZKnXO40G+epGheJHUv7mqxskB6u\nIUsqAr21o6Vca0G8F2X9JLfhEvjtcrL5ao6ZbRkfZNex0Ayth9W9wE9zwQWZ\nxXLaAQ8ZIm1RhPthV7WhME+BBLApK5Gar3rygfjfORFGq9lLlMfPUrh8UY8y\n8m6h\r\n=Dp6d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-640292-kfwoke6f_1601911220786_0.12913722870180733","host":"s3://npm-registry-packages"}},"2.0.0-feature-388846-kfxxuadw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-388846-kfxxuadw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-388846-kfxxuadw","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dd4325fdd02b129c4dad8aa303cbffc31320eaec","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-388846-kfxxuadw.tgz","fileCount":304,"integrity":"sha512-9IFXjpI18xpaRk+bLwz//s6b6XFstURgyW0FkuSI6yPuENKDZAg2fpZp2Kusr0PJJU0SF5xnR2CIzCIzZvgN3Q==","signatures":[{"sig":"MEUCIQDieqoXC3g7G1Kq9o/PNXHssInESERER6DtJzlvESD6IgIgELbZ9k656gPT72fNl0SFYHCfGpLGQRgbliPahnQJabo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1519920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffGLCCRA9TVsSAnZWagAAAOkP/2Ly/FDqkAIBlc90D8+K\nbSvka4da0FQbdJ7N/yRkR68WXP0vD2bbvJ7yzN7sDmdjTlsX46RBmvgtCVDd\nCd1ETLrkSjMsL3xbvh6Uw8Bngvf8XN0rNVi5JJQLDrM9EwM6+NRQ9vNIM1of\nDgXqgEgGfUnSoBtiDYujR3HhOR2n2gsGZgMgwTLerhalOQmQ65lVoG1zu+1u\nP7FYIDinEW9zDO3QS4lB7xxuPQEbZCFEIg6i2Fas9y8QxiBId/h0y82WYfco\n5P2a2dMg8/BEtIZWOryCoVhvrs8g0BSPixQhTJPS+SD1J1jdl/yhDbqCP23D\n6wxzZFStbPDYZQrRv3/9C394rViskWPpcZZxG6CzF2aEhEsoV6YYY0kHMncL\nuSBfEmadWZN50bFc5qkovB7wUfJ1ZYpfMJ6GaxLDMK1DymFwMbhp6Cf0i/J6\nvZ+5QlM47Yn5f0Biadm+gAu+2JJQrJWzN+s6cdabecQWOX4O75fPK9C/tmDF\n6suRBfzrJW++z1whnpRiOu+SET5RrlkUdEYy/7+M/b4ckhmiK8y9BOvjONY4\nw1PTLCoRKDNhf85WHhn2bnkzkOnD6gyDY0iBO2Zg6wR46VDSvJZkcXkHwa+a\n1JpxgOqacm/h7TqAeKeVePTRFys3MbemDhzpghy0MQuu3RwC7rf7r3u9KRbY\nTpMY\r\n=oqXc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-388846-kfxxuadw_1601987265702_0.4113519144080753","host":"s3://npm-registry-packages"}},"2.0.0-feature-a8d98f-kfxyqcqr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-a8d98f-kfxyqcqr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-a8d98f-kfxyqcqr","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9a60621e4c691f3b5e8ba0d2cec78f05a18916de","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-a8d98f-kfxyqcqr.tgz","fileCount":304,"integrity":"sha512-TSjqBFMnsIzp6ed45C18VVfVYViJXu0bX3y2WCH89egEa4ni9AybTN4KGY8UnMtfxNnzKVre5O41w/n+LZlVog==","signatures":[{"sig":"MEUCIQDOpendxwLqXz8633oMfeQpHnanzliLst3WQz8pBwdgiAIgXvRKBcqBQb4o6FwiuVIHGgxi8m3R6PNvd9o+Lf0+PPI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524177,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffGiXCRA9TVsSAnZWagAAzv8P/2gbW9XN7iajhGINaD1b\nikFrSwhKwxcL7tG1exxwTC2n9vHh/mJIoHvG2hwzM5pG4inEWOjPFSTHWh3N\nMlVnn4mp2iRVM/WT1sTa7+e5wg2N2nwzVFlS+EkQVE/hXUiHWkPwNdl+DrOW\nMjKxaZ0W2YAY7dKgaHwfG2S3FLdXmmLaGNKOMKn6W4s20B8DGhiv+GciPUrW\nEocSBVTOk+4lmAws2hYJZxuo/7cSe7p+dnyES7Em+WSAMpahGqI8COVWY7yj\ny40AtWRsdf6S1Na+Fz2NwNDqLzSQdKytGmIOMpaRnFY6ITkwE4dxK0wciaMQ\nXMvhF6Zlzxv8Ci6U8uXQSZNwP+zaXf3+8OJ0EIYIf6MKQOn1JB+rzm7NC38h\nkB8p+yn3FrL14uH8/WfwcM9YI1pinsku9hWktIACFcvRSSriqSu0+FB2UgGF\nLyYz2z+PC7j4lVlWvfiP012h7AVBkQaka4/LWgjg61rclX+i9aaFR4q0ZNwC\nZ4K1EG9oJZjJSaPA36PhBWy0IgMnowPPCubcOCE5zh3YHiyse2aEyl7huh08\nzLfw+NUablNsEnQzP3IHDuBHWPQjax9DWZidF4EVuD14+Z1F1e+N0CWJTEyV\nhwqW0PvVPJuDGBst7UkbDa8v55lsUXgu8lXcauenp8RVaJj+vzsGfKqEBa54\nsVEo\r\n=+eGA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-a8d98f-kfxyqcqr_1601988758860_0.46085745485710095","host":"s3://npm-registry-packages"}},"2.0.0-feature-b2c1f0-kfxzzc6w":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-b2c1f0-kfxzzc6w","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-b2c1f0-kfxzzc6w","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d6c8d7b50d0e7f4fd23c2e660db9b470c1797733","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-b2c1f0-kfxzzc6w.tgz","fileCount":304,"integrity":"sha512-nCnjXV0mWw+HjHARmjo8iFciRJ0Tphm6gWDJpEkomq2rXuojnHSqV/J51w9IiLlmU+Pw+fE5B8MR+S5XmIS2PA==","signatures":[{"sig":"MEYCIQCL5tZERC9n/b6UjK/rF+vkC0VlnU9COcM/AImL9asJ3wIhAKTNb44RiNrUYBD00WokV2Lv6jI9Roh8V4AQcW56BvKQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffHDTCRA9TVsSAnZWagAApgYP/RIijxeJftRH++LLJ5ew\nYukrsuHTnc1ftyJYS6vPA5qe+S46vyIjpvBLfg2gsKTj15GHiAH99SBWYBwy\nmEQwOewZxOyxWDiSfGUr6LGmkSDdP713zccg3oF3w0H9LNi0sWNDMVOo5ozY\nqRg2HYN/dktuz8+4TG8BX/EIcHTpXQyznPMQG3Tur8KKDZTGC074pynSdyiJ\nkY3uOue0BSgxN2d/rTx78fNhFPWXoRj7ozaLXSIcAgF7DNhKwlmfowOSPPzd\nW+yE4R4qraYMMCwUL1OnXVkqA10RWAQeTSAqX68LVWZJYmuuC4yvEHclK7Ev\nPYlmhbK5fCYI2kQIdX2k4+9KxL9oZ/Ip2dq6u/iJpB7WABSD5ZJnH8quR3QS\nPYHG6ViAzVK69j6HM52sl8MVT0Jo1tyswYwsjhhWcey2dcl1xqFVpp/rAyXF\n8XSu4+QEbvLXxvBfPxaXdsjQtLRPFo+iXSPT7bts295EU6bsHJKWM7BRD/Cz\n4mz6F1UNS93Yrgz+cJtcOcbZwVbg5QerFywtL/AFxqnht5xn7CAGJ7aUIOFb\n6hCmIQCgt4JuuXLVdkYP4hsHoAR6CW9YnO4p0Kc3RBNX5dCOeZuMvnri1Ewf\noQynF/7SPDy9Xz+EjUcE8Ck0VtVGbA1NeiooCcYwPA2I2lJE+sByq/gsFQOk\nxMol\r\n=GZfT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-b2c1f0-kfxzzc6w_1601990866860_0.5176149422239942","host":"s3://npm-registry-packages"}},"2.0.0-feature-15b001-kfy2j3xj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-15b001-kfy2j3xj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-15b001-kfy2j3xj","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"180551fbac585e67b0aabc285ddc79e263d4b0c0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-15b001-kfy2j3xj.tgz","fileCount":304,"integrity":"sha512-A9MD73oY7tKnKevFW60sjH5/4UogYtHgP/nFziPoEGoSNSvG0jqTlKE9oVDmudX5jVW96BCNhmZuYG4PbKLcQQ==","signatures":[{"sig":"MEUCIQDWxwVsrQrzjQ3+SsbGanSENd5JrTUIOZlp+7wlUHIodAIgE4Sd1V7IrKNrQElzKoCiRyZx7Ca2otQ/p0cxLITiBY0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffIGFCRA9TVsSAnZWagAALdcP+QAjVePKGCmpZSjvzWIb\nMryyW9KfcLJDCtTombydLSEy7ahrAuyOKHH87IrmdTzMnMAe4X2Bwe7fXjgS\nFaXOx+IAZb1ILka9pdDiZHHlP3dhktrI2Ru0ZP/utEwgL10h8khycSXEQhPs\n6r5OaBzRn0SoK+KH8kkl3mT9TGjCzBsnyE2ut17qgHWlUvDzKcrOQ9rbjYN1\noI+nuSyeHIb6WpjkYN6XNK2Fp2g0/l+l8Kthb2KtR2+3UPMhOeT3ljjGTN2D\naiApoCNS0rdEknwGTYLB6hhl4A36lW1hak/S+MFi49WkZhcMbj+2xdTsPaOU\njhFLJoKTbwjalBgoBJjrMV20sEs86Iz/B5NZUilqPDrp5Z6gF1Zv92yeXE3H\nerYLIt690TzKyiZGh9tBwQvNTKO47yE5F5I/5KZTk8zlUYpzKj5Exzv+6wn9\nvd1R87zO03w/PX73dv5mvX9lMQfhm5Ag/6//B0uhlSXuW60vuexyym6gAKk5\nQzyXwJHVBzcU4I+Cps9wB5x6oSAolqZLJhEKVJLTGj0TWK8I94OfIGbDVTtX\nu2egikCK8jPdbcfL6UhRQSd17PgbEkNzZxBAGL6O5jOB9qwTpFWGXcOD1GdM\n2weMvWPKphBV4jep/oKG32dkecOz/EYMzU6P/QfVAqy7Jn/4rN4121Nropi4\n5v4r\r\n=wizD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-15b001-kfy2j3xj_1601995140723_0.08745838772372383","host":"s3://npm-registry-packages"}},"2.0.0-feature-5f4985-kfy6hjyw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-5f4985-kfy6hjyw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-5f4985-kfy6hjyw","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4a25df971d2afcf4c4f58e87f81f8bc86dd93eaf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-5f4985-kfy6hjyw.tgz","fileCount":304,"integrity":"sha512-kkHLK4rzKZHmo8f7HLkfdSj21kSURQBMZEE1PTkqaLevM6wMPhSnk80FYGxJWLepO/dRlyMbXBv72bzgkHMq1A==","signatures":[{"sig":"MEQCIAEQkTumPA3HH3j88ghT3HEGsUFs3xQPCK5cNpZcE9RUAiBWTNmiWsJ0q5Jey6Abci3cIbsjPEYe8ckHBViDGFuzPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffJuDCRA9TVsSAnZWagAAzywP/1jqbijmXBv+gP8xGqDe\nQVOauYN452sriqEbEw4n3pQgzyUi2UiIONlhtIvBmWLpaUd79n52S8sY33Ak\nx8N396lBKd7dKTbFWR9zsNj6GepWUzPJJbluTunDV95skicpnKK+O715YyL2\n7Tiok61Kol6q00HuaMbPVGXD3Xb/UQwT4CNtmM+xvM2v+Z8MGKyRyeFp7S1G\nV6Whklc0QWxHoqyZn8GGjvHGeKVk5Q/+e6+uIjfS8sh0EhwPYvKjd8vDtnFK\ndotxsWDjIh/O44ACayL0hWQxTG3fZK8ljrbpelkz1pJ9yvbZ1p9M01AogFwc\nzM2eSee2EYdJi7vzS+tSVaVyewtJwcs171TrbNoQjI2Zojaeq+VnTtz7KsZr\n4WYyQoTUT2+mtLCJEHBlM98OQVHAG23x2Jm0FU1hV8rL5dQfubQAfw5OcJV/\nJZUqWQ/fnqfM9PRrcg5vefnRMn6jhjpk7tWBtfcyaOG3C0hOTal8yc72ewSB\nnxi6FgfsQuNjb/Hnk5SQPN8kupCVr9JxZ7ieSZ8qrSP6pmxNsy++AL/J0Ssz\noXEie4coh1jwdlCYkg/sU1ie9xcZMFF92SvdSuqnPLVD3HOsW70CCPBxa1OT\naPLX5xu9m6Uw7q9595nm/TmxrQfu3YPTh4DiLOVgg16kOTGPMexfALF614fK\nV9Bj\r\n=jgy+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-5f4985-kfy6hjyw_1602001795051_0.9470236931255178","host":"s3://npm-registry-packages"}},"2.0.0-feature-777d38-kfy9ak46":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-777d38-kfy9ak46","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-777d38-kfy9ak46","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2a117547b9b6ccc15b436791a1ad7f488b17cdfa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-777d38-kfy9ak46.tgz","fileCount":304,"integrity":"sha512-cvRB9qa/jc+MPEYa8hsKlW4Kzf3nXOO10m7N38PLr0lmG3PkZc8I/lLd//iYfFdrFSu9RjxEKuPsX9gnKMhM/Q==","signatures":[{"sig":"MEUCIQDso5tU4XxXGBZqrn8ckUvXSDkojm1w8ywU7SefW801RAIgWdT9OSV8DNqmQp22Uj/240FB+AEX613dFUzkLvh6e64=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffK3sCRA9TVsSAnZWagAA7doQAIGzX6IbjH5R+rVzMkho\nWSk8Z5NF3Vf+KH34otCHt8yr7XY2JMwMSGAvFhPDIJn8z6SFxR6njGw8zBNK\n3lJtdXfuQ+i48NOIgqsySctuQJt+bdNqvTrvGIPsCrviYkO+hAkRHHxFZLNc\nstL1lSNDPzEMgpIAwS0xyGoePuBFCDeahNRWUh5VJNEOzAU7yj2TvDHMR4fJ\n/Aoi2Z2Rf7NfY1nngWyIuqELAyMWrVXCtaEtvGyOOYXK1gSgsPz0kQbtOVts\nZWMs1K8U+QjylrjTZWTtg3lL+5C7FdJNkHhEtMLI4ZtRIC4nq9HpdFNdWEbD\nm7zDqN4rhYqR0PX3tyPr/jmIO/6I3k3ZiHcPXAqprxgpLOH/LIvNPKl9xrtL\n+206AP0ALXv3WoQ7tHvQh+HFoYObn5Xfz9QjqSLZsRqnPz8qDLx7kJr0Wtl8\n4u/aDNG35rlYkPVapferPcAbKhF31GRReYLjif44xdBAQFID8Gg0+JZHprqz\nHVf0uvlwwoKeiq5FQmT+uzJuq9dXMf0fvpV0rMIzerKRLk4NgP4ThgfYIrwp\ngzF8iymrvdp9wTmeIJX/1zv/avrHDNfHoywu5QPToSEFL+exA6YN/fGI9Wk9\nG+qUwKmxdnDDh4pf1Zp9uh1hxZUFBrqmdR0YAnlj9A4cfiGItqWi47ijrqiu\n0CNr\r\n=0pKX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-777d38-kfy9ak46_1602006507950_0.4494448800634918","host":"s3://npm-registry-packages"}},"2.0.0-feature-4c9daa-kfy9uzzg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-4c9daa-kfy9uzzg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-4c9daa-kfy9uzzg","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d94da5db09809fcfc3be9af605acd365f76af836","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-4c9daa-kfy9uzzg.tgz","fileCount":304,"integrity":"sha512-vEhTh95e7uQh23BoaVWY7s7og4G3KQz6ZY0dDfdGqbqYi1tUEQZ6KB7/C3ltosrLONh2LkfNT+11QE9NcsURpg==","signatures":[{"sig":"MEUCIE4K5SYg5raBGMh0Y/3X11BiXkPopb3NIEvlw4ECv5JBAiEAwHx/ouNxArBS2df2gomH4/4DC6t8bU6egblZsMTXCZM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524587,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffLGbCRA9TVsSAnZWagAAkeMP/20u8MW7LSCp4oWqZ96t\nYP4nV7o68PMjzchvlaOoFDNpJennN69qtCaBTaSrM/K8XRRZIewiGNHRob7l\nhs19DD7qucsMOgHqCZF5aFr4PxRqq2E7A53c0OrSfJtVcwocuDVVXXKBK9i1\n2/d5J4P5MzA6XFctrsmfTdNuBfmYQv/WwEVZrKqx/mPSbOkcw6YrAL/qA9TY\ndKHVW9pg6OLzxM/d1Tu/DBso1hd+dPjlKbmn5FOhf9VCFtL2pIfdeWK7MKFQ\navvB/naT9+YRLqYXCcaLqsKa/LdBxB3BuPdaxwLvPuxBOT9p40pYpLOoE65x\nF8pzX8eDV8fuGFZDw3uw7nPZn1EgKovzMJhoghkVNtcr8G8HjJdFsTAPs/tc\nDjMd12m1kItiWKECMD0T+48JPRsczGYoqN2deoaEqiTZjJOIbRgkqiXXR4xs\n5YnHvn7eZacz92mEcK7S9s4lxWabydnGlFNKVyqfSwu2zPCQ086CEL2qZ4K2\nTfKUlTOX2gnSdOsKSLq3D7PSrJPMVYlUiJX3TZgYer02iOcxugjnIe1M3xPO\ndesLswdb5ZYu6wU6t52nCBuc12dCeyTlGuWIE5nQz2VvkhovG1o2QXWTEEXU\nqUhvwsRfRE7u2LjIZdzyEgP0hE7Wgtbq6srL2Sd6cpgbMJFm2KoM9CbJ3Bzs\nY1CR\r\n=hYSm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"1.2.0-beta.3","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-4c9daa-kfy9uzzg_1602007450710_0.771337428591663","host":"s3://npm-registry-packages"}},"1.2.0-beta.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0-beta.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0-beta.4","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"40f63a9417d96f6e1810843cb4ff356188991f2f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0-beta.4.tgz","fileCount":304,"integrity":"sha512-AwuVSn3W0dZ3eDHbpRlGPZatJ4AmQODTR6dpwNvHsLJHpdAHrHrvTFz0Vf+d2b3KADgKTbksYXQaWZhWvRtcqA==","signatures":[{"sig":"MEYCIQDjyP9amm/j/Tu9Oxe1jTNgPNvk5xRCDFz23pfSJqF4dQIhANIr5UG3z42huSlOtI/XnT62RtDdC1HU4dZrjIHu6FBK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZmECRA9TVsSAnZWagAAPJAP/2U5aIQmgbOwItIuShVi\nQ/jwKrfW/TEKwtkaf2lULKer1Fewg/fhbjBVhNw+gtw7ndgTJ+gV0DFx2nQN\n/bMaYAjtakK7WvEI/tnUpfDQ353X7Cw2LPWadWh/wUwvI/Yf7CHyc0mZrGKF\n2Mkt+uQ0lZkC0rEJMsVpnWG6Y5aammbCyQAVqOIzmppp6uNXNnQT41KJ+IJa\n3U0l+pwroxK3Bs+KjtfbFSgDcGf7KbKvL7sKI3npl3KXSuwsSanuf8C/i16h\nKngeV52nypXFlw+P5Y2yqrmbQ1rG6AwnKg3yiCXU4nuK1OkEfkjXckYwuYEo\nBvD9Fl/yMY6fydV49uMQz1HnCiuR3AhA4TEFhyJygKxwj5tvnz++Etx3onSJ\nr02Ks0bnEM7mnnQyISgfCjhMjnQNXqvQScYt6CoLzFnMRB7BYNeFRvPAIiaI\n0nyMGuHf0FV4pfmVCY26PhZZxXBDgPZ0ZAqiaOYBUXSc01D/O7YNl3rQQrKj\n6c4ajJFbAVtXYCZyyqjgwfgsOpLQUtb9ec7ZGd/FUxcLJtQraLePH2lDHcAI\n1yfasgPr6AVVVb8h4ITWz0G1Ep4+A/JRCyrAFw2G6H4p4zSKv6CIILWdAwFL\nuDmhL1ZDzsrfhpkNNL51y4PwkezGU8CMO6iS0J8q6Hw/JJ4soMT44KuwVIqf\nkr9Q\r\n=IZnS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0-beta.4_1602066820246_0.614614865349751","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"1.2.0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@1.2.0","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.CoreDomain#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.CoreDomain/issues"},"dist":{"shasum":"52086ef2b0ee742c1a5c3e721a6094d218342962","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-1.2.0.tgz","fileCount":304,"integrity":"sha512-G9NQ0AZ4nkWrK5nUu3gbuDLdq0skDMXUCGEnzdofIQr6xWuhPPp028qqEJPcJzM+odPkB9GjRxHn9QUwCwM1Ew==","signatures":[{"sig":"MEUCIEsTRw3M6WACtpuRvl/hkjNapNUYTFbAQtyrEDxxSyh7AiEA3kpvWl8BLaTSgfCNxKsXB9rZhoOzAp05XMBTljnlH6Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1491538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZmSCRA9TVsSAnZWagAA0vMP/RyZ7vdYfvTAoVHjSqds\npOo86lGQ8GjW1zrE6YZcyIs9cJFUiweMVBImDEdGYNDA2Jsr/cX4wH93Yb+g\nnFtiPoVRfa6oeOUpD8AcnrgU4n1ID/NXcShcDOhkCpf4E3LKY4nWWJ1TO/r7\nuTzNE2bFmv/21pyd6GhrM6cQcK7GyLwc1LrdQi9i2JHzqpoUK/MeqFSIYvS5\nuwQJFZcgfNpR7KC/w7jCo+W3TtLIyhxj3VvxkZ4YcplfH35IzqRQLUifC0UW\n4/4quWuEyBM3hqoZjrUWhrIJd/Duo3wb9eTDVUySqIM7SqymKtqlHi3QLjLO\nTQZP7voUmYBgzGN6NapCZ4beaHH99ELCfSRf5BoK7VfhKZdbrkBNRtMhHdU3\nx2s7XuHa9X91tfQNhhorM2cLs6Zr40JgpcBBpHgIGdkVpCx59ay87IkUFx7P\ns+8YdWaWQyVieBQ3oqeK9ooKhDEHzS5N/EtSK+zPCtrUNgT9/SfmkT3sL6Wj\n3LyUDJDpGPOaEQ9L0+yVCUOUGt41YCDEu8QVqHRWUTQ+hPQtxiuYEXdZKHMD\nHgdLSkVRoAr54UAClp/XdiOPdR4PpVvgt0v0J+ZigUgxCbINvTkNklHEcI9H\n5ehLv3tK75MQPwiIMXEwLcpuwSigpUVUU6xv1IryhSaneYN23j+ERYL9SYb+\nMpFJ\r\n=DqUf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.CoreDomain.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/node":"12.12.36","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_1.2.0_1602066834203_0.4496785084159691","host":"s3://npm-registry-packages"}},"2.0.0-alpha.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.4","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4a85a768f1bd11bbaeb8ca1a4b74dbe2cd96cf66","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.4.tgz","fileCount":304,"integrity":"sha512-L0DIVtSGX3NkKaQYSN5L3kxMoAnpRqHmTISTNwu9yCvQ4Fxw4IvhxG417EAnC9ePvTsbFEmWLuoKu2+w/xh/eQ==","signatures":[{"sig":"MEUCIQD8mT6Reo3mgKPBTXAyjngDA2W8BsX4QtbXKhSg6LqhJAIgP7xHzvCjRm/bqVENApI0TFHhQuV/T8BtG/QmZQjy3Io=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZqQCRA9TVsSAnZWagAAZQAQAJgdoKloT6mg4TZ8nRP2\nqwW2TMBBOiiO0QufUetIUIWInGg9jRQYDpc+8R85O9SxPiGfVr+7h42J5O7D\nnmfUUAKm1tl6qJXQNt0nLM3i1ibU4MUN9rKPeGwgABgsreph/MCVgWVu31O9\noBwWEjHEZpaMMdadUFWECOCCv6tpQ0sbefQmZAkeNR8dKlcckkziRX404bOu\nNvGKROxZgWUO09TlOnSBGXye1DKfrmH2bi+mTcyx47+LTkjGCvEvQzw85R8+\nG9JWLMGjyTjXBNzXzaJ7VdTxU/SIpR9yLb2kYZzDq8BW4XzHiRCfdMIxBKsX\ndp48RoLn5MC7sAhuaH1OgEwaoXh9l+Cj54a+jD/q/mUg6dHb65tUK+t05iqa\nllcH2fFcOSUm1+GJDvmyVJ8dtTsHjvnjMjqmllUuN+g3gBuJRy2NajOXKYxV\nB8rmbZ0YK9BqEV/Pr1i0jhC5xeuMeMlSyPAFyFjLmfcdNHA8v4XzLI7z53eT\n1cZQrlBX4paTGo/+1zPZb9L0UQ0omfdBCWTn0098RmG1GVnX3DZdqMMEJbSF\n3H4meGgJNxLb3QHXJSM3CRcToUo+M6M0Ap/snwB1IP8E4Po3hExGcUfpbml9\nW/Pt+uNDOIqDjK/shROKrYxpOjy4lFpBJfKaxmqgLw5uzO70MmltjnIAiZFk\n8uDG\r\n=bM05\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.4_1602067088277_0.8349130354147101","host":"s3://npm-registry-packages"}},"2.0.0-feature-d9441e-kfz9zow5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-d9441e-kfz9zow5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-d9441e-kfz9zow5","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"929c4086d88406977445efa0e1f25615c88cb283","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-d9441e-kfz9zow5.tgz","fileCount":304,"integrity":"sha512-gorbt8Xv7unV9ADnZYSBoqKi/LkQJ/bDGBxl9ZlU9oU3hSigNhLKnpTg+Zk7WsSmijXkOkzVw/M21aIuzEyMpg==","signatures":[{"sig":"MEQCIDqINQq49hZQMI9NdRbR8Ay7hF5gek2mPEdPU4qOhQL9AiBGbXO+ucm02LMLcVimkfc+i6g0luPXm1vKN/JptlXHcw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffZ6vCRA9TVsSAnZWagAAUyMP/jujONHVorQigZ021cLs\nhvMouVA1VEei/YfaTY660SHiaDoauC+tBxg0KKGO5FCw/DDNeN+2IoXSwEKn\nWliytLf9FuPG1HeDw/g42s4hinLdQNVUxx+uqhDcPHV397LlyYoBvPiWWubu\nUvcdWJOdwDrfshhcSeAuRHJMbGG6CKto4uh/n5P48Ps22JCAjymmSqjrFhR+\nhLR7rqldPnzA4+jzWvXK9qdk0fun9Tkad5FohgMm7K7PMIdF/leUQq1IfOUq\no/g6uGcEGfy0HFq9cYPh0bS+4JFSArAqEdUNRmqo5JIrHSlfoqHMUWjTctTl\nRY+HuG1tw2LSga2F72nAC6Bkt7PafGfu/fKBaqjNZwsUZqiU1srpPlIPLFXG\njmAEM0IVRoTzhLbxcFy15q12DSgS5Xib638HCThfR3QjzzNwMb+tWi4DBAIU\nFzaGJupYAW2rTN4+3rL4tntzrdHHOCGtVp/EReY4doP7zcdjYBmAPF7xe1C5\n4rp9wiBlg12H3bR7KUNoBW/l5UbZAQ1A6WxKFkw+vXEKpIZtE0v8n1rwr8EB\njA963ErT9XmhW/0/ejY/uM7fagk2HnpSwBqOIzm5raovNX5ux1QKmyjb7pzI\ndV2aMP0PaTE4clCMWrYRicDzzRJht/AcujL3jcmwOAHG2I6W6+fYp6ZR7+LX\nQO8G\r\n=dXl3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-d9441e-kfz9zow5_1602068142507_0.5123171890061671","host":"s3://npm-registry-packages"}},"2.0.0-feature-d9441e-kfzb8qwa":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-d9441e-kfzb8qwa","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-d9441e-kfzb8qwa","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c4d9166d42388c7514fa4c1b489d5765cb984006","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-d9441e-kfzb8qwa.tgz","fileCount":304,"integrity":"sha512-uTWPYY83i9Lnq0ynk+H2czGHYh4JwYYgk9lQh3gY6tZkC3RBlT9z2XSM1OohUP70Er+h3oUvXo/imAxlDG76Ww==","signatures":[{"sig":"MEUCIQDWNjvZY2cw9YKmJpzTduWTHE08iIBqgxYsLOr+A/KFMgIgJScv9bYqo0lXkXaRkn1Qnf4XIS5ACJJvgu+JLl3uLlM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffabhCRA9TVsSAnZWagAAnYwP/jeTj/dKNH8D1V0mWv4R\n0o1OgHfTIDCLGOWyQbzB2QlwQOSjDA9TFN2TnwleXmG7Y7ksUHD4IB7VtUiL\nY8XhTNSM8ebFVoKzLGeEWywbSbAZZGzvLo2QOJuWpDQiz93nKWLdudiBkc+8\nJWN7vlPaT4ILBd36gZsww2h3sfpUlg/nMjZIouCEcR4MQNWZCR8u5uZmlw+F\nGWb7Copm3pUiI+suWGP/Fr9H5ExvFt6ojjgBKUR+0BqjV9D0GjY4qUSQDNU9\n9ge8Wr+eQfFsm04CEPy/bo3CeJaHbBD5ZJd9FjYlCHOkQzozLYYxplpIVaaN\nRxNgD6g+Dsq6h5kPpYG9EqB4T0liUFX26FsV+mQ6UC/PizfPD1haJNX1Hgic\nbaAbcoPs8Qz/Ps4bFafzPSYVgm7sbsD8IHwCnpLyORKnsV/kbOWUhQBvkdlp\n8t/87yySFsIYlm4ynffkXdE6U8y0BHIUFbX/CuxbkD3VP5PYa2lwt4uXseWX\nFfWdHeyftccIz/w1PdxOu00Xq3lr9JrMLfTXtJQJm592BESOGMfwEnBnneJW\ntGfJcWnj3DWn69Rvh93rq0gMPQC751zqRy7qHDJ71dIJ4mtAgc12tY/DI7jx\n0ANBkRFXQS1ehaWzzyS3GqI9iZv7BXbkeidwE0qaFRN2scYX4NQoL+cLk+Gm\n8o4O\r\n=Fb/8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-d9441e-kfzb8qwa_1602070240828_0.7889568507740681","host":"s3://npm-registry-packages"}},"2.0.0-feature-4c4eeb-kfzfcdqy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-4c4eeb-kfzfcdqy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-4c4eeb-kfzfcdqy","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4c4bab1e35f0098cc78e90254a8c370f006ade5f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-4c4eeb-kfzfcdqy.tgz","fileCount":304,"integrity":"sha512-iYcOZGqIZyM8uk9OM8n/wVm5pEUdLHFdhpDVHX75VPOXL3HMoZorOtk6tAL03k0xR+PZOKjKkMM1BmDkVeZE8A==","signatures":[{"sig":"MEUCIBewVi6eYoCt2N+YgHUdZ/C5yrJUNoqfjkUXgqDV55qKAiEA2ybcWG4tXfcW+b/sriN8QVhI0ojBQ7gETlXF2CKiPbQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497261,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffcHJCRA9TVsSAnZWagAAkxwP/RJpBpYZ8NwSMjk1btCM\nT5RV90JswKmg5hF5jhereIKCJV2raunBGcgGjVTO7sJSwKh/wJ6ne+c9+JJM\nSLkVPozzXNpD4It57Gk1A6sMBUltEnCMKUUzRkhazy7RtShRAFJ+Heat2aD5\ngLbrPjSV1Cht1m8t4e8KvcVpZjof9TmlGLU+AbMOpHkkBUrQY2nK88BT2toL\nQVq9SovQy2i0t+/nt/fHd4pLewEOrn5T5IS4nrH98/QOK27+7f2SaNzxodsY\n0eC1AX9B+UUHQQFBFmDDn0kCYO24yWhrpwHt2qwgLaUhOBbZlKu+6dM0HHAt\n4MRXvQFwMt3tdWPEHjoIDGAm4Y18wyBwbfOQJ9iNR0f5vLW2rlSQRdoGO7wi\nrotGRXI+4cto71RQ7/WsFqiJUUxpx+Oh58CXxO2u0nC1KH67Gvfa1Y50uYYa\ne7y+D27fnXhtr/BJNhqBcfK22LY+9JfVX0jX1mzUBg4CfhEhsx66UmY+QSR9\nZ3at2/OnXX/AcdKTogwvWp1TK+CeoETMjiYa07LcMGIqtLFhh+eICbZsOsZr\n7OVEsRVI28H8vecqUlePebokF8v2gyR+t0tNAoc8Ov4HgP1hD0fYvO8HcmWg\n3r2p7HpUZsx26sDGsLQshoETUtX23M3ojZxjnk92T2YSTEIoSzgEOB7W02lq\nlMn1\r\n=cLSq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~remove_deprecated_functionality","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-4c4eeb-kfzfcdqy_1602077128976_0.07215253894328999","host":"s3://npm-registry-packages"}},"2.0.0-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-beta.1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"50ac5f23dbcb63ee687f266169d89aacdd0b954d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-beta.1.tgz","fileCount":304,"integrity":"sha512-/J/mAlzZUc4zwtXyP0dwDmHiPPjB5Hu1mHS/vTK9g+j8W5c8ZGFWIWRLTLRkr6qAdpqKtxgltXuFweMNoAaA6Q==","signatures":[{"sig":"MEQCIALlugER5le3k+3vragyhr+9cejTaGP1zCxySi7J1sCQAiAOYBitPeEMbd8hjBUfGDnvF03W1qRtfV60L8z8WjAmFA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfffRZCRA9TVsSAnZWagAAaHkP/RCqmLpjgsvfV6G8f27x\nAPH5dbnvqNhtlQtmm8YaSgHXbPVmuQs7Rh64SSpM/02T/Tf4HYQWfB9G+0By\nm3LucsRXP10k4mjxUQZHfzN8mZCbKV5DHTykqK7VebKZkxcU2LvsR8csozIa\npIiXdY9d46+tFTDwP88gcn5EeVQZ7sIj9r+cjvyAXYFFK+mtL7dz913BRBOI\nOCIB6Ub7IMlKK0j1UP7jJqmn7nLGG7+DFwQ7Jtcb8PdLGHNCKtFlUU6vNSrd\n9AiQ7Lc2GASZX9CzcEbdsPGMuYeYyd+e7nwYc4SFc/3+hwjDWrIwNuro9Sum\nca3aWwznED2/fLNIQ4y8bcMIGP5UL458/33t+CpPigSA17fKt7YaTXXcb7Hd\ndMtvDgZyrGZueN0V0DCYqbJ1Iqpu75/+KKkx/whxv7cwo0SgJqIcW63VCmav\nwmDwU5Sy1D2oLZQ1yAzMSsIgmXbRW6il5D+GMmP/WxdQQqoHy7tq/IrXp4qj\nYqndwUQ8x0kugafO+q510LGoDsD3KWF0UnDeeGH5xZHQYKRoj5YTo+Z1mL1P\n+4AF/0q0KK7TWTLXFB6ir8PfxCdPyTH/dSzLG4GCu7xKzMDiX9HHXDAxb05O\nQcJEKQ7kFAkVvfNJh9hOV0EXMzQDl1085/BXC+IbgmjeVUwFEd5IaOqmpdk6\nwDEv\r\n=S4TT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-beta.1_1602090072641_0.9879096928026938","host":"s3://npm-registry-packages"}},"2.0.0-alpha.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.5","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0daad64c522e2994fdb009fc7257d835e049c910","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.5.tgz","fileCount":304,"integrity":"sha512-LFfhU6h1Mk/xLq5TWwBppSF5x/eTcBt0UpravjfgCqVY4v0i8YTTC9aC+nkKWmPIUT4fsmDw+rWDeGVvBdssNQ==","signatures":[{"sig":"MEYCIQDYPR7hQZP4KWOBaPmAQHLP1o8bqN0ZLajyQks9q9nsLgIhAImNbSijbERt/ANXKJpO+09Ou0UQZdhXeL5d3MPw+FWj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfffRnCRA9TVsSAnZWagAAg8gP/3nOt4HZc+v1jIp4XJTU\nRB5p/TtGBLzkAX9qzqTzPnSeNGDmdsg7ZCTEZMGkX5Tky9Km+rSR+eFIfVoa\nfQj5iu6iUOUCub1sxuzb78L8cnSVLAApoFGrFWEcBOyO/CTWWQqtbylJp6a4\nWZbwvwAAynwApjx3i75e6JiyLEAhDd0odahcG3wlnXXeEn4xydKeHPnizQtU\nom8Dvxl917l9GUOudh+AUTJDVaTUwcgO97z06kqybVv7h0AXtVkDJ3gT1NzS\nGGKHJix/gV4VDn3M8i5s2JdsS0eS5gccXim2psdLmpAcj8sCP2GGPiOmCLtT\nfeCcJIqTrw4hTR1c+84S2CwO7OHQJXQnvrAirARELoGcxW112FHZC3eEZyv4\nCiV4fxXbDYmLsDV+8tLyWsnNuadnAwTjRJvUiv8rNOW+r3hSQ6ZwfVoU59Jn\nKL89pThSHiAWoUWSZXVVPmzJjN4R0Hv79ThGcv3l8HzU2i+iqzTjgxTJUJ1F\nd80/BImr7vhEUUkKivtZYz3EN7ABHryAU3BXJ6QmQ54xHPW9cS3+ash1PX9K\np272tQGpywILFHBKO8SZXPTgvxWHm7uELs28iikZvxC7AcXSD2DyJYhuO9m3\nTJIs95hIW8mWZLVoTV9FN7NPVsjLgsz2qjc5T38rksvG5vLNJLX+tZ6NdVpq\n3tqF\r\n=KKap\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.5_1602090087312_0.9467703499503257","host":"s3://npm-registry-packages"}},"2.0.0-feature-4cc629-kg0li8kt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-4cc629-kg0li8kt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-4cc629-kg0li8kt","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f839de0f5e139d90d1633420d47b60129f20e355","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-4cc629-kg0li8kt.tgz","fileCount":304,"integrity":"sha512-MpsetZ/K9Ao9sjCukZUp1qFjxcpWH62/w6ghcN7Ss7VnoyMgth+BBixidkYmv4UY9Tf2PL1dIPrbUAdm3zSy0Q==","signatures":[{"sig":"MEYCIQCy1irdhiwSCmDxx5nlxPvacJBULhS43NVv5zR3eTFSGgIhAKy/qj/k42u3Dqzdvu39frQHTxlOCi+oOvQI7RnQ19uV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfftZqCRA9TVsSAnZWagAAoN8P+QCLOjWPUHa/TVIQFiCC\nBm9j+m3wFbvsD9wKIF6P9V+7O9Jid8iIicCm8a15gKvGGGwjxaQpXogf7Irv\na25FefpvH1V95sPYnK0YEukSBnrAmg2EhNj1lJeGr9sdEeYXuyh2TCX0JXti\n637Qce8oURzkaOy9e2udoN/7I9fh67dyXJgONfa+eC5ZISRG0CK6gvR2FkMZ\nJgs2n8MNXtQ+x9kSulUDrCzDk1OXcdULn2coDWFl2akbyzoiCwKrOyAXFDAW\nFKWpB045VrC1sL7Jx3cQ7QOiWmO3qOp8FJu097Hz+7kbl/uhv13qOg+uzm5k\nV1oM0fSWrI2NOs2mMNix9ebFwWZwC8YNpReP3R/WF7G21RdZxbOk/vBV8SE6\n2Ms7G3EVH5a7h0iT22f9KWySsmVKT0YY/r4mdzI93N2rJbrAymks3SQWmiUS\nRB8isv42ArYniFgARWskQBd4tuELcNrrq85mDtYVEDVTRSeHUcI4AihomCIT\nNI99aHW9WMFHamsH1K++zN7Au+vzRnWj8TiXvjq8UCqlCQ4DELQ/ZdpZuit5\ncse6kids/efZR0u/cBoyDpigR2SAHp9HJeoGhweyGxCNnR9zzeBC/Sm+0C2J\nsvfD089MNlsYNeLbAcxc9+SLUR2SIGA6ELSmXiXZtACq/UiDq0wHDoKbkyKl\nYy/r\r\n=WBqs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~remove_deprecated_functionality","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_deprecated_functionality"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-4cc629-kg0li8kt_1602147945984_0.13325997108975662","host":"s3://npm-registry-packages"}},"2.0.0-feature-d4d6f4-kg0p7i61":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-d4d6f4-kg0p7i61","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-d4d6f4-kg0p7i61","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8735ba5d1288d89e2cfa78fa2c37cca6cca3c092","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-d4d6f4-kg0p7i61.tgz","fileCount":304,"integrity":"sha512-8b+BBMCOEXx/5HJQ1ys2KL614LBMO1rLuDEu5naoRJnRuJ7tCJn8MgMpkaxjYx0myQ6PzDFGx6Ns4OvMiNSPpg==","signatures":[{"sig":"MEUCIB74XxqfiqxCIptLKmuAkUW0Nt3pSt82+3p21VFZYVXYAiEAjfz/neaZLI3ik7mtO+PFxoEN/of88UDHaBCBeDRhhPA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1497287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffu61CRA9TVsSAnZWagAAbu8P/RKrEVw7Ku4gi9D9Hmm9\n9ZUyByB+gWa2PORsNtUSlVTfry+QG8J5TBE7C2C2M4yRPGj0T3MGm6UQTSz0\nYsdmtxVE0JNFrUpg0EbHdmfwCpXJM3HNTPfzHD54CcoeqCA9JSDu1BPDv30n\nDYCJcblwkxsVK3PwIBPT0m9ztQWLX07jETby5uZ65Uyks0I1Kzi1GonQTJgi\nNtbn4JI01lxNcT8OrnCd0XvLZV1z6CE9gBRUQV2l8tZKjr8rd+MnVzHTsU1+\nJgI257aE1WwmirGjBsTSnV8FriHB8MFiNZe9wvGIPAo3oypIxNy5+oqoZq0/\nmxIu+kkSkFAu9PJZjRwVpMtJtCHSqSdtXouw8XvFElKoPxsBPhICM8Um/MLb\nJJyeRe3wqMq0NaE6nz5ld0GkZAyUj3hNiM+oUlduy1CmQq8zn+COHhiA2YkU\n990mMhBv7wZeejciLc1xkes9TDGKG/6E6UP2OLne96QKNGvODHT7E/FzqMRP\n/zJuY3GqqZCyDjQG9iCboxjMjaSvDMAuiQjt2ASdkn+3u/L9NC6tUm7MKZPU\nVcUzpIAj9xXCwscxnczNrWrSj9diw5hPuIcCLuAAW+JLEp2xEzWVPLcw+YkX\ntbQfstG0120SS8500MmedAgUD2+cnjYQrzliAYkk+1lsxiAszijnLsLP5deY\nD6n0\r\n=aJet\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"feature~remove_deprecated_functionality","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~remove_deprecated_functionality"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-d4d6f4-kg0p7i61_1602154165040_0.3635583442037502","host":"s3://npm-registry-packages"}},"2.0.0-feature-a06933-kg0pf24m":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-a06933-kg0pf24m","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-a06933-kg0pf24m","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1cab4d8d91a9324499b500261938365484f6ffd9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-a06933-kg0pf24m.tgz","fileCount":304,"integrity":"sha512-reu/uQWNzIauFvsvvCCjI7JXXEtVypF0Kt4Sj+HIbFux9Q09vo5sjZ90iDIjXnS4Yxw2g969YDt5/8VOdsDPjg==","signatures":[{"sig":"MEUCIDdl7N7AZfXlRDUyxZRw/FKBecAkAM3JojE4heheQvlkAiEA8yjNBYgZPYyi7eXGcbsenCZn+21jAwf510MHw/wkd4I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffvAVCRA9TVsSAnZWagAAHa4P/0EqfcFVg3iLwaLrhNgA\nEozLBX4S3u960HeOPNaVquf4Ix+heepcuKv2+s3EZX7qFfW139GwrJWYQj0q\n1EJQxjiTeV/y89wTYaijG6ciyF02eY/oIMCs/R/qTKeaPjKZ5cJGnzU/x/XO\nenTjbbraSQjxOrrx4PcyDYJ+so5PuP+Hq9R/6fTc16FctOTROlFxZHFfTKoP\nDIxC+KicuV+G6yV4lyVW5bMNPjdu4tI66nomGaxc+/ietOfa4uZAOiDXQEDg\nHyrrMKkqXEnuEqTMKZckmQ0VIP6sd9wRbuUPc20fCY35/zh11dfcvJAyCY8c\nyp7GfSRZ3jw2v22IQBcXjweMxRXTKWYEqRbrNeuWoQUYo1paD4efq2WKhyMD\ny7uu2iantVeKO8T15futnOOG9TqMBhBUsAuW4YOPGe40fbSAPGXKRc+M+Oxy\nJRK12B5Fc16ufzzRU9OtzT4hdSw87Z+O+Wz1569G5URazqh3F6yLnz12xBA9\nS8e7O4riIFWqISBj20UuaZdbf7E77Q9boopz951TRHg2ie60OjQX+Shu7H1L\nvBmSbFvyS8qxwbjMpMlovseHseV2QTJRVsY5Zgg24TRxvCde5T8DcP6zPjfB\nSQMqv6692bfgfbXHwkLflcOgrMyAnEBswOEHqOg2acprDG+RfWD1acAUwjwV\nh4b7\r\n=K5IZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-a06933-kg0pf24m_1602154516485_0.5312204473627251","host":"s3://npm-registry-packages"}},"2.0.0-feature-822758-kg0u8k0n":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-822758-kg0u8k0n","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-822758-kg0u8k0n","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"23fedcaf0b4ad013f490a27d48c56959a03cb324","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-822758-kg0u8k0n.tgz","fileCount":304,"integrity":"sha512-OfKR1HKUR40oGbyv1xFINjinPvF/iq/636zgRFbI2JXhKjqaDH4AIaE8IElRtvfFSyZp7gHnpPGBXrDkOQv4/w==","signatures":[{"sig":"MEUCIQDPRzec9KSSuDFCbNHo+iyR8pWo21YM8hS7+Xq+6V1eVAIgFuUhhANMoNgrnWN89c+NfesjTmNuqCYHLJfuPJBDEDM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffw+1CRA9TVsSAnZWagAATqoP/iFBNaCIjS3NhY2J180l\nNG1Rm1b6jpoirbrTc6gH2a836HesNpzKWnJurJ3vJm2a/h5EJyVqrZCJu96H\nGNHkwJyNqQbWCwT8gfsVyxmYga3VHAv3ar4cdObS1Hr1Sf5w3KXR8vKFHNnL\nbo87sozJeBz1o/DFZj0lcqex1LeaQJqQtu7676tmecr06mWXPOXYfsQP8ipP\nxlfuKJqFL3W5SseRN8H/fhjZ8KbnK196rXBUfOR9XFWVWvhvBpg3tiv7Q1zB\nbLJgPGsx1fwTlX3eUMug1yl71p6Tu5UlbKuhHp5Vzj0Ph+LB0NzhZFU1tyAb\ntIvKuVfgP4W8YHIqXbvsq2EPjcT/mlcdQ/pwByyZ1oCj8y7fJ0CBIY8h3TEL\nJkZu0NnXzO90SwPC0Cu1BLQvT4Fikr0na54tPhEKRSkqsc7liBR+jm2UiBCT\nq9aIpbfZzHiqy9fWtchgQFHrPl/KfGE37ddiTd6IT90Oxrh5paYQ86Z9Wj/c\n1yIFKXP7qYiZ82hwCQHkfAIjXjxMOpkkteTLOp0U7L8rwu6kqtRxq44UDj0B\ng3D/ST5VCYjyWLmorXfrv9P4/B7zas/aJ1eU/xiM/VoTBJYd5DVHQ8UQ9PPX\nox1aVKBtS3ZQ8+jIl0/qp6Vag61vw92Gho2jwBEFeYL2i2I5xUsIt6k+qfe/\nFHzF\r\n=l/L3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-822758-kg0u8k0n_1602162613228_0.9793890064497759","host":"s3://npm-registry-packages"}},"2.0.0-feature-1a6115-kg0x6nh7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-1a6115-kg0x6nh7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-1a6115-kg0x6nh7","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d7db1ba744b25e1217b24b33e0278922ecf37372","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-1a6115-kg0x6nh7.tgz","fileCount":304,"integrity":"sha512-WWoZPU/BI6PO57SXvp8XRC/iuzV6B7hGObCBbPs3RJ44w71dYTROyADW5xlaw3rR5mzBUHb1Q7UHoo6/sFMsNw==","signatures":[{"sig":"MEUCIDZFUpfuxALva4ug8063HRex46rYtACJTd8bSaQKBy/AAiEA4nWYGzEDvjPPQHH5dhnKHwwsiHpdc1/ihfM1s1ru7Ww=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1499407,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffyMICRA9TVsSAnZWagAARkAQAJDt6OMkgslIHYYdKvua\noFhbJNTmTOBEOr8Se6gV18O2KQekbzM5EePWrACGFIE5Nn+Ax5M2LYmxCPEb\ndSTX22dKn/jtecsy9WZLKsp4rLoOVdmjhS1EGxDzIHCNprGzZGxxfN5wAdB5\nXF6wzCO1/q/Va4FpQ1BGeBJfdQZRF9gc01O1hORrr6e9VoS1UYWnAhqf/hHm\nQD+EEa9LBuY5xFsGBT4rdxV+w2LwU/rhMPyweZ96n7zRvhPFu/1u7eLMzfDh\nTenGYOE50DOU56A1O6Tyd6UKJdB51KX8Dkhm5k2X5o5rSR/joVjPtOOuDnGP\nkk4sNkUCWjIvWyyZtSvbOU6gZFDfgEjpIEGDQlVFyofVxFxJwpvWS1FYsbi7\nAhhoX5vRmXTpZYqvFlVXgyhS3xoqVL8IwQ6czHE+9aO1YVb93B/POtesVxiS\n5LBXZoWO9SWJ6rlEbzvTEXasTfHtSx5XywntMMKdoY5vIxniUnJ+BGWHptgO\nuSVD4YojYq/WVh+2ozC9wXuT2ZJ4EDVttQLznlsQ31jU4o0GEUtihZRO0oQy\nXp8jrDpfYbg4iDkqLCpo+uBqrmDz0WA7WSaLj/DD4ApiY1Y7qVL0soLN6ae0\nXvKjO3TrY5mo5kXR3A/YvQJRqCOSBfzDYNe8MT0a0IphcNY3DLLf/F/ckPLZ\nDnlt\r\n=0d0W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-1a6115-kg0x6nh7_1602167559758_0.23508514710872852","host":"s3://npm-registry-packages"}},"2.0.0-feature-d06211-kg0xb2ra":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-d06211-kg0xb2ra","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-d06211-kg0xb2ra","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7b4ab85a6c083abb92b3147340b32b57f98da37f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-d06211-kg0xb2ra.tgz","fileCount":304,"integrity":"sha512-rkFLd4NFzV3chhjKgPhp5BayWvizcKSB69azDCm/iW8ZnO36ucfJNfWgOo0FlFg/jHuWrhe9swEDQzqyX7V82A==","signatures":[{"sig":"MEUCIQDx9cqfVup/1O+BtsUAc9jkqrpVEMs4pRPjHXzNPGeSMwIgOy3FBn/jbonG/73Gxbui2ziqBLJLigEy+S5JdJjbtvQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffyPYCRA9TVsSAnZWagAAR/oP/2fNZCz9a+Ax+DD6KI94\nurp5xxoka/GpIeWHyGNlm/h22aoG/Bob91uSInNlfEIuNIfjbb/kp+X4absO\ncXIFEZW5VqFjNgjrfKoT01a33CT99p7bG8+abgU5zBRvouO+dt5BMzqYD9Ut\nNDLMs7wzx490YwCWAjXVVgmCWHZMDOl9U7U95UATzffWPRmS6QMvSJ8akiLk\nIfgYUJ06J8r/++gUG5IEeXwXE1B1smt3WY6mmOeGMrKGa5FzW+WWKM6m/bmE\nYhwPoQyEFftfL7JviaepcJ/yLN4JHvnKsrjAYeQL4UWpNloNwG+x+AjHnxip\n1mxzV+Xn7etSgOyFdOif9IJ4W65+jNZG1+qn5L6C4USCyqODLVbGdGwCupbf\ngOloP+U72jEnhM5qBi6KnICghKv6AxGNE5h5V7BtooY9BEow5Tju2h95cio0\nw0Z9gfKS+wRbRV3+BN3SXP1Z6yP8mYEAG6adQ5+Fyy0ACtc3isFlAdgy7OSi\nqbN2/AOVPq/pR369HUYq/aOKze8Qps//W5FYiGGyjrFpJNvhSWY2h4nmZnOG\nS7KO2MXTP82BoqL8dNwxNho2YkjeW7SDFr0K1sqP4F4LOTANbpNKRwglwqGN\nSjWlQceIEXD/vUu0HkKCrHMig0blTI3l58p6SoAuULudjPV29Z28/auIPVo0\n4+bA\r\n=ONNB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-d06211-kg0xb2ra_1602167768074_0.5774516964322258","host":"s3://npm-registry-packages"}},"2.0.0-feature-e61732-kg0xiqfq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-e61732-kg0xiqfq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-e61732-kg0xiqfq","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"774a93aa6b8b52fe5832993a7ae55bfb3b633949","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-e61732-kg0xiqfq.tgz","fileCount":304,"integrity":"sha512-S7AhcmLzpBb+3lmKySfFbzNAEJijTCUDDIWiYIbagH7D/TKusuoOKlcDQVkNnsbshYQcIHaUpKxHqNY4QZQf4g==","signatures":[{"sig":"MEUCIQDVBRYZp09i+BxEZSMcITg7u1K/YdryKugYjdQYWo8G/AIgTdzlVYxk1WL5SXLGVTgxScH7ixJNxD6j8V5PMPBMVcM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffyVBCRA9TVsSAnZWagAAkdsP+wZFFDyFCCCrpS1gEIMJ\nYty2oRLXmHjTkBgrn+YECMEYqd8jwM9aYOlN6L/32wUPeYZVJuzj9M0kIoAo\nVKShFQw7RmBdsGYiodKLPSfE86O1oLNNl1xGWABRjlsJTTsXwGczwZFmKsEx\nRFhMIbTT1FK0um0tKdCG8ChIy3lrR8GFdBrxbClIQM3In4ZQHd2XcBtA+jYN\n+uf5F64dNHwPUi7+LxL+ZDcZFgfmfle3RGi8BdnwjbylAZfMjbbEyGIy6gob\ndrnH0Xfs5hdXoanit5CVx1OQ102lw5TOWT6NSy/qEuys773JYUbozfKVbN8R\n657scO+YPrF6CKxnkYvbPiCz6YSbYOZYuoLu7/5gUZkFwT+Jv+GKqf49gH/v\nVd4sTb29Tt6r806N7TI8ytNcVP7LswvWnnmhdTu9dVAYF1aBu0cR0R0ZlHNY\n9eNSn7acIsqUSVuHqCZk0Dy3ZHtjthGZYThG/choH5o57W23MLN8geeZccIv\nNwOYIjNrfxvp/MI2oEvE9sCW0uLWhKJ+y39Eose2MFjRChw06+CgxwHaDrL4\nQyqI2WfcNA9Y2a6wXsT3Rnwq6hOmjjydNZ1G0zLh6otG4SSoRseKT7Ed4BZW\n2H0fwStoB73AL/6iMOs14r/g/qW2glS/Z7wh6IB/vymvU2iGc33sQqw3Rwl6\n7eYK\r\n=+LgQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~process_instance_metadata"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-e61732-kg0xiqfq_1602168128649_0.7331877717727495","host":"s3://npm-registry-packages"}},"2.0.0-feature-b38d4e-kg0ydvex":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-b38d4e-kg0ydvex","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-b38d4e-kg0ydvex","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ac22862880fa1b85642e8f8ac76150ae0fedf86c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-b38d4e-kg0ydvex.tgz","fileCount":304,"integrity":"sha512-+Xx+KO1TGanSmveMkUZRdaIxS+kvzMdNXNMYdSMVUbj80msrBmA9JzjuqzreEMRmyveauduMHRY3vPbyEDwmiA==","signatures":[{"sig":"MEUCIQDP0ZJR27tbLCUW7m2xDgbtI+WaDfOdZKOa+m6qt0u3AwIgbEwJZjvdhHYeKwdVHZhZjV9nGDc+HmHUUW2DEPiOeLY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1498879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffyrpCRA9TVsSAnZWagAAEkwP/Rt7t9cdPxQ90q72VjFs\nXMV+sQOO768kW0EIxY07eZjSX/1PvAksVbhJc0cp09Htvo0fkZ3zXjmt4WiJ\neoQSM9LPD4mJjGufwkWQRpks+L2+hVPVOXXzcg5OMW09F6sgYzz/ckI0JpbC\ntGh4fJUh0AVlTxsxa97QiEZQSwrIBhta9KYxLfxEnxMxaHjHiFYV/RZ5svQe\nSozbVlNaOB6RHGpxFUT7/g+4s0G/ItDwndP8VwfVdr631t+Pn7ms9R9En/t5\n9R2o3ZYBH1m8bKvfBBJ0dLp0QnZ909BGRLThj8ITD9BvCsSHrIMM96/khrOf\nJjUFfxkmRWjXYUh2hYmQE644RqxKIE5DC2VpCEhbTfNW+7CPw+I/naSg9ZCD\nNIrGjZBwiKWDD2ZVd+9rkiPB1wxCTrUpoyVjJEOUfdrdL3pMc6nOyeqUxJr5\n8nisjEjYmHKT4eO2QtIVcKP1yR+EAPplXZ5txOBRitIqFEdJSJ6XqpFtZcee\n90QgjGI6cXBIeqFue92H81wk8E27g68AX9TqoYVcB8pkApbWZzJuDjxZ57oS\n74qNeDZkz42udMYlll6atjInU75QG93j5JqP7K628YnwmTF37lJXB6dM0Irb\nMNLzfs4XsAsnzh6LQ0/FCJcMEkKojLXcjCBmT47Z5ZExQ71E1/JwRmH54Wz4\nXbFu\r\n=xtTY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"8.3.0","clone":"2.1.2","moment":"2.27.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"7.3.0","mocha":"8.1.1","eslint":"6.8.0","should":"13.2.3","ts-mocha":"7.0.0","typescript":"3.9.7","@types/mocha":"8.0.1","reflect-metadata":"0.1.13","@types/bluebird-global":"3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-b38d4e-kg0ydvex_1602169577118_0.82588205707009","host":"s3://npm-registry-packages"}},"2.0.0-feature-38875b-kg0z8epo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-38875b-kg0z8epo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-38875b-kg0z8epo","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c9ee2d62daf867a876d5d26513bc3b2bc33ac95c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-38875b-kg0z8epo.tgz","fileCount":304,"integrity":"sha512-mypAzewjOLfdzKG18hq2sZM2LrETfgDWb01qYtZiIPip0dmAxzDzlWyagg7xWpNqieO51zhpBFILbhPeMws0Mg==","signatures":[{"sig":"MEQCIBgiLW913DY6XgRY9mekOUfqZBu4YdeGBtO9HU5C3eHJAiBIAVzz+zCmhlNjg/XhL7X6sfi7gMRTjNGS9OHDVTEk8g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524923,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffzB3CRA9TVsSAnZWagAAa5UP/2sR6WtNs2EF7DUPd7Sn\nErP3VErC9ub+Qt+zUDbqnfyM+g9igSoNd3NcHMSY3OurhHSPB9d3lT5knafR\nct+18aB3BChPT7lZkTh/LqzmcCgmiA5QGd3YoBndGf5g95wUo2odmUiyyYEu\nqSSza8lvZZB4xcKa1CRPBZe6B1nSzohcrAw/wtXNFlE2js1FKXucxB5FRcj2\nLMSqBtyKTEx4Qwpx1gm3ud55MO9CEy9PACyrk8SGBXmCPe6PLtm4RiF12DAn\nqR3NtAjYB1roT+wCUZwNHqdfAL8NJSBzyplUVHSd/AShx650+2VZsDt9wfJC\nuv58ph6pM4lbAJ8nLdyQen9e7gGPIz8SkMsqZMGLW0J01lxVeBw7vieZ6y1H\nil1P7ZVkKViM73z1OwmyJmVvnLlpGZM1AUalE4v1gE9NwGNxUkXRpPjDGvYm\n9atEME5gLWvsCFRU46zlQq0soneAPDn1ZJr0ynn++j0uC0iw5ypLoOLihoLd\n7RB3NMmsUPw9oi7wSIFu2mBA5PGQcGSobg4b1D3Bx6Ezn67J+shfo1GQDnhT\nIxdAVqne/Tm0m8s4ELZ1DvpZ9AoDZ6hwzXhvYjXFOJeUutorFdWSNPwzMrf8\nwY26csklLETXt7K4pBApuY7lIpgnlbQKrNkwYS546o9pSCQ8zYCOMSMHutu0\nOWYU\r\n=rKdn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-38875b-kg0z8epo_1602170999004_0.4649932697150798","host":"s3://npm-registry-packages"}},"2.0.0-alpha.6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.6","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1973d3a548443e2ba0d9e685357d0be93b3b3a07","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.6.tgz","fileCount":304,"integrity":"sha512-cwxh5M5IpFw+TfK9QtkrBmjOxzi8EW3JxgDy2orYwlhCy+wcmbnjjt6CrTQKYjInRRy3KmLyCM1TWvC2lRrwgg==","signatures":[{"sig":"MEQCIF/N7pqdvya5yWnXsMzMH8ei0NTfqDp0eVqYdZOyRCQhAiA+gYkgXdnRRdB8XeFVObrxXz6jqBBaCD9v7VsV94uy1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffzIOCRA9TVsSAnZWagAAy+oP/iql0ZMIBiKx9h9dw3db\n4KERhGMs0g1wpOFV/Sx3Y6zZFFadjvHLudCn57YbYUwKlLjtP7hys6UKtu4P\nYvMl4LYWqFQnjmPGzN3V/VVlw5D43XvXVP3h5jA5Jlgr73rGV1+ocOyJSO+O\naFkBUY/3Y3l/vkC2+3iwDz9tqQEEdg+/ST79TahiXbvlz+xa8bdUHpa2P1gS\nzKn5WDZdTW/UUfJTcn+AVh5k1cN6/l/MbbQmzAlbDeofcb8a25J/E41EFtRy\npotNBCyDxqtCQj1WN1lH8ikUq1Py0EqiTzHD6eemrZjoH2KPFtUdNPPW3c8e\n3es+K7Vsgki74bO1WXs7S+luKPEm9hMHBdrbJl5j+71OnBap07FLWH9Llsmp\nnn1nWQzqdSYtJ5/AmKjj6jAd845qBRHkVmO9JV2Z+OpgB9YFvzrRsN11E/Zv\nPWX6VklzTblD9cFR3I8mC6B8iW/Cg8HVb7S8a3xbJMWxt9ANyxlCXqGlCuup\ndYsYMnYkaphOGcOTWoKdc4LxQmLRyc/1sfHQliexcdEXNnsX2uR2LikL2lEm\n6Dl5DzYnuJq4h6nMRxBa5UR1lv3h563FKDr+/BCoRi907L8P6nZtC28RUvXh\nk1lXp6VghJIo8uxmG4L6oTugICNnsaNB5LOKmlTOSTHSTbvQ4R051Am2UwwA\nF3cx\r\n=XHou\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.6_1602171405893_0.310892313669751","host":"s3://npm-registry-packages"}},"2.0.0-alpha.7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.7","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c905e0177aa794d112ff645f6623e68aa214dd58","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.7.tgz","fileCount":304,"integrity":"sha512-dRWWmHFmwQbI12ZL/6EgDqejDAqpsM9JBKK2yLSPZYF22mH66kjEEofSa2ZV8i1n5liggYR4Hq8GqoUWt0WL1Q==","signatures":[{"sig":"MEQCIEHCjenRLTgppg8vdkVGg6r4vP6H1hOmEJm8I5v5dvNpAiB9CPXiAhKvapxH091dmb41fdyOTXMD8O8y0KvgBo7o5w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524940,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff0dwCRA9TVsSAnZWagAA7u8P/Ra4mH/Rne3Y5EPGKxdb\n3DNGpAEx0jhXbrLcxyozxpc0NNK+ZpcTV4ryxsakYMqOjP8d+HxkyG2seV+R\nbjrYFJtXLTKJot/lakMQbmt4iDyjF3mqO68VOAVIauFvK1EETaT3l3RMGY12\nfYfBRGnh7LEBdJbTZcgEpnk6m8TGHCkf3MJvQ9Ylygn8c6+Xi86/E6MpgUuT\nHhJkAmOCwqt2ZC5BjUBB303nCMaRWd8epwopN8ww6CmHPUi7LReE2L/jIoYL\nTGeuQqlz2zNTjhnpyXIaE8ZQ3QPJycJ2vYO4GGnnJJHMbYrqIttRr4sSUdUy\nKXFHVLPttYpG7WZVWzuDn4XNA3INZacbF/opN6+6iZ3tfzjqdsPuWaaTdRbX\nmIXAfIdo75vVWADV7Yyk3CwiTH2jVJqkgY1jHIfXXJMHwcxn7kG+IDAKa9N5\nE3AS8bbhlVErSaN2TYM5KXsdRXzHs/oVqItr1UhLLSxufZG2MxpQmCCRrjDo\nM4+kDB/M1fjqSJDrN5kGu+A82SGGAU2ydKWGH9469l6PNcI7iS5ci/MJaJs+\nyNXUBGb+rf/0W5zujZLaE1yzt5LFJBWwXbN2ySYDD2UTyMEhR92eSOwDNUaL\nbkm69W+Py2S6lUqAUoS/lVPUoIUk6kB7+6wvK0tnMQ54RjzlCFpbUMEGWEDH\nqANy\r\n=R/YP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.7_1602176879897_0.22143307522757083","host":"s3://npm-registry-packages"}},"2.0.0-alpha.8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.8","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fb3fb7877c0ce4bfae2394282f527770a9cf980e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.8.tgz","fileCount":304,"integrity":"sha512-ESqcBj4o7r0djU5k5K1l47Zq+j7IcwBxZm7QTa9rRdSsFy06Mn8MaXomDV0Hb6iyku5MV6FXKBmrgoer66raxg==","signatures":[{"sig":"MEYCIQCV8mSfvsj+zznH3zsFouhFqKVOwPBarrKYsgqZM6QKjgIhANa3MGYfMFCS2dLRwPMa32PEAq99M1ZTqp3YtEZ3zgJe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgBMrCRA9TVsSAnZWagAAIgcP+QEZAxPF6AO6BkVaq/zQ\nk5A6cMJO9LHRGRyzIdyuIeN4e08zBQqyOSts1UqtHWsLCFIYLdh2V8ocKH5J\n9oTGEXe8/jvTITyDCWvdAbdeS3G/1hkyWw2F6WQ8UZDfPE3R4roOhz1LsA3L\nVQxCAEF2HCvzmCk0ry60lUGdbAZLi1wcFTAqhTYWtOiZhxsD3dGDnUq4l8e3\n3AI6DxDjJh5jfHVg9KM5bqgpIRSS4kdWzkB+/HD8+aT1CSw7ZGWp9JzN9P/5\n+Oh2AbD42GF3ij3ZwVUAOqdTrcI64yGWTAxoYmUxZL3HCMac5SVv5ix7BOxJ\nu0GRkmF+a/Z2mNdxOf/gXxzBHK0Bf7CfMygS10+/TvX7Ons5CseE62PVqBBl\np3g4xlIw/S4f4qAawqgf7QflgovVNKMKBbi1DAswuKcDbYiXvJY0eJCvWMFO\nyKcmBQRfdKu2e6qSt7lKwFvHSLNCTxYGg9LaDq3ieLml/PO5zQt0f+xgP6sr\nJuuT8zR9T64eamtranFhmBoM+x5IctdIovUCw+6PhFz1eaQ+KRjgL1cwN9mu\nNNQoJigbjqnn67g0dtsahQYiw2jfW/JoR5rBtKaPU2vr0U4GTXhMA3wZANCo\nMiH2VZQSCm8RdbeffSvapIArOnpmUyWNWxVuYJmRiK/aYukcjkvCpfjfZNRl\nwqbj\r\n=1l33\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.8_1602229035165_0.7380752811683571","host":"s3://npm-registry-packages"}},"2.0.0-feature-9ee11d-kg1yp4bz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-9ee11d-kg1yp4bz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-9ee11d-kg1yp4bz","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c3cb256198b2dc39b0adb1fc38956bf5bc77ee2d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-9ee11d-kg1yp4bz.tgz","fileCount":304,"integrity":"sha512-tIYkHpcRNxIYX7AdD+Y18uj+uX0y28rNf+PJWSVPorkkw/fnvrnA68tl46NuQ5FgHNnEpEHt/WSA8MzKd7XGDA==","signatures":[{"sig":"MEYCIQDGVbQQldNG68qSSJ8LtxggW7GTYnQ5ggf6eGoZn618NAIhAMO96TFEDeRlpjjnEReCzF1IYD3SPWd0pNP6uhvwhiUD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgBkqCRA9TVsSAnZWagAA1UcP/2KCcHaoB9fI98+1aRE3\noQgXKqiueh0YPpMxOrUiiO1Xrsva0W3Tw56SjQdQiFVDfmvorbKCvfkhah2s\nr9YSDeq3sXrtrpwpZx66KRT5f45qisuY6p31EAGOgTsWp+e0e23kL8XJZne4\n2aeClUJ3JSuTwSD9OqNKi2Y5yqy3kJ3AeqCwvPMPTmyaR4qxTQgM8dXR5N4p\nV9XZrLXOPS+dRPF6nwiDk/nOh+2BrkDM5kwhR36ZP7mZVOFZ9tNDYVVQ4SkA\nGgeaMA4jB1HWH88fdLcUWv7xLD+v+liq5uiBxfbG+i+hyzpWBqJEjJjFYDD4\nxebpZkjS3E3LMTGtwjh4VDTnb9NCWt843A0KeozgMmXUPYLOFAPGi+hd6nVo\nqVthyeFhuAcBnG1U1IgMrMiO6Tu63oXgGYz9FN/jaILNIkK1FOUm7qdDD4gW\n5XYVt5+0rRp3MwFUYiSnLnvXSupq/FHHmvcxSh//JyvFBvSZDiqgX1Rarh8F\n3uNsEGE/aI4pMXFDoFKh27Ht+r8gz2oPGGoU2kwQsJ9vVU/JwQJfMt3InlGs\nGGX5s/Lat4OaQXoxSlu5YTZn26q4/BvOt8Hc7Fmo8OBHIIjXOu0bCfhjSrej\nzjOPS2uhlkSLViq0yBU64n2CgNT/woqFZHhUKT8RRujeHWFUSMBO9XlPHTJ2\nYYaA\r\n=q/pY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-9ee11d-kg1yp4bz_1602230570314_0.613974232257114","host":"s3://npm-registry-packages"}},"2.0.0-feature-d4c18e-kg1yv637":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-d4c18e-kg1yv637","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-d4c18e-kg1yv637","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"42276c2c0d1118d4c534cea84198a0ca19a755a3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-d4c18e-kg1yv637.tgz","fileCount":304,"integrity":"sha512-HqcRw5Pgjh62T37G8YRXcGofa5SlwhzxxMIHc+Zlw5CrU2oQ3NHCu7xJSsYM/Gl79VbzlFXX3WdoQiz39o1jJg==","signatures":[{"sig":"MEQCIGKnOqwOJ+nvMqD1L7fL3wztRp+HV3Sd1i8zihHO33oTAiBc1v5mDlfLE7VMH6OZTh1uJpPCp/pW2wpFvBAaj5ByoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgBpDCRA9TVsSAnZWagAA1NAP/jjvU9St7MsyYtxKIO4f\nVMBODxayrtiWlMioAqBOlCe3SNlO1WEBGPMpihkQM1JDUgLHP4ceO0ZZIfRc\nHprETBhpReuaZfVhMs0zCphPsxSErbkTm+GLlIenxF6ySNpoc+ytxzk7To2X\nYLI7MC6ForE4IveE8W2MZQyH6gpgIrDyGB1Xmh3Y6Fcl837sI142yiHjQ38U\n4eG6IImOAIdrizfyKnIZbG0DtqND2th/iI/d2ZWLqB77hdh8SP/LDUORCE5F\nYjRHs7WQypMphZi+WAPR3CZHR2lpwZnW40u3osuCBRSdLYREX22E4oDGPvql\nh9oluZXoJ6C6BRdo8vwJPt24xTH2EKMOqSoD11e/Bltk0sXbOnw6+1TWoHj4\nYs9/cgo/9t8Po72P17Nz/JqY47R8i351QzyrK9a0Vo7uNiQaKV6wrsm4HOpL\nGOE7UCkUDf+vY8Yeyp5sQEbMxdCWDSUD5qSR6RhpICCKnhh7Y06QLXlKzsv0\nT8zDsd23zBVoVGZ7UwjIVvrxyFRf7FtIcx61ltYgUmGCJtv3hvKaFMfugXh8\n9oWk3u8HQeIR0ndQseVVT0Qoqp/lQDxtgH05MshPu3w4ZJslwbjbIaN21czL\n7gIrjtsJtfANDEZxiuFDECeuVfWf5BcVj60cIeo3usyqpaxOQXbwAMvgKBgp\nFRyK\r\n=9zsC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-d4c18e-kg1yv637_1602230850533_0.9524451847998214","host":"s3://npm-registry-packages"}},"2.0.0-feature-a1941a-kg1z2gu9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-a1941a-kg1z2gu9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-a1941a-kg1z2gu9","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ee4145bde7e150d76c9863380bffe7d8e152dc3c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-a1941a-kg1z2gu9.tgz","fileCount":304,"integrity":"sha512-IOjSta/N61B8HQuJiVDJplibBAMh9wtwuaGu+s6jrlZl4vWTYoidZpBCfy7HIg4mnMexFhTHmzya3CI51fBv6A==","signatures":[{"sig":"MEQCIC7pT1mxkEvCNXsuZm3TNQ806imJN+kHf5RvXwct7eeWAiBXDv9gq3RrqwbCj7Kzo8/rr2dxRBnAHzHL51HgX0pQ8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgBuYCRA9TVsSAnZWagAA5yEP/RsAgzflz2MTs1eEiCNc\nwV1QlhfohdLsAv7yuWAfqn/SDapoYpoPtKBUNHKX+IPy8rAhoG0LkQAyXNww\nHdnu9IOcWSMA5H5gK78bgUrJKz60cy0vFH5CFu28RhL52E4NMDdrgl2xAXVp\n4204ZxlLSdKQJdw5ZWalV9eB8rTuBXgA9qRUedS3Xgc72MEnUAm6oujVI6KF\nB8QRNigCHW2/SG0FEeN8OD/e2zBDj3Vcr9FLkJ6IZIrpnXk3jweWQBhGHWoE\nchGS1RvBkCSHWABBY19vzKnDdrCOH8A2wSvudcW2RgpgaUwVXJOV+KYuBP45\nZyxinoG6kT/2QetxaG61qXfjgvElfDy1V0jcWrVOjtgiYf6+AWyMQlEoo4f7\n3skZrmeSGM09wlNwh3dA26+mXeOEWmb4K+ChOaHYVcoAL6Q3yoAwiH8gXH/R\neIFCF+RGD0nOqeJeUKjzs1q4KjPv+B4jXNQxI21jYeQNlA86WCL+m7sB2Dnt\ns4fAVj03p/1nxPJUFVEv8tuGzO+xo+0SBJH5LnZfTITUT38NZOt/OSnXeYky\nUkyhmjzSb4CGcTwNUX74yVsSAUDY3Zuf3c0RPssKDq1eTyIJkehsSyTmv0RE\nAgsOEDF9EeBk1B97iwb7xCzaMYmpfr2mVH3HLBYo3JixpCEWYK6v2xeCUHKd\nHEou\r\n=P7mp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-a1941a-kg1z2gu9_1602231191965_0.4482412751557505","host":"s3://npm-registry-packages"}},"2.0.0-alpha.9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.9","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b0647848585bd497a6ba2b2a97fa6a7f2337bb20","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.9.tgz","fileCount":304,"integrity":"sha512-PF1OHViTxDdSqGZbCaj3z4kkHZQCBpPuxYaUlJIJKREyhkOrOGNVeUttXylZH0HnyzEtnQYjsyrr4d3PhTjV9w==","signatures":[{"sig":"MEQCIBKIeb2dCqbNCDYgu73ReOrVS8GUTxxh1skiCK0nFu9lAiBlfH010BkU2POCC4EYK/pGvfb1/hfdfcr0mgAaOLY2XQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgB1/CRA9TVsSAnZWagAAKscQAIVSPPXSFcgu2yMoYeMp\n4RxGfLrfCu0fATJmJIJjqGsRxRbyDHllxMtC3GEIT73aF8Ah1MaANiu/Q5bb\n87WEgiqcpk7ZrkkUezCHaOxT5l7HtTKIhtCo0vexRqjJx/CSWraMVUYT5u2+\nANlzL73s+F+gD5VRWlq8RHSXZ0HfbKMYgNJObaH/ez3N0OfXa7F+IvYSENGM\nZPZEKf5J2j/SF0iZJM2A4VKQDtj5H/inJTNEfhe+iiFmJrgLmgBYmJaTP2Qa\nlZJO0WKH1lBmyMp7G/2gmMdR8FEw6QHXxsrW38y67X+lLNCwyxzbVVY4rJ/U\nb/0MmfkCQs/sMcEdoWYm1eCcWnsiffMup2kaOhyRKyxQuqUi4+6bMOf/oRXA\nNJwxQSVb8O5bpE3EBEAG/Iz+A9bkZmdjnBuRnJvyVtK5k6JMWoiy4fEg5Gd6\nV3Sm4nrZdpdhba5FpPwGAsvD/vWHbzMRkzHLffl8vC25j97LXfWjONJ3WcDU\nBMqATYiISyFZH6GdGRxJuiWXHB6LIodzvRTZhTWl79bW86mVrbAXlQGugPAF\n6KaPw/xPoS9UZVx/eA0UbV++n1/YDpipllHPVmkkwJPYAG7CUDT+cCxGaNmV\nPc4jF8MMqazQOa4Xfo8Ll/qPwSwjHxXS8i9X+DS3iJn0hmvAeCjuidWkyY0o\newg2\r\n=CDqf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.9_1602231679250_0.14499015740939347","host":"s3://npm-registry-packages"}},"2.0.0-feature-273e61-kg238qt3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-273e61-kg238qt3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-273e61-kg238qt3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f488db2cd22f98eb92b9ed8ee7ede36386fc658e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-273e61-kg238qt3.tgz","fileCount":304,"integrity":"sha512-RKQCs05oRy5kON4fUk2Z99M5/rUSpe9dkgXdD1qPISK93Sx3CLJqWBVmmML7me0yENrt77jmCtiB94H+D16heA==","signatures":[{"sig":"MEUCIQDyzJy5Ksh+K1FK89bw0kZmFdc6TiEFbL+UB/9syEyxZAIgGqREFPXBEVrc0Xh0uRSbTvEJQx1oCyjaXY2NFnzk+e0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517837,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgDb5CRA9TVsSAnZWagAAbUoP/jPSB2jvjd+eG5a9AzN+\nYSseFzp+W8cY89/jVO6wjWySF0LylO+J9NHKY1huQQSucy8A0S66TpnQt8mX\nMC1847TM4pwX5T9Gt/tpl3TAN2907iqhfCxW63NypRkob6WAX4JsTcvLhLpt\nYdt/4OmMIW6GPxULQJ58C6Xg8tEu60lqeMJHOOBY3fKKFLrElXFX8y/Za2Hv\nwwkZ15KG9nSG5HFTlEH5Im1atZ9ReLcLP+ifknye/ToRFdp6rO3GaYwBTP9y\nWYD+SSJn7YQJY069ZLDl+35LygiUlsmJ+Zk3bcUa2U41XZ7b/3LJAcNzIB/c\npXwzj6Okz9dWmu5RzqHul/jLtk4glXgNgkyoU56rClHpzhZKibK4Tslr0hzT\nuwPsjhWEIb2VuKAZ+Sm6hG1oy2n5YUSy1dhwgcsJPpjvYKEYrSqTHo7xhOo4\nq9m4EIx7PuLR9+19Ivfdo0F8xOXgGXZ5sCRs0GkO/T/cHhwejF8EY9BnAXpf\nuB3x5CIcbA9ZK4/4PJpZPUQgv5pzOeguA9rIuqWNDG5p5kdDlcDaMuWPCPp3\n+SN4OE+3jUW0kWj/l9S7GhS/Rmns5tdvajPmHeJ8BT0dotgdFqed+5slPAPm\nnYbZsTUUHZnZw7o6BifqgZ2KFb2SejCBepLkAVwBE0nuBL3pATb0KCyRHXBi\nZ2UA\r\n=PM6E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"feature~remove_event_aggregator_from_ioc","@atlas-engine/core_domain.contracts":"feature~remove_event_aggregator_from_ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-273e61-kg238qt3_1602238201139_0.10496797727271412","host":"s3://npm-registry-packages"}},"2.0.0-feature-89e09f-kg29oydy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-89e09f-kg29oydy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-89e09f-kg29oydy","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"653b5d46b2c58bfd92a05c4e55a121213579809b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-89e09f-kg29oydy.tgz","fileCount":304,"integrity":"sha512-6oQz+VWxD3tk/TMqL97yuVCnGru06RD0r5hoVmE2gkUOLiTEFq9hAMvZnqp3SHWtbaXtu8Ettnjsd1ojpdLiKQ==","signatures":[{"sig":"MEQCIDraa89CA4tJBqCC9+u0xSvbcFBV2xpb6ZbEkAb6JuSUAiBc1kQgS+xQ+cRQF1UyPGPPV+NFSCVIONuLw84VBBNh7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgGFICRA9TVsSAnZWagAARCYP/2qbCWl9xYi6U8GTIkAm\nJW26G+jW0v0vlA3P4YaSs2ZfySA36nh+zLQufvt7FwVpQpEMSJRzWRTPhAve\n40TF3ixjXigJG9yx8ywsPsX2Y9wwflBC9OCQLeLtRzP0UcpUkiMFnSjfFlBq\ncBaYAnbzhlO6XDGLw6nEaNecZ84taTYSDnxI9QvOHMy8/lS1EPYT41u6ygs8\nicJ3aANV2Gi71tWH/wiF8usBfs+jU1VptkKMHjBTzWKoesLcHzs3EDFBUMs3\noD2FyL/NVQRa7+Rr2yK7Yi977wudiz+nQ9vngcNzOgHRxQAwAUrS5085P9Kf\n0qlqasoZw+MKpFQVu+4L6xY+099LW46k8Lmds3tHlyyw8sQ0KsRHnYFnIQ6+\npYawQb//BsQMkuhSMg9IH7gN0HRjd2jkyDMHmfXQz2erRL/y95a2jG1bxOBF\nTsjwle9P4uNHCSGkJ2i4neOLV5ZXMlEnje5caXxRwztEeOpfCVcbIz1YHT6o\nBUAiEV0MI7ENkilwkcl6CD+VPOYTBTXgFdqk2mhjZV/3uUMQ/vcRS5e95pVZ\nvQdjF0BHSO6lWXp81NNgoLIUgqf6gwQVltBqv1FN6xRvY2kZeBZNBdS3l6io\nd6SRBaqYLeZP95muCvzjdNU1FlbNmAWSAJZVAIbFafUGtAkrMSSqT+KU2JYw\nNqDM\r\n=xQ3C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"^1.2.0","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-89e09f-kg29oydy_1602249031449_0.9779677870000083","host":"s3://npm-registry-packages"}},"2.0.0-feature-187706-kg2bg6r6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-187706-kg2bg6r6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-187706-kg2bg6r6","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"454355b7129a752e39c179f1fd4626516147c9a5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-187706-kg2bg6r6.tgz","fileCount":304,"integrity":"sha512-QakBFyWMFY6odojl5q1PPwswC0WYvUjt0/hxTXaV3snI+WCeH/76o4B3V9TGC2zIsrYvToMDPPJ5tRBjZLB6BQ==","signatures":[{"sig":"MEUCIByoPESmWi78asLtuyHn2z4agYCNhqQ/jxDgROyQ/K+JAiEA+8G1t4aFpwy8uNuZm7DZnc+TYa7j3kZKW+pP2K1O+hc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgGzQCRA9TVsSAnZWagAAeFMP/jDWYUxNM5EP8nx/GxYZ\nK1lEY5BDH+7DmIJsBYNDGBJdrLx/37rlKKUgijYV76biFiWilG9ZNZf9mfYH\naMQL5F/2jSdETakpuwILnQFNXVzN8WiadW40Ahq4LiQhziEsQHPZTeJi6yVX\nrYLCzCgeJFhmP8Cj3GqKNPT+XGHHBUbN5w6szuB2PRJYSnXyQ63C/9x+WhzM\nRZBwdFIV0FGLc6sNsx9Up/V3nk+pLKvYNhXBQMdMYxu8sk3eoYWrprMvuaTu\no3alfdZSABHWvAU3FyO8ACgyAly3zX3FUOr9HlodEJLno7XTJ2TcB8Qa+SaJ\nW2cxHCYL4YPS5CsF6q49yhkU2sGUCEm8tcX1XskGiOxlODlCVLz6IxivsK3h\nlHT2d8PiyRLi4vFfmrCGXhf74aS7ZuGlV6OkZGUWTnC6ry3iamPIQKv3WWbw\nNskoSJ5zI6am+eNJLcTqTi2wHga8rjkY3fLKCpRnNrFy1kcJCMVFMWQhT6vR\nvYglasmdseUD+I9N13/ZJ9GuuGH4bNy2PpnhVXlqInOXkTsMi7axuArM9OBx\nsUP181Qg5KnJjCzX7axZFv1Qx0htdgP+JI+JcIY9feppD4mcwWi2okpvx0Rn\ni4Lwax48v57BR+bT1pXivN1BB9sYSEnpKa7EHw0eQKZia8EENlLM7S9ch1OV\n0IAn\r\n=+eG9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-187706-kg2bg6r6_1602251983705_0.031147253818889276","host":"s3://npm-registry-packages"}},"2.0.0-alpha.10":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.10","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.10","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"10b1197f18d28e896bf2d27a6007cf185b726ed2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.10.tgz","fileCount":304,"integrity":"sha512-VRi7XxNLwQGjSEIJRMgGFHCjCUO4v1IL9UHRZhVQ7SlCu4uY3RADB+tGh40Ehzk4iuDg7NQ+ykueJnXoIcVlIA==","signatures":[{"sig":"MEYCIQCEPXxa20qyg1WRN7YmaYq1R5KMqNjC6Fe65d0nxESqAQIhANPbsrYo3cKbi0umZWjwz+E0pRju8ALWiTbhK+Sa8N5G","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgG7KCRA9TVsSAnZWagAAJ5cP/3RXER8JAWlhdefJ8Mj4\n8Px+qQxmE5d2a6clHHnsOtWAfbjt64pfUhD0mOvGjgYfyOo3k6F+IR7gQ3+g\n/D9SV+282zzQsVDba9oId2zh48C3eTKrTWM2I+5LdGNZYN4GjDmjw2snZnbZ\n/T3aBSWUMDEsSjhjAEtAZ9OhlpaQzHroboghDseO625iaPpKgNv7hCv7xDUA\nkEX9zE2Ez2iJ2dTYFMUpmr8ba9J5de5y4PTZuJGUcyzYN8arGpEb1OIRe+Xw\nOPgMZpb/9I41pBOe9TKb9WyE2KV8fas9WJyPLJ4MWuyE6B18a238fBegtxet\n06zQSRJClJknJxClj4jTRyCafuOqAZGSwEfL1KCkSrSHOa89oexezZ7V+hz1\n+fA3WQjMBsO9mWnq03CS+8XkURXcpQIOHW19Ma+Jd/OeXStME+0nAQUtF3ay\n7EBB36GQcN7IxfwqGDaxsz3eoECSqFDr8evrElHNQPciXpvLcQDKfviTFbSi\n3x+UOiVK8Y6XxjGtxvpXsUwLdOdlq6CkFq7Nw3CNuoZeevgUtu6yyg+T249T\nxV0IJv/Q/f7VKTy4/rk47xmPSYefQZFWxYsq5qtMfZJVshYrXz6HF7X/0FEG\nmNgC+R76s63Fh59xxow77Ueb56ZkaSFjRvWhCYoS4OZ67gswQF0VQEtpqMdp\n7GWC\r\n=fOE5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.10_1602252489235_0.8133894851030317","host":"s3://npm-registry-packages"}},"2.0.0-alpha.11":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.11","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.11","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9ed201db99e2427b6ca5f496ce1e367f9d33c119","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.11.tgz","fileCount":304,"integrity":"sha512-KNJExMlIwWQ5AX/gLmWJPsB0sqdNBKcGaDuVdYC0cHGtpN2TD0Zda7fzafUwtbmq2YTGYYqWxqNGxSgRvTOYGg==","signatures":[{"sig":"MEQCICdXqg7iK/LW9caM3q/cuITXOecNmX2ZfFkWskQ5MkaBAiA3J1WQVLuXxtJa8dSuElGquw0kCnM+lb4Pw/GFV9Umgw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhA3jCRA9TVsSAnZWagAANk4P/06OOUzD1CSCcIWKbckK\n9HvaUp6lfPBrF+62nMCNDcOUR3Omk7UE2SMpQmvRRqp8EeDaowb5ILiI2DS1\nuEhMiKTutxPJxf0/AR3rzzP6kjAUIaujnkwlj1PaHUObBqzNOk5g2lLxXpl7\n84DgaWkJcuTPerjqhBLyIjEMXoevHY1kIsxDOVxKgX4VkDoktRjSo6w3w/7O\nOeQylEpHNPRicmUSIXDmtK/5UzXFpjckO2TMmG5aFcuCn7wLHS/XFHgV1vwS\n/W4n5n5/BoEv7+oKwDvyL6LTKa7IpOfsUicBZR7EB7cxMcMRhY1abpBYRV8Q\nsNZW/XsDs6YcqVOGai6j90giiuu9ADURFTTqaPuPWuSpNg8CpmANYeSoRh+a\nGMXcoIOllM3G+vr49E+/2WsNvPIWDUgoSno7MotLP99neyax2xQtJMs1m8CL\nQngZ4uN5++5hKPmJfuSGvvd5YsVKvgjGCGSy/vfaMKQEYI5WRuLgpnhNNDWH\nINqBG+1jqR4yTkVNtiJjbDQEkpu6BCHPN/3vIr3jAyM8VoyGlQMQ+ywzeqIU\nnTaKSrgD9BP9ZqKOVGe7LGjlK+83ZNyiQGvaWy/y0wxnNc1lquC67AFPdrB0\nAx2T7R5Fukd+KG4o3phoifYL8figXOLOcUuIRX2uFIyq/HuN5lxqyiUPq2gU\nMM/l\r\n=xMDS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.11_1602489826600_0.28399623130228346","host":"s3://npm-registry-packages"}},"2.0.0-feature-5aa7c4-kg6sxi5a":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-5aa7c4-kg6sxi5a","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-5aa7c4-kg6sxi5a","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"63f88849b5a592e7089eb593d9a8c89796d31dce","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-5aa7c4-kg6sxi5a.tgz","fileCount":304,"integrity":"sha512-3hKW7bZb1Pu65OLlA8ctJWbeWWVBFH+w9P4OYkf89RSKthJqWHGJYiLzF7ag+W/IUTMk+SVZMH5Rw4flqDIbwg==","signatures":[{"sig":"MEUCIQDyDg7clEcYLjbuZ+qfJTqggzg2Sq1lScajsGlYMCHPWQIgSKqN/o9nRVDnwdZAUvFnmNrdtxsy/tIvkeWZPdwyHbo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhJBNCRA9TVsSAnZWagAA63sQAJKfbLpO4lJWpabhefSs\nI5lpJrm3BtEvD+YNkeie1Wx/aOsU+AuwYeFYQNcVLCYFR1tzD6dEP0STMynT\n3uXiM7HNR8jqqJVj59NOL/8NkiRZj1+wspb3T2zYQWSmUp64hMHB7q1FAqal\n0MCJD9yfzGsdyAmZiLlPqW87EZTTnz194OK7MujzJ1X+ucOUwFGj+E0hs4vk\naDSmnyEEJJGoV99kv3I7JQnsjKZYVE3q6ZzArJ8dJJUI+IQcFl3nYmW2iEhd\nKO1FXWOvRmVh7Tr/euB7gkss+vrTlBeBjRIYSu2s9YG/AxEJKNj0yE93yGU/\n/M5sLK586iTWyaCNZYV6Tc+gNpBQ5PiqcfROiP6/QV7UHNZLXb7xgTKwnRWL\nQyk92UGSZjdiTp+STHCrczie45lEzCH1t4CjaoRo9ionkEouuGIZFYHlHN+9\niRjHdCWB8fDpcte8s1+wmCvNXdfBRFU01ho7H5SAU5b/jiV/hS+AFS1qwCWz\nyPv7gE4aGwEXk0CVLVcNN29KokyG77SlqHVkyoHh6D2mjlm1nF0PHaDsSwEZ\nSO3q4I3KFoHLAjXQsWGD6XI/fm9XtsTqw1xS7rUoCK4CiQvoso58GtE0iIuy\npPo+2N4f7ukhWXkyriyzpo3lr3d8GQdYOPUPY31nRGv68S0B6AZxonzMa2U+\nleXr\r\n=cZSX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-5aa7c4-kg6sxi5a_1602523213173_0.4350409685135448","host":"s3://npm-registry-packages"}},"2.0.0-feature-dc97e7-kg7phogy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-dc97e7-kg7phogy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-dc97e7-kg7phogy","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b988135a972b47af9f513799a9057c4e7ea71267","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-dc97e7-kg7phogy.tgz","fileCount":304,"integrity":"sha512-qCiOkfviWL1LRZSsw2LO46VN8uQ7rn7HiBLLw8zQki897mAd4hLLmji6V1aa6GXWXXxpSGy55BEEAYHUMeievQ==","signatures":[{"sig":"MEYCIQDvCB/gNI0MZjrNU6vCvyVy3lktQfbhoIH7A6ozO4jlzQIhALFEPHnCfFqkFAXzJqLa9DIJBBngWqHoA7JEahg/fnIt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhWXtCRA9TVsSAnZWagAAxGwQAJfaDHBJNK+V6n84mx6D\nv54KSi/hoSQ6FJXu4RxK2aQpJ9eE2iRM0XCWVTN/LZCFamq2Ts04LbKCv+Ya\nV8JOhXPWCufv7IhV/Vy52y7gYBQpDaAcnBcVoljP+2oe65R8sxqOgaKplvsF\nhfChIEMyarrfoeZlrFrjUetlccGjgo2YzZNF6KX4AMmyHGO/RUs11U79sPeZ\nEZXQA1+SoBJ6NhQjPch6+BEQ2d3UxHOPk32FCq/58i7FalK0G0ACLLxA4V+d\nZA3/gfsDP4yTUYN7+Iq9nQtZlFuMPGMCYvxnRIer/eVKKNf0QXt7Evnvz9xu\nLmOod8jOrafti1Msx6msHmcdu/2P4XProodfy/l0ZQJ3mMphx4O5n0n4qAFs\n79Qg7cH7MWALRnjkFxrRl0QcBczl1TBDdro7RSA4MtrPHrMaz3HsKl3HBsKs\nSQYYheoXECiU+qCye6yxDavwLb4vaSefDtj4SME5liUkF9jQwzzQH0Dteby8\nVPbpFRrZ7xgHG/ttbAf3U73+wm8p5G9XfVCpNSF4vjAuPijXfJ8JofMCSZqx\nf122GEplSjwQw8tW55Y7BSGUfQQTJk0oS9jzdY1RzInJXJdBGPbUrPwbpQQg\ntfN2SNc/fOGrsSTcjk6bAWbXxwGJG1qprFlAJvVDGl3HJy3/xV50QJZs1l2S\nyuLI\r\n=GUvX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-dc97e7-kg7phogy_1602577901057_0.749253957235525","host":"s3://npm-registry-packages"}},"2.0.0-feature-ffba49-kg8fzi9a":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-ffba49-kg8fzi9a","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-ffba49-kg8fzi9a","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9e6d0b4d7e695c342747ff72d23dd38a20b1e475","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-ffba49-kg8fzi9a.tgz","fileCount":304,"integrity":"sha512-7erwS1ZpDkAcVX8UfDd4cmh+ihSMyhICacPx1Hhcb295gYOstckI/AbKqhsbn2BH53HZs+6IcEQNPEWMCfbSmQ==","signatures":[{"sig":"MEQCICoRzE1p/dO6W5kIn+5g+8ihqrIOvgMioxxAMp0hHcWFAiBCPvN6b8tlOHC51BOFQ/sU1PUk47R/b9yiNF4Mc2caEA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhhPCCRA9TVsSAnZWagAA89sP/jYW5In6SkLocYwUkO3E\nGZGUGVIpkygqaZU8tgEqNFY5IIcIk7GKczACXX0prdFE1Hxpy4hUzyzTtW0l\nGt7hGlac1ukuVj0lC8amK79hRQmOZ4QJ3Xpf4eiKEsxQCCPv0EDhg+EBhplL\nLEvPArHgGoVriFbz8ZYcJXhnyM8iPngjfVgO9/j5hcYl6+zgwWdW47DSzTcN\nAEaUZYPvvNvoLYxSDjqwFNDME7bBfAAtIl1psauclMF1lRu6lAUlGeSxoJAt\ntpJGBtHNGN4QQSG/9+dRwE3W7G4+HmSQLYKOkeLtlpaRHQPk0JQXIz3oOB3Z\nJ69hY6HfeidDbrB6LiYuNxaIclF24NpZVjuwVwepW/2IMafWO7voj8FY3YYz\n8qymKBNCp1iZ7yU1hrwlJ31LFXUKEoPk4vsjEHdke7lfbXU0jo2hU5yVhXuI\n8ianAQ/kLRALCFEDlep7NeJfsbmpSDhMHDKNB3t9LCUJxTg3CKz/SLfXmzLj\nylLadb7462MLyA1/ZvZUWsl3hCSFzUbEdl7Xx9uLVSWE5umtnsDjLFLVmIWp\nki2p6NiULS67B9B5y+YbYAO63Za5jVrdgIFtP284XMXcK0PTK0hUlUxRBZwc\nRTm0FnGTtA1gojdvXXZgCk2ZruSTrrSuKCZ/kCXKSljsV7kbmByDZJMDJmkg\nvd3b\r\n=ulL5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.6","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-ffba49-kg8fzi9a_1602622402029_0.7835176699069957","host":"s3://npm-registry-packages"}},"2.0.0-feature-b9242c-kg93nxuk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-b9242c-kg93nxuk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-b9242c-kg93nxuk","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b847d1ddae0653f0091baa923b3b2cc97186ce8f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-b9242c-kg93nxuk.tgz","fileCount":304,"integrity":"sha512-sL6E8L52kIxiKHfXI7f34tFD0FvAz8kUGzCrhZZoRJ9sW1qjmzUS9Ci4I84PCfoh/dzJMvRd2HE4lGNqBMObcQ==","signatures":[{"sig":"MEUCIHpbrbG5iCoBGjlTPGwxE1RHnUW1Mm+HcvUxX567wYUnAiEA3TCIAVpCUswYBfYjVTgbjIuCBg1Rv6FpTS5H8yfBac4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhq8eCRA9TVsSAnZWagAAQmMP/3Dkuah3jBt8/vel0WPz\nTQmhNPug/l/SOrPg6O5NGnBf5NJZTZzeth8N2qDJfjG0TqihiZ/aevqMxxjz\nzFDIgi7yT+YRo+9G84xEudwKqWQqzcNq6qQE0+35yB2jaq18MyiIbbbnnztc\n9c6HlcKpIZSEFOsvTd0S7W47CjHdhI3MKlGT0PzdnwQtRlxOHBb4oEIW/bib\n8d5fFaVitSbk1E2Bu8QI0a58uoDrxcrSdpZPZgscY4p5VWfzg+cf765uEga5\n45L/xe0JSapnSRE1kl4+0/bhSi5gvSNQJP3Xkt4fhuptRflZHIB1K0VopDdr\nenciOXEc2rUY58c3yQ10KzwWT7UcPEyqHsYZh1MnxF2nJbm30fmDU9vpEuMY\ns8DWjX+0yqkmx46EYdW5z1kfxVeGs5WNY3xJrsYjfn6EtYziQRhXQw6wlzGO\nBqNKwEW6FvFJVLvMZD0GFau9aQnVmz3euODpgXLI8uo4QcIG/VtSZm6BigPy\n6DFbsEwbriVgbJqbnX2HNWfO1hdtAImmTVQqehtTc6gRDDrxIGAOwX6HenJi\nJ8ygKdjuBUqRMUddUQGA3w1v8j/vMfenopHX507vURk1ds/QhqgYMAy3jimu\nOdu9C2bGcYnRCYXOv8c5WVhgaEsj+qakd0uvBXiCsAVOg4JurgyhpBGq8WVN\nKCHS\r\n=CHY5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-b9242c-kg93nxuk_1602662173379_0.6954454894567443","host":"s3://npm-registry-packages"}},"2.0.0-alpha.12":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.12","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.12","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8e31f3a09b6397df31e43243d51333fe77dcd2d8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.12.tgz","fileCount":304,"integrity":"sha512-QRxPcplOOOLwV3xxjV2z9/S5ogcRzkTiop4LmXnF0w+sHn9rVVD1F7UWUtKTYWAcdJCVHxbD9ZV2oqTLCsJ/8Q==","signatures":[{"sig":"MEQCICmI2aFMZScxD1B4fLP//42+SW3/+3Gh6DxoMEd2D6QHAiBIVOePzpt0jPzfAnRESHoqU61Jm0wk+J2aYPF11FWHrw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhrEUCRA9TVsSAnZWagAAZuwP/2jdkvEB+sRBXypCRtyC\nB4AHp/qajcWTelhUqgtcSEesFT/pc5vkZMOc/S4l0oCyuLMVgqPbbNJyr2QB\nMuivveAMif0B6kf40yXZ9wZqg8bZ9WZlC1bujGejIldWhtHQF119QJIvY8/Q\nlkKSAs/v48+nvkq3Z/GtEkQo63fyBb6ISc7HInV28+VNuRXN+jrOVMl5GXPT\nN/OwXbRIRpZdO6sHohloV/+QLyGGLhqOQBlC1QmK7A2dietPK86fMNQQ+vqN\npTA3Xqsg4hzJdkHzGdpSAXWIRepvsSZtw0/OY7eyCaNWeElJvrwikADrxjeW\ninos76tEo3aGcwjMtt+Yw9p3JTH1CuKrUUJ+7IYWqW0YYvCppyQNy8+i8Rss\nprdA6GfKPxof1ZOT3D+A1Fu+0zTVETQdCwe3hnOujUYaAL5v+aNm7Ve28l95\nW7UfzsHwHBJEXupQDZgedt2v5GsqGWCtguAOxebjirul4vXuWJT8gzeT/LLN\nuQiqU+Cco25nWEInr3YMGyfNP2jsoSR9Idn7ms9FYe8St1rGFaradzmWQUcO\nOR5R3Md1d2pZT5n/A/3RLyp2P+eCWnmKmC8o66dje6aQvKxsYemozHDaf1Ql\nxyWeaw5qPN79SsVIECTR+eMbtDAqOeoibPdq4BRCOaQEFdsqSWdj9xqqbvyF\np+Cq\r\n=6GrU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-alpha.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.12_1602662676032_0.9684642352730444","host":"s3://npm-registry-packages"}},"2.0.0-beta.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-beta.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-beta.2","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c51411244da72046681807844bd3a4eef11271d2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-beta.2.tgz","fileCount":304,"integrity":"sha512-zza30+/Namx5g/kWmv3zw8TKnqf5xESYO7/Ha0sBh6TsWqEOJWGJgug3Y04DrGXo1HJxkZvz0yyJoEcS844jpg==","signatures":[{"sig":"MEQCIB0Pvid04W2fS3bDHHwMJNinfWB+/EMpfhioim+FvajWAiBp7M3lYnFgZUwxXPAL7GkTg9tbewy485K0gtnqd545kw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhuBjCRA9TVsSAnZWagAAZp8QAJvmW/QY5RgfXdYQZWjs\nsbw956Ct/kXX8Zr3X87KGuoWX9qCyECBWrIRam8501iNAUGsX7OTkePKoxwi\nViLIfeqjpFWvFnFSQwdnE1TdORdQ3ncd1QLGo6eM9AGfX7tLHzBLiTeD+oOg\nLSV/csPprFO2Tai14wYGPU91sA/qq/r0b1d0ThyernnCFmb0bez4Jvv5J2CS\nbBQxSFlYr/JzXG8NZMu4Sv47gQsS1EJHkpjX7FWtwNxDcmzG0+d/ujl0ldbh\nvmdq5oLSbYF+nLg2gAR7wAeax4+BxJiT/oQr30PKU8G6cojLfnI3YnN88PCU\noCJMEhRDlCUOFcldV6G8mQC7qELwF57nsBhvVqaDhHFIwRdbRic1ht2JbuW0\nLuMiLfzTTUS2rS4culatF1Sp55c73DjAP9tzV4/w6kFy9aPvjkyCtLlth7Ia\nFAkNBGtFMpcClY8AcraGBvjxB/qy5a/Tg9dJdaCThvHQJZ0CkFW4t8m3CzLe\nDFPcG72fVNEIEUtvCvCPq5c0yslhsnp3igKS4PhYdynkLSCOEHV1+5Te5jPZ\nx4jCY8ubuEkbjU69zj4Y134uE24dQ0ZtqBS9g2dq+/iqmP/jYPNiSfSM7yZR\nAjpqEiWdHFtLXAjO4kgrvoXhF4ZRJyo4CWVbFTbcon9Lgj0F1n0n8v8JPITu\nd2rr\r\n=lSlN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-beta.2_1602674786729_0.40480375930485324","host":"s3://npm-registry-packages"}},"2.0.0-alpha.14":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.14","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.14","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cb995a23c1358bafa46bc103f99d8d6cd27f234a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.14.tgz","fileCount":304,"integrity":"sha512-9BwzvrqX0SWSBtJf5iF3VhezqwAgjJtAvF2UmyP1Q7HyHAM1Xdk2aHzd6GeZiNCXi7dPUkRGselrV7syWBahKw==","signatures":[{"sig":"MEYCIQDqSJzu/kb/nvH6pWgHyO6QnLe0teKZGZFQyIwYI0IQPgIhAIq0tcrYiIofz40664Tmztyv9kUhGrkMNAAFHle+QF79","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhuB0CRA9TVsSAnZWagAAln0QAJdKXaNrxwK5kjy6HeeZ\n270y6Ym9g47FFgaBDWsy20ycsNKbHaBXMdoMk4jGfbGc8ccQtNXFgJZ6IPac\nsvF/iLWid2W4Ey86tBfpqDpFM6xBObp8i082PW9awLi1B+j4XWGN5hYlyEeN\nIxf/G+7+JWQMZe+MqGu9V8L2SMtlhRwRChQ2Tkpme7rIrHRnCJGTLAdrjYug\nYH442SGtZZDGIC75Wgb+nMtYyZXfEJB1DJd48WGxsufJ0FIjQNoM6AAMarVQ\nFgLrCmF6+bx+BTLY2ddlsvH4jifBrzWE50845BCfkGIrYkxdYPQXPP9wGuJP\nSXYWp02118QU4rHtO2xDRmPD3jvuYllNhpgGg9SqRuCF1RcxtMYGAmvyeEIM\npun0ssbzsMF2vv+3BkiYZyeK3b4kUBuBOvqCfQLvAqeiyEvFQL/U2MlvVMVg\n0lgaNuovRf6lKEpyYaRbxh8lgHXki4BWUMWJB/Yz+B7DUY9gSTdIjAYKAfiw\nPK960JBl2YAuzmKEnTuNKWrZRYlqpKxyZS9pIpS+UmcYLMhzkUmcyHcu2JjQ\nkpo7TjnH+hAb4q0S8c0JtEpGwx0ZBwMR8hdsWmG3vGVdJ/JeOBWGOLS+tuAG\ngV92Gir+kmBOnUP8mpIXi4qdECRb9xoPrkhDv789+/2Sy+Ieuvc3DUTm92le\nF7l/\r\n=Njzl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.14_1602674803636_0.6969910571009348","host":"s3://npm-registry-packages"}},"2.0.0-feature-ac458a-kgewhj8q":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-ac458a-kgewhj8q","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-ac458a-kgewhj8q","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9bad315ba5b47b11e381a54a26988df5e5675faf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-ac458a-kgewhj8q.tgz","fileCount":304,"integrity":"sha512-AaTo5XS9Sr60crnSPTcSdftO7NSAPPY9ArBQjHFSUDMbYd+qFufMXc+z8zrUKQ0R4bXSgCFxTu6XTqdEIwfTbA==","signatures":[{"sig":"MEUCIQDK2dg2ZnPiCnhKFFDSqS37cVpT3iXQ2sMn1cEt9kuk3QIgfIgMTTIN2DwcQ+NAVVB0dgYis87OJRf4GKkiYBVSTTg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjAkyCRA9TVsSAnZWagAADqUP/1AnAbyVrGPmIJ7zfFPn\n4gP/CGP82xtriN2rQxhG9gMqBDAlCDa+tEwMT/s5k7tDFdtkb92UvIULuyk0\nfFF5Bvu8g7HqtqIClV0u+wKAa0NNzx6KI/jXUYOiqIStBVwwxYqsFCsqg1x4\njKef/5lGAgkW+GNKqT0hW7osMkUHOm46QqD0iEaP8EpCBoRC4OVA34NHl0mC\ncayXRxOwR6aW2sIDuwB7uUTPu/xJfqtVdDJw50cItCTOA8xw3IdAA6+ZGow4\nNjyVt2SKGbXgSrxo788LwkIAbe3RWxdK0RKbwALxRWPXF8HfWirTH2Cgfz8c\nEIswtVOgRpBN6Yxye0MaDF6wd5hPnF186k/92V/gNis/h4N+EDdcf/e9hjIY\njzM2IYoiTSyMlBpdzuVy32msuO8D/cNSjBSoSmtkGXaAZHuwUpYvdC/v35tP\ntG3zFbYr6wAxAw+0vM5Mr4bkOIOuRTYT5dXSRgeifQtN/nnGRg9b6EBgQy0+\n/NdDTW80fLaaMYk0VhjtJ7Hk+Wp5CnYoqv1x/X/74nYzFXC99vFoEv4UUBwc\nOxgngraAtMtdn/bqnk3FxblfVjQds0szvxhSxjzQNTxY2mOx66Uui1WBhI7W\nJTHLv/Rz37bZ/JsKgqqot+lZjwAGt9bcDK/E8VtUBzZYK7savAlJp4S8MSoe\nCh6s\r\n=kJsw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-ac458a-kgewhj8q_1603012913981_0.9256333402958115","host":"s3://npm-registry-packages"}},"2.0.0-feature-748871-kgf58wbd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-748871-kgf58wbd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-748871-kgf58wbd","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5f7c17684aff54a35c754721abd4d12d346972a2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-748871-kgf58wbd.tgz","fileCount":304,"integrity":"sha512-/xSsoPnejEx1DmLlyq8jSzaNuTGMaynqBxhgETjT/Soiv1KFqRl6Zn38kDUl9lOiymAYOAKGDT5uOCraijVlKw==","signatures":[{"sig":"MEUCIGc17XWpb77Fl7kG0vvFGwVlccvzTaTq3eeuJhxnaJA/AiEA7qTNJ7EPiVYCSLB9axjYoDQnZYe539YCkXpsmLDDPoA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjEKqCRA9TVsSAnZWagAADUYQAJzY4XBfAxSsGYuAfaRV\neGs63kNXW05JH6zithInbmgTEOSGjhEruptc86FkV1kCcNvUS+CaQVg2Re7I\n5j6kUhQkyegWcqnJjVimLYuLSyNlj4vj7s2lWQW9LUe5060+vcrFJyaSF1nX\ngyl6aN5sR9KujRGLAUm8ZvuUpXjn71DEAQy2Z65uFG7/xKlF1qs5BpJJVQ94\n4Myp16Co3boZr3mUDlsSGFZvChpg6X4Lpt94THSCP2yKJRbQpRRTmHyhLy3+\nrMVq/lIKa9r9fH2iGmGoe76VVaLlg+T0dFBU+pJYQPmKEyMKeQsocQEZ7xsZ\nKnXbUjQV9KtIGOUhCdQdvL8SNDvkL2jtaXa68qHZh9ucohS5RvGVt9TRDBnQ\nEXqGL8w83fZBnGzhHdfqaNeLXNR40n/WATCBb1IZMTHKgMeky3jBGkh09aUv\nOHd4B0xlVbzPJgrpgu4UZWU740YpX9Z3yp6Kjqw1tYME9e39pKqeyq5x8er4\nEBvgvGZIqH7BnsUx46PxAisU6YvT8aAUv/VVFzPnKVZ+jLaYdcxB0fqa3HKw\nr8pJdb3C3ygrs5wjHSpjfWHTPG8nRdsWtrVYLTBCjtNZny9hZlYi2yQ/zazC\n/wHXrVgBNjAF9MyRYzXsd15+Rzn1NUcUGefy8u42sawkehnyPBoW879NWjRl\njMta\r\n=82cx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-748871-kgf58wbd_1603027626083_0.7909620995773441","host":"s3://npm-registry-packages"}},"2.0.0-feature-1390f5-kggeoygv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-1390f5-kggeoygv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-1390f5-kggeoygv","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6399e224c454ec7b300b83fe1a18f7d1d0e6070c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-1390f5-kggeoygv.tgz","fileCount":304,"integrity":"sha512-Rv54n5f+DTjvwm0Xn2gPVL9jljcuNWvnyl4Cm0fd3mxvT+iIWiVfnPWYAlwPLYIl525m/qa0hJKnw4KZAi3Glw==","signatures":[{"sig":"MEYCIQDBudaeWhRhVUG3N9n0wts5kvsWv0H1apNifU7JExgnkwIhAO0HGGXNBwJjYTJqzCj7R/rbvNvEAvQKiwoFaRu7jj7A","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjWzWCRA9TVsSAnZWagAAJI0P/3N2FGVyH/nv8RxcEtX3\n6vYWiGIlc0dKbOfQMh2m+yCoe+PByM2Kb5xEOo+Jmmh+mOPp/qoEJElv98gp\n5f9yz6Vij7EKxpUDba95HTlsQ99WwiEytQsH+yBKh0z1At6Oh5eTVxJmhMax\nMsaaWxkjTADNzGYNq+hv2nBVnAc/fFhM0b7F3v44kdZuUwKyT7CBetrnW61g\nArwnvQQA4saYCfPJikvP2GBW5/7S7EAG16jmvbAt2Tnb69Db25D2Q2XkIYcB\n79r6t7lJuQtUsechgH//Pyv/MSJcFnIfjr9+C2kNvFyj1DhjhFwGf2KY4u8J\nQe2DIj5uSLGoAD9aC478DBl76/0Wr2ieq+aWwOUSI8sZxmf/qPm4QkbK/mnV\nUIotYG8tkuZEpD0ju+jDw6ndr7e6mgIBiga3DC/MV9yY1siyhMBdHxMo/RyQ\nN2MqZTyjWSeDIqvyStCsDf6wKAelLhJ96x2IOF3fMwu6P+UXqL0vqBI3QTdA\nzOdSF70Tro6q+lnR11g4lN6wDh1eRwmhDA67o1CuOvSZrbp+WfKKypa7j+VC\naj2yld10kof1smFI+N1ryOvS4tIhUpC3u2jKvZfw30KCgkWz622DA4uFb/ma\nsgwQpViAGZmnVACZ5Qu7FWqM/yTYux6DHk6R21Xjp+R8aCs5vvPid9BnVzWh\ntHT6\r\n=ck3M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-1390f5-kggeoygv_1603103957972_0.28109719759275564","host":"s3://npm-registry-packages"}},"2.0.0-alpha.15":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.15","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.15","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"63f2af121c9cb8b1db2e7d6c75ee831a9b71feba","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.15.tgz","fileCount":304,"integrity":"sha512-0PeMj7tP1GuxOo8kk/3zG1Ynhf20gQt7EtyBt/AiXaNrY6ES258i6i0af4BDqI7B8wSwGMazRU4u02occE1Iiw==","signatures":[{"sig":"MEUCIDtlDXNXWf6x053CeCJC+lEXplqRcUC4Vg2DEdciaQ9gAiEA6OWHvhUPL8Qmb5J92pIp3Qt1MGCWsZXwfptEMB99tVM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjYedCRA9TVsSAnZWagAAVdEQAJ7ayFRwUQjknUrajNK8\n+Kiga4NSqs/GqI9erKBIs92LTWcXG7Q8kUmjAt/9ZQTJpV2cwUJTjvi3Rg8K\n0gSs5g5bVu1NTJdXS9GYoOgrTU7sh1Sg6OtoSF4YgjVNWhC1esin6aJwoi/x\ncVRaTPU86+YQM71Pu51UWhrNDsAjz802tolLAvlu/D8Z26bCb3hzerDXPyDL\n7kdyROFk8U2xzJjeJ2C6rH+qEZK30pkkxFhmAdYNGM7NmlXYNlY6CTL8TUHe\n2+JIB/VNBSn39R3OmpHV3Qsf4EpBoLLyBhZxilTTxgZ0kf4LP7ZsmjblBPRq\nXXpSVExmIzHnDCOiHbNW7UZKEz2zhxczn2TlHVhDQapmvAs5f4RCEUCFF937\nGy7dU1sbwGeZnY7O7eWg79KONHq1swIM8tBZD4C2eCnp3PzsjpKVBY+quMNL\n+kh5Pm7suc0vlJ3jKbueEl1MbOUwKo3xuIg0PtsFnWJ4BtzIskUI7uzCfti0\nYmk/dLxIn0HL0drWNuur5NZILB+1LfaynCwceQ06bqNigbiE5RaAeHQOcF60\nME56XHYNOU18e35pPrbsXihka9uxkerBQ2ZjF0YLiUWD09ZDRy06DNbWs7Je\n9AQVIkispvycDlEyaABThM4CaHX1P0tfAThyErQybNnIiSEm7mVS5+MXTQYK\nsSo1\r\n=qHkI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.15_1603110813092_0.8423452346910447","host":"s3://npm-registry-packages"}},"2.0.0-feature-147501-kggmplng":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-147501-kggmplng","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-147501-kggmplng","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9bb37b9d4b00a445c214b5b6abdbb37b7af20b12","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-147501-kggmplng.tgz","fileCount":304,"integrity":"sha512-R/oY1oqp6EgYTErP3rqpITZK7G1np8s6k73MWlRPNcjWcXzBocgm3cDZCraofu1eNp0j9wVKJuaerH7A6eKiFw==","signatures":[{"sig":"MEQCIDSEKBrflQPNMlelLO1Tr0rI8ykfpY8+OZjWFBrb6AJRAiBIS0m2TfuL84gXjYc1zn9DthtW0kRDkQli/PBgeX8IDQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjaF2CRA9TVsSAnZWagAAf3wQAJYG2GAC31CpjNyrbpux\nhkOnDAfONsuWbu58OFTvw7cUYYxqyj4m91cSgfz0JWmQYycYfjkRFnFV7m2g\np1yatI8UcZQHTugMufaIlQ2aZ3MKYfiBfa80KF2ufHkL+varwbQSpYvL1HMA\nrFQ8C1r8Z8vn8zmKpSqxWdsgZ07uB8gJV/t/q/PFvlpNl9T4wBNdpOLzDcQ/\nEEU6Da99vkV2EJKKqt4Hu4avxDO/0tSpv63DYgxrDDpoPBPJu7ovr7KxfN40\nIgQgnGUZOlQHIrH1OKa51Smi9EpwxTvpm3XtT4eJif/smfM208ldnXDkcDBh\nIDdQkiKNxxc/QvoK4kyCNUnwVDM8I3SLFpDzqO/crl73e+k86C06EoxI71/M\nVapd6eiGTq0bxNna+7t9tLzGwIhtDxMRHbbX2DwVkhXP0wntQ6ia5CVjo+y+\nRSzqoylNncE+ACPSwkvZMCthAloAET/bWKsJ8UEXfuw0F0XmsHszQ7FEXp1q\nnIiO2M+hUyI5q5+j4o26bdzx3Z9LNRo/Q6kEJeONnt2YzYjkAOLHQYK62y21\nSM0VJdSWPACBd2KffZ7EzxNWZAIEnfV70CfI50rvm3qYtIjOQASnwtnYXmif\n8BtrsrGNrYhLw4VfxAAlMsc99aQM/OZWP1164D/EFjudp612Bz6U1yF62D9f\n5jex\r\n=vjB3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-147501-kggmplng_1603117429915_0.5640160624113852","host":"s3://npm-registry-packages"}},"2.0.0-alpha.16":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.16","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.16","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1ea73a6758b564f79a6b09a7070b80036f668e0d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.16.tgz","fileCount":304,"integrity":"sha512-3xgE5Nu8A1jv7LB1leK/PA2VN+33Vk+zdfr50UrG4JbVkY6o1pmnF4z3o2Np9lX5EttrzdJvck41/wJ5SSms8Q==","signatures":[{"sig":"MEUCIQD08VCDWQRrpEvTqFATNInjDM5PcrA0aN6zXiZN191UvwIgeE+KMlKXpPK8/lit81p2KLuit9FdLDLV6iejDkvkFEg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkCotCRA9TVsSAnZWagAAo/gP/jgTBwUbYKhv3V4ihSXP\nHt+2ZKXDD7z5xTs2L4M6FD63maC2kv9JN4hcoiw73l0DJxzaYr6B54T2mGiC\nn6JNkiDG5DC5xzfE1+zU43kJ0nrIMPu8XLyTjuTEawU2u70IfNLhCOgLIqRD\n2v57UdZCFwQXezRTWbBp64yy1Bz1eGKN15ZWI8fo2NRqtg8uxp04lqCtQJus\nkEe8CJN/NIGNyyBh4o+XJKIx9At5APR2DCf3JJd4sb7SR0I41GNKZco2UmVF\nVcWZ3ZGI5PhJiYaawb8QMPM+yibUzSjMG4HWycAitu28MucKPr2krAP8WPcd\nwcGE5jnRfcPZmBEmBUo48Fte6GVxQ39Y7izPBZyNpVY1QQOh+IaXycNUNKUW\n62jlgkXyrZ7fkAQYbLzmrxe3OCL7YKF9gxmVb2GctCv9Doab0v4RFlU76SUx\nTWvEw9n25xoMVc4jb3omnoLvrvnbOOg3EQ8Fd4YiMDzM0idGdgXFL30CZEiO\n09EOAlQq2zdm5OQA3R5mJAbU1rqnr061Z5AleKrMyjepVtsCpfThS43Nf45v\nKw6hmQW04hMAUL5nQx8gI4v1PCqDXd4N+J6SPVlM9XFT8mcBQ6+l12Okw+jL\n1auiFGfDzc7cXkLoYkoQpLS+LtSgLtZnwA3IqXfPI135QuRell3d3KAdhaHx\nObAJ\r\n=vKdt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.16_1603283500957_0.38887402754733813","host":"s3://npm-registry-packages"}},"2.0.0-beta.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-beta.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-beta.3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bae94a841852d45881796363def6067f968f902f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-beta.3.tgz","fileCount":304,"integrity":"sha512-FD53l70Vf+np5eg7e2Uxs9oWPw5qbeRp2HR0GnHzvOQp6+RcCW6caWGXfj1nVpKuIbsJw3v3tBPWnnGWXr8nqA==","signatures":[{"sig":"MEUCIE9v+buR+rpdYaM5hdHs86jiwzXg2+NR4dKHClefXj7lAiEAycmpVLQH5U4TmjyQyFxY0yv1Vio8MkgEGkBHmFmvfhs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkCo0CRA9TVsSAnZWagAAOXUQAIUIRC7YaMzx8ekc2zVs\nR259Ygwe7uLAZCFDpftp/bK2hopoHR0oTzcE2VDKOY+jJPHaWmAj+VmfbARi\nmfqHQwl0P2VzNi7rhOseekA7ydslQFP9J260u4ASVfn2EbC6c12RaByRvfut\nADwKNVFVtznjBWhJ+cgPFVoiDCH91CxHr7i2eZx934Ovn23hp/0j4/ItB5e3\nqBqMqQBMNMyVzwEkr1w6WRJDIG3DWWjxwqhL101hQ019Dg+8xvR39xm89JQj\nSi1yiFGIOun44cq1f6dgqp5qkB4BRpXWqDBJtIeFhgdwzOFr51S/hRi3EJ7m\nTnokWWw2kH6tvQ/doG6jZrh8NjRHooeHA9W4ioNg6evy+2ZeyNPF/dEiYHF3\nmrljFOs+cXpplaeKLjltIGgghhYO+IVNK4uLogwbT+JXH1ApBjm8lMSGJyHY\nAYNQMX0jezQvZt0e60+6sGZ34Qnc7KiIpDdn7tnP05kTqXGYGxmvGN23wSHO\nPAsSErP9xKGk8dKNwDkxqT/ulJ+9M1d59gn1loJNo4oPNZLY57p3B/61qD9t\n3fm4hl6OetHn7/ZLrpl5YtXMbc00100Xy98oKmu8P1MQgpT2LIBLJBPZ8E/L\nmy8Uny/eLKY1YGbTJd6y7P3U50WpfltpckoMsBqwDLFCbB5LmksCGsmR2UAw\nOaV4\r\n=WrPG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-beta.3_1603283508142_0.4307410325463268","host":"s3://npm-registry-packages"}},"2.0.0-feature-3f676f-kgksvqgq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-3f676f-kgksvqgq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-3f676f-kgksvqgq","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ec792bc327ced84b3886cfbb23fb68b09f55f6c2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-3f676f-kgksvqgq.tgz","fileCount":304,"integrity":"sha512-hEU5a8Tn2sHCH9nnCT7qDhvWC2kCCbUkklmNzswwSlThJ98O6tQHtQQ5wHKvbplctR4YMdC7bFGDWxQwCz2uvg==","signatures":[{"sig":"MEYCIQDZUfOAv7Oaa/mH5B2MWlEfgWCrG/mw0TWREuvDc+726gIhANmPaskmywLAu/i/CAqQ0bdVQfCgtHZ+SVSqQhI6qZZV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkXq4CRA9TVsSAnZWagAAh0kP/ApPiSmbmIUpwycT/KHn\npCLeCCvY44wEVJ2/gTgiaY17Pd1ovCP3WfrkisarYKvM8uzeGSAtgGipaQUd\nD9IHMMtWzo1CANjMKPmooO1oojvW8dNZ5eaj1mreYIbUXlIZCtplmQVzenMp\nyQZbQ1cYz4CZxmpcQJk9Z/MedCBKjyYyrnqedZ5EGkI8Draic1MwaemuTsyh\nFIud9CzwgqCphvAaZkPUq0zXbp4jBEBQsClgUNjb3OEZx1tTkRHZueF7/4gj\nNifqH4dJ1nEpCkHO5aXHkWAkBmB3/ai9mr1zTuEu7KvNmaIASpMfwAowPEOb\n9MJQnOJtrk6pdUDPKFUcBzECwpcsEZwaCeX4lSR0N6XyUw1nljDwbhj/AcFA\n6fb80yqA230ge2RBKEcq4LVIPuLgfOlyS1BJJ+tIrxpLCNGytCv/1dyFAPpK\n+9AazLnY9H0z3suRsPOhTnXDEWD8rEX9+/EIu9Iwz1wSBxpxRYAzuO44hQoo\nrP7kCzod5ppsHuBhl5Ar7nfqPiFClcvuh/fL92Pr7ibXHvH+VODP4CDje+A9\nayewvIPm5m9JCXJ+RzBB/YVH5o+TgYFQoFFzKeL/svD2vGYLsg/YHuabiInI\njqhRjo9aCWBeB1D+2GGO5xFJyum8gZFeDMlEH7bRiYHKgb3gLtMVU0KEUgj8\np968\r\n=Mexr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-3f676f-kgksvqgq_1603369655648_0.21838384810036193","host":"s3://npm-registry-packages"}},"2.0.0-feature-4399b8-kgkt4371":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-4399b8-kgkt4371","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-4399b8-kgkt4371","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1a75d5f2a786128aaf0149e1d97871cec2b46799","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-4399b8-kgkt4371.tgz","fileCount":304,"integrity":"sha512-t4wdalxdieMujAM3m60eoJ4X0W5eZ1dNml6fepypC1PPWhsCJg2dKosdO0N6z0+1NOEe6ie7pKSqoQ1fnxYkvQ==","signatures":[{"sig":"MEUCIQCAJj3AQUK3PDND2rLn5XkjtJlhWGB9LGUvhuYvq2R5FgIgWsPDyG8wdsrMnq3kT4B9uYwsYTRiBLnTvIZz6Tlrp64=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkXxCCRA9TVsSAnZWagAAm0wP/1U70X2k3X9VVS66B2tZ\nvLTun8RgKtlGEnBGMGPymrKWxqAfUq9hJ/UOeTHgsKZ0C5jHNviqeIuClD+4\nLQN98sG6TGVp7SDIyGQhGBEn+3pfMt3hZ+Nb+qH0T1Ne+9YJ2Xa3mbpsYneE\n0in24/iGynSrMbTlBCcIyAJMO5IStYMopTTA6PoDhLg/gRSiwN6Oim/yYtWr\nlTCIiinYuUkVk+5C59ljRNch3BUZVuWs1Eez4IBNDtC0Zvs3aDwbIBa6Xezu\nGEwlywb0MbOsduBciMKETd0EGtWREePRGzSs0OsroJSBw/OtkNoEu5FOoL//\nKvAJSKrn0/Y99lsjE61FKuH4op+DU3DfT/6M/5Q+cdAeTulqypSkFRL6VwEO\nJoQSjyn88olAdNhxWV0XRFzaZVdZk036Xgp6sQULsfKXUYPkn7m2AqbHXhDt\nlQyTswzF92ifNjHLhbFmKlyP6bEVzmC8E2pvcw0ZXhkp2bCQ4eea3gXYeLHG\ny2xETDNwSzGKHv7lXECH7ddQ5WPyYXlw6SeePhX+YxVCp6XmR5Z7kJO1mLM+\n/y6RPaw/emW8/eiAa1cylC1Li3famTKzKBv5iUkKiKaRpx12M2Of0O6bcZZa\naXbJsOiRZy8jGpnUvXB/aCSYjOHikyXDEW0vOtR1qu27hWDUFhCOJDNQxmG7\n+zBE\r\n=FjKV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"feature~remove_event_aggregator_from_ioc","@atlas-engine/core_domain.contracts":"feature~remove_event_aggregator_from_ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-4399b8-kgkt4371_1603370049773_0.48856264251179304","host":"s3://npm-registry-packages"}},"2.0.0-feature-ecd3c6-kgky0xk3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-ecd3c6-kgky0xk3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-ecd3c6-kgky0xk3","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f2af7d41d7117e32d3f0adc6e1b75b63567a6274","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-ecd3c6-kgky0xk3.tgz","fileCount":304,"integrity":"sha512-psIuwu/I6GaKhjIXQ8bFWAfBh4hGkDno8KCiLPBSrQ+3wo3c4DmMtXpBCgUZpLEfbi6y154xjakFjnGt2lPISQ==","signatures":[{"sig":"MEUCIQD7oDO/63ZXvlFSlewlC8jYiSIQnnf3yT+QHFavt9FedwIgebGsm0yo7/sZcGkHnRMKaAdjjhPT1x2yliufw1D2oLA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkZx3CRA9TVsSAnZWagAAGTcQAKKpqmXlgmtYRRna3EEZ\nOq/vA7J3JQ6sV2i9tvrw4dhiT+dptyyXCDp77iXeGkjMrVWBf/es8w3ldqCS\nS8EzlksA94G4NAAQdoMhdxIwmSswbOU8GV/mSpIF6Vvj3jiTqqBBJBlWWoOF\nHSdrKQuw3ZRvYsXC7//evVaY0dPXVoivZym7HYrMIC1K5N1D2u62al7DHrdb\nO2HRzq+O5YAKF2bjS+2GJ+D59UUlZXi5u/0TEYZll+awxbjTvPAOM4H4V/54\nrC0KV9khIHdEOUvZuxu+jZogSyqIIGo764k5/MFXEOQ8inEZ5dYqEDbn7qu0\nZt1CrnrECeLA/tYsQF8dHW1cNHM7XE3pAjrQjeUVkvVFOGWIs9Uaf2oUxbxn\noxWOH0bFizxbiCLHl0uOEDug5jtgwuMMsA0QGe0v01BiHZyO4xdjambHvPHa\nqfx00N/uZNS21lpiB56M0koeWAVWzVi7X6k1vcUpZQfeHEs/62d8UN7QDCtE\nRTFg7a56k1S1jSU33ZwVGpHwRN6bcoR5kAY8P6XQM3R+4hVCoq4IF5pWzX5I\nuL+OgvD1rBopfFAMiKqZ+PnR+DEn91p0TkblzQ5iAX8g/Jdbx7PqgRVnsULt\nkuhJ2hQfEchMEBXAlEGMLH3fO5isw4YSKrvS59cVOONh9xhDzCP9J2nq73RS\nBWZC\r\n=wm6P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"feature~remove_event_aggregator_from_ioc","@atlas-engine/core_domain.contracts":"feature~remove_event_aggregator_from_ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-ecd3c6-kgky0xk3_1603378294702_0.07011769697831105","host":"s3://npm-registry-packages"}},"2.0.0-feature-27e920-kglxqnjz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-27e920-kglxqnjz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-27e920-kglxqnjz","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cec6979c4e92396e7b8f3ab95541d0ceb2950707","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-27e920-kglxqnjz.tgz","fileCount":304,"integrity":"sha512-EQtP00Ub5l+MH2PGLqhpqvLbL5Obcf4jFrACHkK1G/3ZLrCwK1jeRUTHdKWoNJ4nBEN5nyZMwP8qUMwAoDCqyQ==","signatures":[{"sig":"MEYCIQD+ITAFw1BpaCnHMeH3AeVtYfa9RYRyUlgLgoS+e6x5kQIhAOTKpWboIS3KcyHlreTeHu2kIxaCju6vUSbOrj9DdXKD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkobKCRA9TVsSAnZWagAARpkP/2udpMlfG8fMrAHFxklI\nqEC5VUKKXUkni6oRfaKwBjgxPvAmJT1Ih+JfnQsKmvg1IV4TsCygkNFsOFpZ\nXFU+4OSyLLEJlW+hxaJW+MR08U3cBF4nvkvGCpNephsSLF2nI5v5gUC7/wpn\nnPm75rgGCPOCE7qEz5S6DoSzJWA6JdrdDuu+EETPvO/2z0kTsp19bz+gqyff\nHOJpYCHYzwhIep2uDcEr8BVDV+KFIPqhmaVHD0zvCYnf2+B5PETFN8fHWsMe\nkpE8Y2iqu296GKNpe7AR67qDR1mjr2qfjQHVR/SboW1zd4+ODB3qA5iYv1vF\n6BO8pz8qFNApSuQm9Cv/swgppWEtZkrVgniTRp95+wCvYNxAgfJEo+8r00na\nknjcqiJY0NPWjsKO+Dd7yxDiDxiRpKlgTL6SzXQVL/uPmzqui/UgQhrIwl0e\ngRE28bqO+uRDtqaFT8uzwr25JY7BXm0htTFk+ZZ1ZR/gs5B8wI/ryPq1wruB\nAgpU4ZJNSckQ+gUCeubYN5PtsoTVE09G/V2LMfPjUlNiQBxUYnztR2Qsgced\nHpJyNqzAeUFR951+FnuCJjlXaXB7u986JMbY/MWj6jGEKoBqjNUDTZMkKRW3\nWuSVIBfPlCnnIcI2KWPQNM/0w2vF+ycjtDIvwi9MtGIJcwDtq7MJitxWH7Z4\ngvw8\r\n=gv2v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-27e920-kglxqnjz_1603438282029_0.040940985955702835","host":"s3://npm-registry-packages"}},"2.0.0-feature-00515a-kgm0cxpi":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-00515a-kgm0cxpi","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-00515a-kgm0cxpi","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d61990dd9503f76b2cd0841f22b72be754288e8e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-00515a-kgm0cxpi.tgz","fileCount":304,"integrity":"sha512-PdllKwQh9nr7FyaNdzDMI0s/m3emefWa1Wtd2Id7fk9t2K1yU31egwHuYzYY0JLfWFLMQwobcBH5mnGq5reBoQ==","signatures":[{"sig":"MEQCIBV/uE1xuTpAQJboSTbJahq53pcgv9zEJ3vJd2rwDZxfAiB0pCyS+mZalWCSVHIG4ZGVtoFotWV6hwFuIlOCTvV5sA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528300,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkpf5CRA9TVsSAnZWagAAQcIP/jxl9/l2b8tUhwKtwrH+\n7iJY0MnMW3IIHUwYBGecS6fWCpUm95Kp+0KaDOFsnQa1LjpLglDDYqIifnPM\nRU7IrGzvB07B5N4Q7CXpco6cP6T71h0qPwNKfY9y8MGvhg3oIb46DV4UU1Am\nQJq81QEG0dVG9KVrCws+4BuURTB7m8kkevUYtepw+niivYYlCTU7/79ey081\nIipsOEQb13s5H13GMK+5Adh4q8sgoTNnso9KqhqmxQ5sumyMNT1IUVNca3Pp\nhmKSfoMl+xboci0WNMh0FnAb3drk8O4S3lJgPShTXvRfnA/XPHTdAAUAyU76\n2XTdE3XaZHwBTjpqi8G1+z2nsHCtHtonaILZuesonCHKhvqHeW8hj0zb7TwA\nQKSLO8g18AZhe7O+dgOrr/5o18DtB3ls21ONFD0mlRAX8NIKNft6sPkALHqX\n+z0MDmQl+HOq85liYO+Vs6LWVJenpllJKvOSCChJ1tkCqhuzLwZ0JUD47w0V\nFN5MEUX14gbevQYRZL8v/15wYzezqs4lJW6ON11avcNLHcEvfUDuzT+Uk4Jw\n2mRTyI0v0LGTEdNbWsOc1r08c3trxG7AQuYHWXGbETiuTZR2cAanwi76RA8o\nI8aQOi4tf6n2MNlv15k4bEDE4FDnwkYEGaYUKJx34WkqCeF2xyuQXJdfA9wO\nVDYS\r\n=ke66\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-00515a-kgm0cxpi_1603442680891_0.9957230204505911","host":"s3://npm-registry-packages"}},"2.0.0-feature-07ccae-kgm0w6pi":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-07ccae-kgm0w6pi","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-07ccae-kgm0w6pi","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"94cb695ea2646006f4a5ed05c4bcc3062a643932","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-07ccae-kgm0w6pi.tgz","fileCount":304,"integrity":"sha512-YZjKqRvOShM3WmuZ2a6TGkwN3xe/aFsDEmx+rm6qbJp/M7X0F5McnTp8RDoL9guXl3IPFPCTK6kYloY5vtmG3Q==","signatures":[{"sig":"MEYCIQCkbNTyNh0ztielibssn3mOc2D1Xsgchp1/0ygki2mMswIhAL7PLCXUVMNEqNzK7clp8o65Lzmk0ZL+r3YF3y/wTpN3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkpt6CRA9TVsSAnZWagAApXsP/j15ewyWkz0YlQI7Gm5T\nzKtJzk+Do/hwSRElpJLbr1qswbQy8OH+f6eEVWaq5UsUW8QH+KeJtnKV8QD/\nmDXTCbweGJTSf54sAwyTcSf5VsqlgMpOpGfjWukLcrSHK856e2i9ldLTjl0c\nRlzihdNovH+0+ipZjfRVAQWXxYlhEhJRFiC3mhJla1ZdTy6kWr8QwS64unFV\nh8MWZWm7iGlbGAvnywIA9h1GOVI1X3SNCcffY8q8rbKHgKjcTR1CDSi3cYHL\ncVOutzt2swIr7rhCC9o0LogOE2MJEzOa7IerOxuQ/pT/X9i87QYJ2h35afR6\nYFT2cPzR0IvYVJOPIG6FeCNqZK0EoYo07a12xqSJw+xZQWUscovByTykLNiF\naiKr7LQXc/ub1bXR5qQxOSDMjwnmPoMzoyFS3dnWTLOG1pr1CjuG0pPax+Et\nzHYkfMDd63ZX7AlHKMvSilpLIPvagKg4StnZc28KyMFhRuel21TQS01pm2lJ\nxQ9CE5p8gHZdsghz29c8uE99/2DvLxcWCW44JdTTBiHhQdMDn+JBVKa53VIy\nUOekh8aeNb/h9SsTmadm6P9R7wYVUqnEpGCIxaKc6p29RVZCOtdQfKPHSqPM\nsSrIKhnoKD9x+8w2CnRgR7OCeS6NaL1QwnrxjH/fwruQXOqIUYhEuzOtba7I\nkgXJ\r\n=eW5i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-07ccae-kgm0w6pi_1603443577986_0.5699942513883871","host":"s3://npm-registry-packages"}},"2.0.0-feature-5aa341-kgm1ffes":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-5aa341-kgm1ffes","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-5aa341-kgm1ffes","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8c4e2a2c9f5e3c8f562a44a5f2ceaad72d8ec9f0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-5aa341-kgm1ffes.tgz","fileCount":304,"integrity":"sha512-FcfpzNHDYLmijGUWE7H40rDVqkaD0PeAVxkowjiMX0WxqtV2PKYfL119vg+jqYBZ1G3KO2fYSCAFomdjth97VA==","signatures":[{"sig":"MEYCIQDfpSL55MQua8miUT28vub3aQ+9MwurQhMTMpn192thfwIhANdU50k3t89uidWq0gEoGlMHIB+7X1UNqfsASjKjYZ4v","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkp78CRA9TVsSAnZWagAADKQQAI8uibCHaA9o4phWFJYk\nAAod0tj1D1GSMOGboQX5uMsZiBu5VEoGgfDRd9jj4cxqf89Ab2gIM9QNnY0G\nYe/Tf5JesDZ4eGMQJqzolblWf/JQE5jgC2CJyYpGnYm19hunC1mdGgCY1fZl\nF2KQ3O2CdoQmI2F1SA9puMHOh2AnjIwnV6CA2BKamdASaMD91SaERK6vNzV/\nydX0SpKXOxmf7XQplGtXBVCijZqkF6Sva+/ujmJgF/o6WFuh6ulL+C02hlXl\nFrGzFpwTYZxXHINwXRXUyr5xoQVWrzzPZvsZaixHq7KvwLet3j5/uAdA3zW2\nKWKkIzvoruDCVV94Jt49mhkjBTsks0bMN21Opl88NwbwSgoMToTlMmCdNPcu\nwiIu+kk2TAJVn8ykntO5Pw4UnShfe7G8jOtS/mREQNlqDFHXjA3AcbcDJVy7\ntHLfozZlM9p6nIYoCBgQnr9zycpOYHOoWW84jcvazo0yS9D19dIMCVjhRMoU\ngoS4tdI1qjMgYtfauC/pmlW8Sqrxh9VOebPPyXe+oMx30stFLllUy3Hj4iId\nsmooxCfGw3E/ZI+ggOr4zSLzgC6DRlb0WRYS+wxA4/fw9i8mkRjGUfY5U6pt\n6CDBOXiLEBkdRt0HNhGjky+wUZf03T6EBFY7yVoKwqZmIxffbtu+ZQQBz8Mc\nzas1\r\n=R4Cu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-5aa341-kgm1ffes_1603444476292_0.6008858955527978","host":"s3://npm-registry-packages"}},"2.0.0-feature-51d11e-kgm1k3z4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-51d11e-kgm1k3z4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-51d11e-kgm1k3z4","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9ed4e9ad6d8f8b0c5fc3c48ba166b61118813f17","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-51d11e-kgm1k3z4.tgz","fileCount":304,"integrity":"sha512-LdvyMCJyM6drxNUGxIiLayyiiV4pjUxmZFlOh0bHcLi/TjLHFKQ5tD32DjbbWJ6b5OkFV/jIdHW1lYB0qNqlsg==","signatures":[{"sig":"MEUCIAOe35olLeC8TMwftwbFD5avw+HVC00R3f597GARo2s/AiEAsckeHtlyYCp1sdqerAYPND8pLgw2z/6LSs+2X8hfJIU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkp/ZCRA9TVsSAnZWagAA2kIP/0USd6xkwhWzmmDAdwsj\n9c5EUyf8wtZeJx0fNBe2akht5Y4UFqGtA+ugF09y5Fe2vL+KLwbhU4LRWERL\np94jilKX7gNDpx9XKigo3F+FrcKya6YruCdxb1IxdmpWf+Df6hXXqpNyQ3yA\nt6wLwSz9W59f5cb+5fJD/OdquKXCqDgYomUKkRmv6c7bkWPBNPqsxdZA8FD4\nWjXo0ZxfFyi3LzPEBDGtVhq4M2Eid94Ws+eEa6W0q+HXm3qxnYPbsrl5ErmG\nDMpN+h2d2A0z1DPKkaAJEGxDSK1yJ9BYhGY2oK66IOqV5c0pwpyBb0AB5C3F\neActqlcsRBM8dctjoxihFOs50ajAnBmohA/NgFCKovNigGTEm4xAtyzInC9M\nHGyZrx66TZMR4FRS8FhAmVaGOKd0toWjwYJBsN0BSm/iuBxC9LkiIPZv8dDz\n5wpddSIzU9FoLfJRgUXWCMglLT1d67fYkI7WoXUZonh4l/4frry4oPbcjo8J\nH8i+xvThydw3x1EKGJCPYdDDBjxnm2KHKT3qLMfg/lPF+UaKu/kcitKnm5pa\nrcgjCwD8nN+arCNKcZK6wJmgii1D3D4qc9JAb7HDmiv+To1z15dJW8Pmfh/z\nFIWvPlpnQBGFNRqsG08phdGXGdoRfnTh5HaCsxD8N0KXhkqrUKb2Y/j+uodt\nEVbH\r\n=e9dU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-51d11e-kgm1k3z4_1603444696558_0.6554152280683692","host":"s3://npm-registry-packages"}},"2.0.0-alpha.17":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.17","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.17","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ee9df21292cffc19e90b094bb1ee9893f1005dda","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.17.tgz","fileCount":304,"integrity":"sha512-cx5CoQOrm+llD6ueWqkEjmmfSmbX7zqbTL8ixh/O4wgdB+nTN665Qmbuxas7Ktz8rRWhEFq9CEMVBYXThrSIAw==","signatures":[{"sig":"MEUCIAZVNvBuHp479pxaUJGC7+98Ag0frBffcs6hVAeqmMd4AiEA49gShQOcPauj6od0UiriD4Hi3HSjdwW73JDMSLoK/ew=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkqKECRA9TVsSAnZWagAAY0kP/iLMHQVinOivSxEJkZD2\ngPupPi2Bth8BDVSoI76vR9OCBOixfosGEvk1QwO43U4iF41WqVCJEH9OYqLH\nKai2SikQDvO8cUA2GmK+pE985PBc0yKpEmaUcd7zZnZ2aBQtwAPisxuhGs3r\nVvTl0cMlyDEXHqAjKF9yhB06ED/Qo3SCKdFt1DKNg4ww0OggQsVifBd73c+y\naqOc23ISv5rQhk8Mtl1zO6XKqCmZt9q971RFH51iMTipHwIKLXbOLBLQH4bc\nYiUkNoQDjEF6iuwnV8JJjaGm8bdcf3M8d59Wkg20egOrWQvKzPvnrB0PWSTQ\nnE3SNIOXpvJADBIaJOUKAgvJMDhX+Gjrq+IuwhN7xS5z/bdYTOI2EdIMWk8n\nuXLPZRcgBZQ94DfuPkJyM3W+XofSOKZHPntIeQcGVutACJGzIdhSCr90ZMoS\n43qIR5QPRKj78Q74cszKdFONLG9JlFKwaLNwoS7aQQH0tnAC9sBTL/iAfYHP\nGyBpszXjdLQi9WN8naQeWsKFFRDVerSGHqMcdtXK5m1qa1c7enwrUZfnF3z0\nLnyxSEUwQ+LGragcj4QMIrIEeviFoeoye+/zaeYjlhc7tFbmmptX0lwihorC\nI+ptYjmRib43gLmNyJajPgnDx8Dfc4W1pNzm+uxK/FiFKK5T/Jr2ZOib83zR\nXJ8q\r\n=Z+hK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.17_1603445379785_0.8271585511289021","host":"s3://npm-registry-packages"}},"2.0.0-alpha.18":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.18","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.18","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a7a86bfe802b804aa8320fc3b6979b2899ecf6d8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.18.tgz","fileCount":304,"integrity":"sha512-ukAWp7Wae5iXLrioPZnF6YnzSLD5BMGaKN7eWlayHQXBCuaKZ1UFSn2v75fVfJ2V3Yal68a1ok6O9dhjq0HfHA==","signatures":[{"sig":"MEUCIQDnIMbBbSymKdeIud1i7OU59WtVBhDj4r0dfX1Hc+zX3QIgZ9pL5n+vH51AXif9F0F5DarzhRR6hoRaaJ/sltX1HdI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkt9aCRA9TVsSAnZWagAAVIIP/jnZXGge1kIf4OQYP6XB\nWsz/dRp+56hYs12b8RCeeVaaV3By1MeZuntCIMRWF1nkZRsCL+A4Qi2ouX7U\noHGNqcvD11AqJEZIiJN1a+GV7BV9jc5HZa+tUwNL0QbXsaC9QdG8Tsv8NGY6\nycU7d6QMYdBjOurclFGqpX72/vdSFv+78MhZXeYDEuHMWs+rixN/YA4921NM\nGDAJswlRGfun6+EOaRRJIB4379BFIYkiouu62lxFKdgmiy+F+a7n6OlSDAUI\nCaM63xRdNdXY27srZAxJ5U6v70udFHw3dDPrN3+uDjAX9N/bOAoBI4xnS580\nHYvztSrQqteeUja0tBgghLzMxqwWX0YyucMaY0L1B13gOh+xPziiYVCLwZkK\nc2XrsSfYHsYDEFfoY6lCHGnJKttzg9WzP2MeNmVqoqYRcv24uD3kMAvMz8BE\nu9tjfScUDHwCZd9KwI0O+Cu1U3HxqClwO5SoYn4ZU7UeOVSN+1PgihTDkvyu\nDSFbFJob2Ps/DMCwTJBKpd737OAH88KoIlk7f7Vs0SN32kt9Z4GB6kSN8zZo\nTEeDbkwAjcsOw8htAh81fA/so//2uDvvzHcHnKk873QbF5m1Rb0rKJ2KH6Gc\nHybUriA4VBvK+ZsMli2f7NWJuimoMHBcX+PbOWhBNB8uakcscjRg4X1CyXKK\nGST/\r\n=bMDu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.18_1603460954212_0.9314519045951217","host":"s3://npm-registry-packages"}},"2.0.0-alpha.19":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.19","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.19","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8ffe9b19ea87dee62b6f9f8458784430106b9b54","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.19.tgz","fileCount":304,"integrity":"sha512-24AT56jaEe7Igpv6w5zcGGKWwFn4Yv4+Fl7NYmhCKSd1b/KwleCjv7HEpCfqRTUZxxQEhsCHmBnRC1NzOelydw==","signatures":[{"sig":"MEQCIBmRd1LYXoVEX+IUk4QxNYQd0M01nfi/z7oYIzj4tI8/AiA6xvPX5FSvKky/EKZDdw8p1BqJy+aCLoYknimIySDizA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkuZgCRA9TVsSAnZWagAA/9kP/iTkwFAT2T1svmGKk8IQ\ndhoHCeNW5MPs1X8KHkiuI2t5UmM5L/NxvBeI76gM0OMw6Ixqq4IjD94gBzbn\nBrxPqGgPQFJgDgdgK0aUHMTzW9reouaeM4YAEGDQuHUJgYqOL8NXoBL2kUOq\na6Dbp7r1jzWCFtjezWjWgK3PAtlDizgGMvsbSZqvlTUYkH5Roqr2BSBEw0gf\nCRFdeGumwg6QzHjdEYAHqRjblpfClZSEhlM/X+3G2cZOUdvAnRP7hMK6CxGi\nzU77vTGM18zy4sWDtH5pUsL0uTBrrQEOrRG39GokYsJIyDe6Ewln8qdCT7ro\noNjuU7yhO0BvweQqaS+Jnk0dCDD6fFptMrtUFuJrq480jRIMod7PRIfOgS3c\n57VILW+fwktnwx5B6qsA+75RZw2KQCouoKBt813oKE3nsqznASlSxXwl9MpP\ncc3JDmlGaiDVsn4h/tySfmd6vitRJd05CWoNCC7zqUlUZAsVPFq+lN6D1IxK\nRcMNBIoUnjdE67G/mZfIl2uS4x2ZDr79llgjqWN/ut6J831YWtewwXKsnSSp\nR5sKWNxHR5nCgh4ISagUqKoyGDLeLQ2DZv1qxH57062AtMtUloA5kCoiaPZH\nzLcbDlBVih3ripxskzAs1NFg82Cx+QAgZsZayvMJIT2vu/up/y/LCq5Kys74\n0r3K\r\n=ScxZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.19_1603462751482_0.6129952788933912","host":"s3://npm-registry-packages"}},"2.0.0-feature-d35634-kgq9hqxh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-d35634-kgq9hqxh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-d35634-kgq9hqxh","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8de6c934e2effa564ae38aefbc8ebd0c2ee01696","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-d35634-kgq9hqxh.tgz","fileCount":304,"integrity":"sha512-qV84DadQEGwQzVakZILhPN1UwmL+4pGBOwQv1Tc++fm80nmHdOkk7FgLOz/X1O8+16u5TKZc1eoYoPocctex1g==","signatures":[{"sig":"MEUCIFd8VSUm0vK8CHGUpBGymUgOiB7syeWXRITOW0aPHa4wAiEAxTZqXit8h9U+UkiU89QgbZ80mD0ByPBzaCGHyM78IPw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfloSuCRA9TVsSAnZWagAAiVcP/RBbqTlesF19nMTef22G\nQAIRUOfVPKGaKQy61pfH3a+/R0KHs1NRQI8RD/K0o+C5UUdqBuA127ByeuiR\n2f9WG7JGA9sXx02WGCUvEo4rCS9281M/W/JbULssHFXN1Gp+1oktIk+tk48d\nJeLqtUkkQRlgaNYT1P+CNfNz6s0Sm3l6MdGyn9k2bn2mtXogbu9qiTKWA2pH\nZX3dbzDgDwF2euUW91zU/miLkG98vg9S7kr556yEEtW3bjVrWxUglXT5ysry\n56UZ+OIvQvMG2z/m3inM8JpDbj6GBWtjH2fvF8MsX0mRguI7XJh+FBiLqjJq\n4MHVOIwN8XLNcP99RlQVgb2wjBDXq8MW88yFyBqlQeOgjcmeb/TZT1eAae7C\nr9m37MlMrbEVQ8ttRtMx+NUmcLlRZpcoLxOeaKTsENpfZOQpeQQXd1JlNR/X\nYAjxbx0ji3KqCM3SD6q/nwSLit05+jsuJGDcN22RNX+Od72FhvEH63Z11nPJ\nXnXPAhM8aFcZqWFEACMV+uL/4MyJYBRiClyHz3j9IZDpeL6lwPGwHqnIVehu\ncRHo+sf4pBr6VW7DM6Q3CGXngeq9dDtF8ctj5MUOwwBtqbyZMm0qAcn7oQ8l\nbDQBoukww2JHjXW4A3qb+u3UiD6+Tlum/XJZYaycnUdYwBwmY8tEdhye0oyE\nTxis\r\n=0iOo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-d35634-kgq9hqxh_1603699885652_0.6058677493985329","host":"s3://npm-registry-packages"}},"2.0.0-feature-a3ba57-kgq9wkgp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-a3ba57-kgq9wkgp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-a3ba57-kgq9wkgp","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1ac2e07856d2832288e2622b16746a305ffcabe1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-a3ba57-kgq9wkgp.tgz","fileCount":304,"integrity":"sha512-r0ULR0RGTvjJXUw+QSGzK5enjKgkZOkdcb9KZPmLEUIxexTyT4PtJyKZdCdPynDbICvBlA4dF0cr0qevchLGQQ==","signatures":[{"sig":"MEUCIQCFuy2oolNwHMpzhIQLhc4vVkRv/wGt54TGWRIgbLK9jQIgYDgFW0/o7iJhXf0WkLNHO1uNkCILwIQwrIXdfqw+Qg4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflodfCRA9TVsSAnZWagAAZUQP/AvJN5C1tyFUUkgDebHy\nyt2q66w5PZzQ1GUsVa7MYTwvLLftiCdI8NZ4ZgJVK3RmpWExjd8+ryPJ3HRY\n9y8p0fdRisYEdyRUQED4b/P89a5bOI+WKaTGsx6Jt1G6R6mgZbnzRyrqjsgv\nP4SItoXbGheHZAQxzvlZbQETq5vGLBsa3u0fbn92jOZ34RIW5owJoxjDJywo\nJmSoB+XLeW4U3g3KZNutKR4aqXzxq/iRNzHYwrW/9TNq7Vavb1GMCd/gPfMc\nIJ93gr5+piOH3JzYtqMnFxAfcpGaW+oi6fzxt7mN5EsMx9EI+j37LjqcjJze\nS/Tpt1Kul18FJcs1wuCZq9buIbIwFX9K8zXggoYmjbVjw9qnU5O9fYiuylw/\ntF+jxju0c25rHNtNHnRTPEljVBII9msjbPXwnQg+CY/qEosi9ujx1GHHmgnH\nFqu11PTx5ZFCdVVFYmWcO8QimKnpD4+6avgb8olz9yrpF6U3QdeE/a4PgGWW\nKIQ/stbv0OFeHI9n8Zu9GFJGiCT3Fxu4nXCxflVl8Qar3B4y8nJB2sT9aPEi\nddnp4q7PaF3y0wfoY4vi8OLj9a+ZuySuz69ll/du1wIHLImq0qi3SgprPGbF\nAFY18Cx1AOcLFyfy5toQwVDOwQKTi3cdfb/V66TBzl9Ce2fUYFBAqdatoSS3\nc8rm\r\n=0LgS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-a3ba57-kgq9wkgp_1603700574803_0.6806238424629385","host":"s3://npm-registry-packages"}},"2.0.0-feature-e1332a-kgqdav5g":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-e1332a-kgqdav5g","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-e1332a-kgqdav5g","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c530d1651d39f0f6e212633c424d7968ea9536be","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-e1332a-kgqdav5g.tgz","fileCount":304,"integrity":"sha512-NyqDriBrbQ6ngnPFHI6bDmFB2HYeCOq3IqyQEg+FamdN4+7IfvxQa+djgvH8NMJhSSymQa27k296wkoF6f8Dqg==","signatures":[{"sig":"MEQCIHlGrRmlHk8L+/U6vwnBLX6oOksgyQFJO1LAqunyKNLAAiBY3kWmDCt7lJE8QQXCxZUk2HJEzuR/I8KtiuCE4vUaTw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflp2tCRA9TVsSAnZWagAAe9oP/2Yo94j2Iue8B4jUQP6C\nRlbZxz5wnKQlRv5UlllJo93MWcN27HHl8tLHvib37Q+4T3t47DvgXchibDSG\naR3wA2lHwy6pnrbAUG7TRDbIzsMipGE7kAFBD6BJBm31/ygaM2r0RGAMmWLG\ntU+LUYRp/JK0iDwc735Di8HWisme0C4a+KSyiUlOsqQIRXMLvHkK0bBwC70J\n5XtORa1L0B/Mb/6BsRNeNY4KNOleSyJfufuNOdztgZYwUPwl9hdq4TF4DG5P\npu0ewpNLsh4wC7cHyph/Zx0SJj3dbjwsuGGttYRWHdqw+aamH+vvu1Rvc6jY\nFaKvtqieD0qVb0OuVU+p1g3Wy5BLaG3VErI2rwddl7U8ky2E6ZavPP3DlGow\nrm5dmAuWGVGZJUgle2rEhRJkKJkePKayTC8LN3fEQJA5Wz51Kk46jd2XUk0K\nfbUcLc9+YNILBIM1fN40ScBcaL0XCSCSGeUIlz2RwQKrlqSGBcMsaQK9vFek\nwTx9ldlIb9yPEwUVXghexvIzcWa4ON1oNAm/mDU/81gEH10ZfkiKWPcu0if0\n9jvZ8R+JkMvaI2rd+K04nQGDD6qXJzwbZn3ee+U4KJ5RLmFjC+ABYmTHX11C\n9veBaTb1gyXn3Nu73IU34s7texKgFNyrY9MHj5NRds2VzSGxU6S1MbdSHks6\n+Zny\r\n=JQY1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-e1332a-kgqdav5g_1603706285174_0.728284712909832","host":"s3://npm-registry-packages"}},"2.0.0-feature-02eec2-kgqdsf9n":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-02eec2-kgqdsf9n","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-02eec2-kgqdsf9n","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3d651a7ef72f3cb1f09f6148ef23bd969af18148","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-02eec2-kgqdsf9n.tgz","fileCount":304,"integrity":"sha512-KS9AA8zzJJTpCTi20WtzoYwHkf8qTlfz+z+9sp4GGUNVD2sPkTPWqR7oA4GBZhzV8w3P88bTy6UlP4uiJWha4Q==","signatures":[{"sig":"MEYCIQC3FGrjPpm8utOFVBcP6eNB2YYhGt7vDo/D4PwJ+lZ+SwIhAPO12sy287PFUwuDg1yWE0EXX6z/fyzQn7A1WupEaMPN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflqDfCRA9TVsSAnZWagAAEywP/1QTMCT0kNnD7bPYCFfb\ncDRmnqPGAJ1AR3/O2+3Ux6WnQoHQUdyN55x0MOJKjdUzTMdoy8Kqnmzj56/5\nHnbTsZxNiZ6Af/U+cNNdctvvxPIQCUoaoB0RX0vjWa/gz3OZ5UvnB2FKU3sR\nJFVlgEpVPr8JhcAioqWBbTVjHEmBixd2ef5rqWSWjiK477N+aeKV/C/ioyaB\n3maBbeDH4CqsHFaFbF4MzRSNiMq18aYDaBQgkSdhPEXMzBj2XhbyP8FlPZGN\nlwmhDnp1NrZsQ4DJh6cKHN/1ApzlEzHFkt5xEdfccoQKL8emMYPohobgrxTA\nZHeiOjEIsAm84UHsWupPv1YKZhuuVgn88USxrI0P4n/K4ODhabxbRTo4iF5m\nE7Cip3i/zjdNaRvGqUvKSx31LWoZVfvWFarT4zGnFbRPTr5I5uoEtikLzEfA\nBqMXf3wFwPy36GyszNNzH7RiF3RC2xs9rgN4LuG7efu6d7/VrMWwg3BgSDh3\n3g8DrQTrzgOq6zygEQE/sB11ibKOJoe+JqN9Vo6XeCg13UC7Y0NLFuOXQVzH\n7v9Y+fMAyhWGtUbly3qav6czrlPrDA2OCXm0K9orWz5sxi2TC3fAMKiEXjmr\nrlY7UC3HEAHeYad1c39ALbLIq3tltsR/O1cHuM5MltSGSaPSLt5G+9j4AUa6\nh4Iu\r\n=m2Qi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-02eec2-kgqdsf9n_1603707103278_0.9184201195990613","host":"s3://npm-registry-packages"}},"2.0.0-alpha.20":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.20","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.20","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c09696e291534869273f2de5b66411a806a1f187","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.20.tgz","fileCount":304,"integrity":"sha512-RckwQRhP1EMpselEhBwCfjst6tuM5/EAE0lrv81+L5wZhvJzpUaCgqmi5QXScf4KaMv0vmt948hnxHKdXndK0w==","signatures":[{"sig":"MEYCIQDHo56sUVSOkS7xYXuerTJIzn5MCybdvkvQswo887WmmAIhAKlzHSq5l7cRIcuiWxuNmUGY+7k3dBgC9H4R5eubmF01","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflqJbCRA9TVsSAnZWagAAFzIP/iz31kaqn/wJPrbIyEf5\nziO/ZAtOI6lsBE5HaefvpT0bw0+Y2LksxnO2EgUx1ZfdfVwpfu6w1WVNbEAM\nUJRwPo9BAoFK9dKQDq+BaMGgpJNsMGNrRqLncv7FivFI8GCHX7aVnWwakgsT\nBfgeuDxuKchFnvp1W+KCCxEiL9SRwbjDLxCQUScR+G1FLHmbOQRhnzlncJyu\nruyUMPfms/rJXUVx63SU0eiksXdOdg+/xQp7SCFVmHik1BT8FgTB3YUUbtD3\nkjDuDvsV4hM7URY1kpUpJuJ23qAzjq+ogBlDX4VLjIwxpNOyMttp7o8VW2wh\ntmjDCeQWv/nbMpaiFQ1qiD7qkS1B6Zoy+cLM/0tvM70S6JKK4DdhavKeofgH\nu1Ima/h/ZBA/qh0mjOBQ7Y8QNC9xAEE0VpSOQnnSyhMfvuZC/++22HwyiZ9j\njJi5tEtmtRVaTt7Z3pJ2s7YzJkFR1ER+eREQxwN6MxKtj6qc24k2ALgFdDUD\nXDMyTVH5zKT7hFqh/ztgE5oK7OjyInEgev8I0S8E0o3cjkvXP9lTyzt49/f4\nV8SscBRCaInD8XH04S60nYoIinGsiIjvHWNDM80k1kMphN1Vwp0lSLD6JrD9\nwTR3DYQuiH90Mc1iREFJ6yUxiHJoOakptkcn/KTr8mHUIKbMnsN9QVisxqXN\nFrBk\r\n=JSmQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.20_1603707482412_0.013013044166527266","host":"s3://npm-registry-packages"}},"2.0.0-feature-7591ff-kgqemgig":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-7591ff-kgqemgig","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-7591ff-kgqemgig","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b79088a0f0aff56776514b39638dc56493f1e35e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-7591ff-kgqemgig.tgz","fileCount":304,"integrity":"sha512-ws8SMy+YOMYAtYtbco1kNFDOrdI6UAe9IFZcaKKJ/UiqCjE4aLTQCKslPbdEwRMHaDO47WZGOJyKpLZv2ebD8Q==","signatures":[{"sig":"MEUCID+YB+3h6zEF5mEKemFYTiW7G2wPzTGzJjNPEEgv941QAiEAu/H+BLmKWWJPTlgjeydkBEjDCvr6eDwcSCRt4J0vqJs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflqZZCRA9TVsSAnZWagAA0TIP/RF/4Zt7fhoMT5tzhX74\nTjCfswmhG6cmjLx4VaWsPmH8jcbn/M4N2KbSQQk1D3VUjW2G2ZkJBy+V7Hwm\nRahGyyP077LdniIBSytGEi7PgddZNI/NACP0bUJmlUe0fPnrQsX8v6BgXkzb\nzEKEza9/uLhgCa3L1WtUQhbM46FiSzRHNxV41OQ0HQvmJuK10XBO2fD5spCe\nsBOx3ZIqjK61qF4kKMEKQsE3u7SMt3jI0PDH4Rxi72L/TxWVkOSg0DIGkTZe\nwxOHbKk0YJ7i0YjUpyrzCEEwppaJd+XaV2zU/6i7YKeThMYlfIjYjJPAcqhb\nMjTfGs50HhroiOjzPbmckMzCSVL/WvX+pve+b51XuVWvbakADZxxlDZFjckq\nSQY7DPM1SLFZ+vXD94rADQ2r0/OUyM3l4pMJ2XlyzUvtZR10YHRGJjHtJKi2\n32jz9WrsQEAk6zWSPAeD5VCqZsCYZxi9Zjsiu+Nh3y1q29gaBGGl28rNpsmQ\n93Zg9Rvg9gfe+rHLS+hXf5LQyp5mRszxtUhhwh2GbETza6cWy0o9tSKNGdSj\nI3XNLiQbHpCUJyL4lcv2xcE7A8TEbGJuNoKlPU3O7MSeNFDMRMdspXptG8X8\ns3Mwg126cIo+woDxc9WmBEkCzV+D2CZfYtW9sI2wKn0S2C7kNdER0cMtnADV\nV17F\r\n=0yUA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-7591ff-kgqemgig_1603708505180_0.02182037171982487","host":"s3://npm-registry-packages"}},"2.0.0-feature-8b11d9-kgqesg31":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-8b11d9-kgqesg31","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-8b11d9-kgqesg31","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"590fc1d5342c050b37561ff3bc230b01a074418c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-8b11d9-kgqesg31.tgz","fileCount":304,"integrity":"sha512-ihyQ5isnHVOkbSI7yBGk8zvJ7hi+HpFJRv26yl5GX5YeomV9eKZRHNWI3SGoQBa7WSStdoYBmUZDBIM9PM/SMg==","signatures":[{"sig":"MEUCIQC6gWAfWv1oEKHL7tGwrrpbqnHClP38CRU65JEkuyLn1wIgKNwwfkhDVPa4k39NV8adB4qRHiFV+JofhCR6B/XJYtg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522752,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflqdwCRA9TVsSAnZWagAAJ+0P/jzvVpqZ66W8BebYY8um\njAgFA2BvGIveJhG/88nrPALVSZ6KnyKaE6sRPmEIoUMtr/Mwu2M4xL+3BEWe\nIgj8FAhmNdCfd9rXK1H9dy3pws3pDlQJ7F+dRg5+xMjL3rmtj5THF/2wM5jp\nWJNNWhaLwexUDl3k4864q7N6RdY4LhvrraTPx6Maf7H83yXKAjG5UaJTEJTC\nXCej9s3+i7dKUCvW4h4sEb6iOAotUnC1+RCts0RgyKPpeKsYkVSCbZgRTIrp\nXeQ418ebld9mOZTxhtFXM2srxD10ALeYOaT9wHcuD6a/OT3wCSTm0JLAvOsX\n5eOcbgdCQ7cbe9L/yx98TDbfeylBHuUzKMqe360d+Ffk16ha0L970L6FbVTc\n00UjpdRkqr3QSf/NpG/9OEMZ/IuYUn+PyXNJpUP7RoiLloIBUYHjzoaX7Wso\nfsSZTdHpVt54JQ/29dEfCgvSJriHZA+Af24UsHxdLd7KFTuUO3koHWEoQECv\n+eAEf1sdG9e+1J08pRfQbASB5njtXVKKyr3kiedNi9SbjjcrirKmnRE1p17a\nrLTe/ZRnzyG4+rd2vPe79BKv0YotZ/YpFsJIEaU3p3oraH7tolfAQzTG+p8H\n8b88VDXD4BsGI0jo+sacHnaIJbd/MwfIlJbS+jQPLZkaUJsoMAQIC7bxhxET\nIdRN\r\n=mT6e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"feature~remove_event_aggregator_from_ioc","@atlas-engine/core_domain.contracts":"feature~remove_event_aggregator_from_ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-8b11d9-kgqesg31_1603708784302_0.34930345497959414","host":"s3://npm-registry-packages"}},"2.0.0-feature-9f544c-kgqovqdt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-9f544c-kgqovqdt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-9f544c-kgqovqdt","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7a4de783448e0c38d5c438c05a793fcc9b1e7b3f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-9f544c-kgqovqdt.tgz","fileCount":304,"integrity":"sha512-cSRv1vIgPq9eziChwJ7ETMD8Y7kQ9mLsriCxmo4zLSUMW1L1PCYVWMf62uS4UCeAnmy6MI2167jlqikFU7FK9Q==","signatures":[{"sig":"MEQCIBDPfd7FTbwj8NOUTMi+yTcCAsyi9A7bUFjQMiL5PNc8AiAcOcK217kFLSC9b7l/3tUyrAo4XcVg7tkaev61Cr5SMg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflummCRA9TVsSAnZWagAA0N4P+wTXeuX4k+Hrsd4x+IiU\nJMYabZtzMwYUeWsB8GrmBe/j46Aqr/Oh73RVAu8mYiF6KB1HyrE+CCBNF0bv\nb8nbFZBh9I8dyDd1mcDcW/tWF/a3S5FAVg6tUIu06zCsTYwtKfQXchAG/fAM\nFSxMuSSpEOeQpQ22JIcf0V5i8X2j+nIeZgsCmUQ7AS+OB1Va7TfdA7wmoLvj\nDTBMZjt7XKbNSDx70bkr4ep6wRaMUAlApFIv4OG31zVo/38zzIZkBDQliSqF\nmwNva885n3hrGlPDoIzmFgHst1AQtBXTsajoDg6jcdsy1dlJgJLXkZLajS96\n3J9FaV6OL98AjEOSjH9l5sRRN8TglLtB2aMndoTW9SrP7okjte+u/dl7flKX\nGLN/Y2d2LNRL/PB6LMgDr8fVpSZpqQncJuQiesRY7RyYTJjG/NhIAH6sqa0g\nU4jOOPrR9Ry0QrgcAO/T0oiViBuPrhUbtddkBvjEE3GxbOahodg6pAyHk/zq\nY7d9szTF439TI1BXM+uEwdFua/K0Pevxc9/65Rk4Xtu5K3rPPDEioPQtpizr\nE2beseomo+wPSpLmdjkZpQ5gYBoc9fb/d2GjQhOEObygyNNfgjI/Is3YV1SL\nf/J2gmttXG/3KKoj+xNAO3wa9sGwLwQBI4JOi+yK3WzSGlZiqBYJD+/9GBeB\nq+ro\r\n=wwfT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-9f544c-kgqovqdt_1603725733419_0.9869791809598338","host":"s3://npm-registry-packages"}},"2.0.0-feature-e8f5fa-kgqy5nt8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-e8f5fa-kgqy5nt8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-e8f5fa-kgqy5nt8","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f3acad5ec27e9faf95661aa037b8369e2d85d3d0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-e8f5fa-kgqy5nt8.tgz","fileCount":304,"integrity":"sha512-n8uF1wWsGX45XAmmR/H5mOwOKUVhs9tMoxnbfKtJRHdf8rq0BSo23Fr/ZWiwRwq1PHvc7Ijoaae3U7mlnNQwnA==","signatures":[{"sig":"MEQCIGMhSqVoWr1fzJL5jnyZF3is4b5CVioyA6SUwA61tt6EAiAPZU+IlaqkfawMyP6J/Cbc6mSck4j9SzOpEy5xe4cY1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflyaACRA9TVsSAnZWagAAX3EP/2WIDLp9WCdGTA1nyzQs\nRqITJ85z9f+ukCcYMi2MERaRN1go4tpm7/2laA/Mfm0IhI60A/gY3/OmJGTw\niG74+JkRH1XQrfWJN/+L9pCkMYeLCf2B3iyrdN4GhbINN4FKVaoTF/N9QO9M\njuB3jr7Hg5XwHa5hNzs3DI4KbyrXSwlNEhc/E+m6l8h1V3n7JxIjXQBJTEMd\noO4ihcqb7nvFDb2/A/+e7JOmz2UZgyLusLfV3rXynp2Bud9otlFTWPrsWs2X\nrXzKgGEW8trrMh5MT8e+D30AiinyRQJyvSTN9I+0s0nr0vzYGKwsBqsLcuW8\nyYJ1wAYuJ9FojN8OrvUIu2IAdwe3KoXWUspHW0VVFsE0Af1pIsbOSqdTbK7K\nW8jPId5NxIS/1QWwmadJBG01l4IotJFoPT+h6YA0xRwKzSwwBcUVGLVdipBP\nar+q4Aq0ynjB2KF0JJVeUIjeO23hEJ8CBnh2Id8k8uAVUEPtO23y1HyGD5yp\n4Cp1zei4zaIYpfzPykFh2KZrpThlw8j8Gp60WMqxGrDrlQI65nfF4WxUhwDc\nU05pA6ysXsurATZygttyiUc3RlcCbsSPa5qT7dkUZPgJohJxSr+kBe1TlYl7\nspK0Ca7EaDyUr3CLTReSoDBKZEANDgZi1ZrsHpJRxBa3fcMq3Yi9jYWQSGME\n45XQ\r\n=oxCs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.1","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.1.0","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-e8f5fa-kgqy5nt8_1603741312215_0.20660939681137114","host":"s3://npm-registry-packages"}},"2.0.0-beta.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-beta.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-beta.4","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ba626955090457e24d1b3b8be334d53637edf202","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-beta.4.tgz","fileCount":304,"integrity":"sha512-o6z4slxFC/mr62WFKt/HT3tl/0LmiEfGVN40do6PCuTCTIG2FnC2m25Ttv8Rk0w/0cARfwyGjNxQmih1ZkHQwA==","signatures":[{"sig":"MEUCIFUQ7uIHru2Un4+kTpKBCnvN6ocvh3kBocLuSbuG2bsZAiEAvsmw/zEtyxZHle8lRmaah4kTbYwgjQFV8dWHIvzBTrU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmTZwCRA9TVsSAnZWagAAQIQQAIaNUkXyirJzoED67djL\nvTyrEZ0Idx8MRzsvB2deGlrTbFmFFAma2uB5cqDDlst83GVcpIDDXkSKjrou\nF51obsVmnb2eXN4jfTClymraniemR3vvqVUXSQTwFLe6IzXHhJEAH7omH5ne\n5nD1fEGm8Tm7zCZ889MXaGnjn6eY0kfNbAdkYGsTTq8eb22YPVyAm5c/9cUr\noZ1dhCimdz0hIzHQndOcP1XmdRNGacS9GdqjP730zHG+MVFCDfUGKWtUHBlq\nopo2aCnzbWG/zsBfVKqqpk57lecpFIbUtx+fadxy53wqZlNRwr2tMwC2XhkR\nZfC4RYGTzoZOdBtV3FFxmqdT4hph/dypTkEjiU1Ygi+rrX6DkZdB67PygZns\nixu1WXRKrUtYXRCeD/PtWTNAKZDT3d7jWiOuisOOjHWUFKTv/OU6E02iDvSb\nCkCBsbjyrbG7jN5p4T46IY9q9llkn8OSV/65iCPMUsR2F3lOEOGGrGf6hkWE\nUNKea/0Lrzzt2lQgbizmKluxqkPem7IzaBVlJb5qSAXYs8Sv33v5k4qNxm3d\nNuVL9E4Rzi5WDEMd9YckWRNG53iqmN2Obt7YH+J+kAYPUYvinMd2oqsbOjjR\n4Hn/3GL0p57YyRyns48DCgevP0Vwbgk1aoNbxjFhr+k3GxYdeYWjYmsUh5wy\nTgzr\r\n=n1MN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-beta.4_1603876464231_0.0028145238651742233","host":"s3://npm-registry-packages"}},"2.0.0-alpha.21":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.21","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.21","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"09d1aaaec1fa11a5f8c028e45bc2d8f6aae0968b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.21.tgz","fileCount":304,"integrity":"sha512-kfhlByJUI1FcABID4C8DqwgMVHH2iHI3twRZuAXLH/2V62wBadnZifbOCiXztfi3I0HSWHkhIOQio+mZNivJ7A==","signatures":[{"sig":"MEQCICTrZIgVZ77PK2D3l9UypdzL72dFXL6QCfj/lczv8Q90AiA4MtZbnkstFr1nb3yJ3O6sTwDxdiV7RaVrHGwfpLmIMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531519,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmTd7CRA9TVsSAnZWagAANSoP/1wZYduOiF6qxDexqBEE\np3AI+p1D/KLl0IH8apoEZKAj3LOIl0Jz3rD5JzHB5Gzxgk5tButlJmGK32dU\nWSZB6W9HUpparTsrrMsC/f7WMbJ42Ykxy1+Fujzz4/rMG/p7IylhxThrCudB\neRoiudtxRoxIrUqxIbHBtXr2QU15HOWhBhCpZ9kbF9hw+gzP4zp5Ef+emLMf\nbNMoQ1dE2759WxBLSyG6/pJTwibXx9Rat6n5iafaG09SfPR3Ch11EbRg6NZN\ntazm8/h1OGR8K51x20PR3d7/M2c0nchj7DcfBjBxz9jcTAgabQpjFaaNiKhE\njkova0qWoZDopbjbkvyluI0zSe1nK+UAvlx64N4b+MygLcDRPLvRjRqtTqhA\nwQWBAb0HNlL6YzUDayNYjIy1weurtxvAuNhmcKZ5Dxco7/N7qAfa52IiJr/q\n5OBBkBpMRQoForam7mN63Af44OKtgGY5fYCnE5Cybi2YPpmqIe5sYVrBX9C7\nKtqztQJExptDkLULzwHa+V3ZAx+X6HCEC98NpeHG2JkHI4cPevOF+S5d6tci\npI1+CaDQFePNngq319nz1y/WBWbtznQ1NLIAd3VdLoEQ2GIQ91PvvstEzOXj\nSchWMF3jDFM3HA1+NbtXRJW9gYtSzVCIJDR9ypIY8pguvbnjmjMuEd5H07j3\nuJwx\r\n=z45M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.21_1603876730698_0.06516638818705056","host":"s3://npm-registry-packages"}},"2.0.0-feature-17a3b8-kgt7e7w1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-17a3b8-kgt7e7w1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-17a3b8-kgt7e7w1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d6e86392b60f86da365a61e91ff0f0e430141da2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-17a3b8-kgt7e7w1.tgz","fileCount":304,"integrity":"sha512-wOz/MhmBZr2s+bDSSgBVt7Mv+BMTb9j8QPaHWWkODUTaUnfaWAN2rwPxIiIfmSQt3EJ2HSgJT7FfJrNX89+EsA==","signatures":[{"sig":"MEQCIBbDoDt+yYq5RbrlIHWDDuTNBOVdbvbiXRb+NQrGXHLGAiAn945Lk2icrbPHs0WtWwchXo3ifm3R0QTwN0xTMcreDg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmTuICRA9TVsSAnZWagAAcqoP/3ddSUx02D4ZlE2YCNKx\nDAST5uqHpHM1pONRgysQPuJ0dW57J2vuU+DBm1CgJ1GKbX9+vNe7QVtn3e4Z\n9gKnSFEauQ8FTpeMoSYnehMm49wF0nnGEkUozG1ptijdqfjH0hcrVNKgIYRx\nzn2O+xcRl3Rck0QpIYAdXaymxLi991vhD959ToeE2bAlpd22wNYBwiAZu7ZW\nSI06UmUOs+7w9eKvvWQSIY20HHoNek/Ecyj1iB3pqRlvH8US/dUjsWQtWL2o\njBVuZ+qk83MHSN7HPPkpQr4X0KyKwhgh6fZhqHuWPUKqxrVLkEU43yR/roJ+\nj7s2wIm72KAbZURqcdfa86WR6+uUKmrLsx4uYNhU5otVROGrl57PwpaH8p/a\nc0vmYTNwo9JeSO442bPvC986rAdBVM12K8TuDXFEPquNjIAPw+XA07Cpdq+r\nPb5wuxP5ic9mOGoeoq33gJL8xhCEOcJxo4iS4ZwF6ltzuXNMN9C3E67N7v3O\ng7Pj9oCARuAefSoBLpw0b7nysdvliY1tVQg92yDlPdnf3+VKiFZlPSXPXVCs\nPf+1X14wjGB/2yC7Rba/HShu2JxdxvpGsGtrgeEWLgTM7VmFcj/gY+W4sQJr\nBcZ7zg2gQqpyPRSLjlVcuRcJZ0SAR/DtF52subvTHvmzzbWMux+5aQlXBQNW\ntIFH\r\n=DscA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-17a3b8-kgt7e7w1_1603877768071_0.724558601899205","host":"s3://npm-registry-packages"}},"2.0.0-feature-4d700f-kgt7n2ck":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-4d700f-kgt7n2ck","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-4d700f-kgt7n2ck","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"77108ece02199c3d16e24231c50090cc67d37722","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-4d700f-kgt7n2ck.tgz","fileCount":304,"integrity":"sha512-ykMM4yCzlmYH0Xsk/5geKWbq0RpLNW2rJPdjIjbJyb4wStkKGv+Tl5RuCTbVkHXb14GYZeBGFjwnfObyw85dcw==","signatures":[{"sig":"MEUCIDnDYVsSPamEeVk7SzEClD7veW6kpbfJaiP6X5WADXRuAiEA8zuxZVuAB6+FnXfoFGomKlYP9p41JtmnusNpTaFQ81s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmT0hCRA9TVsSAnZWagAAVisQAIEwrGEHltcizS+YsQUQ\nJ+fRSZP2PIVnuVhGNXHJHZKfQcur9C4BL/QGZALJUVFdSoBJMfO30D/siUYt\nN+xqYG6MCQuP8Q1toPUZsbJVJ5uiEGwNswhK66srMj8Ol/5yohPmNCzHtLy4\nuu45OI2nC4eFHen69DFhQMNZldAiDtb6OyJR/471PLRP5wsNKn3ooAINuG/f\nh29RKThvGCQYhZfPM0vp6ljCvPFPau9QmWWPMgmxKoBqryaoJX9OJq9o5JJ0\nAq/YkstZZwqZnj5ZmhexAP66eWh5b5bw6Sozj0yrZPJqmrZPYbqVGKgf4Ssy\nS7CZ7aCM2tTsX81pMv36QbeA//Wt9Y9tO5OpuPAhO9tncHlAlT5VbZ2NWCVm\nxTf0gRXLmL1XP4gAtf+A28qV9C6eCxQV7VMI9YQngfjMm3Sc7Sm7GrenKsLB\nTgBGFkdeppGPvq6BqD2tZwU/doBfHyd1O6JUVQ7PN3ViFmC+Bds4RElRgA3E\njbY25fhfbKTx84W729ZFHJjUyNrQj3j+KTHAXJxL8mc31RO9u+znkty8SVMN\neA//Ml2GQGQEk/u/LWhGLr4WWcUcCSw4jMPUvtWg4MPqK+RoGfDAWTnJpSs3\nLyKfj3eFHWDrTxLqsnX96ZiFUf9nCJXvMtQoE0T3FHChOYEPHyG0yIyuQ9z1\nwZXH\r\n=p9yW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"feature~remove_event_aggregator_from_ioc","@atlas-engine/core_domain.contracts":"feature~remove_event_aggregator_from_ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-4d700f-kgt7n2ck_1603878177333_0.8320045039392536","host":"s3://npm-registry-packages"}},"2.0.0-beta.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-beta.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-beta.5","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"44e6bb2786ced9f6d62efaa75b4748be80d86504","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-beta.5.tgz","fileCount":304,"integrity":"sha512-nHeIrB23va3XkkBhSyRIgvGHET+BYqW4TXroweGepTGn/k2yXXEcJBCBukC60DtX7guj8+QWdvDxHit4GPAlTw==","signatures":[{"sig":"MEYCIQCmar/QisTxnUjR+VsbN1hWWNd3e+DWQYQpzmE0f7sB/wIhAL9BJbqejpNn71/kQ0+Xq0B5AeOm0PRrLc2CdHZZWAhF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmUDbCRA9TVsSAnZWagAAVwIP/ifzsud3GSU+weFrN34V\nA4IMECTkiUX9v69zWDbC+lCFowHe3Lat9DJJi7Tu/ckOf3b9ewe0R6tnzzqA\nSkPYtmD8zo4xhbHb/82YbFYkT3k59Vcc5r9+sM1j9z4gYd8vjByStCSrQPPK\n7ek41852iG7WP1Q87eNxe+zxwr00pp0iJjteDWkxEjFUEyqMjZi7TPne9mer\nSmbIBW9r1sp6UOG+WtgVe9B0oHOgizwQT9UHlFi3+N1iPkFObWqZN06+QEeZ\n2MoZ3DEeIZd1UnhzwTOWylGPSoz+wyVPiDo049Qkw8P/HQ00EmUhe1N+l6T3\nbPkfBnexLLI3ddnFgy5tHRd30qvq4DIN+OPm2jx8uT1arh2Kj795BZoCyGEQ\nzjgFai2765WK3vSjVmcl0T0+pPKI1sOIuVuuzy4ceGTlHIhtpzig+1Ahbtvb\nMKrlQNFb82qTDUGSFs5v820xZSJMIQeDYRk6y2deyzjh1nJyRSpDylwoomEw\nnAtwgS2YPIPExd3i+I5oXYgFT8ClfwOYD/OmQjq8uz5QZ2cZ3kUNJGWNKm8y\n4KbBbu/78LCn9i+G2tV4iYymSx5snoLVIOli3IbG2iL1oz4FQbnOqhJpBCVX\ncVhL+PdB9AIzK+CpUwx8NIVrfAHZEb+2fdcDySVPGPjtzNNV7bh5tScTDiee\no1SL\r\n=5tXT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-beta.5_1603879130804_0.010794369680424687","host":"s3://npm-registry-packages"}},"2.0.0-alpha.22":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.22","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.22","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"65b45125ce01e01636473a6f285bf9f7a585b085","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.22.tgz","fileCount":304,"integrity":"sha512-lofH4RH06QrcHoiS7acIfNigT8i98JaM7/KRpdqxWBQ9AVWOqSI3A0JRBld5xCo0mptRANcRtivn0lvAa/7uCw==","signatures":[{"sig":"MEUCIQCFvYk2VpzD2T4/tR4Vlh1hXRkV/Xw4XxsVcNQKPidUnAIgUf5Bex6iIA1vBoFg1DLZ6zpNcXKzUQ9EaoEIlw0gbac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531519,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmUHvCRA9TVsSAnZWagAA2AkP/Ai5T9C5eg1Z6E16ZVxf\nmeaPl29YA+PKNQVDKW0aS+yLFqde0/ebJ4bBhgd+xPXXsO4ciltr+xuqLnQr\ns08aR795TNj1nbGKxpvQZuoPxJcFZLGd9HcSni9tfGk7onJoppiSfpIHw2Vz\nirhUV9m7AZtq8R6sb//TqA7KXEu32wRyUbV1UV/PC1YUb6TMqsQKqjyjOSpH\n3nn55N0hSxJEkUqMGvfyfqSgqf2kYIFjpVRe/KyuOLG5gS4S1F+oJExeiiz3\n0MmgUyleqY1Z+nND8t0HHWYwNs6lDVC0Bz3B+V8tHRRNklAMu+AkwCR2yMh/\nSayG6NW4Px9Lge1FdBMazzdvoic9hGYa8Qxhm6iqPF724k5BHbYNTvQlYsuh\nBiqzAsTxI1y84cEa+MaTGPsJWzAp6zlR/kaK3RwjY/0skDA3cSc071OrNJzd\n2pAPbL1ZT5kWTECCYPj9FeaSRWsCuW5rXTJ4Em9JqGmcvpxMAktrSrXS/wPN\n4SwKW3P6c66Dab5ziSoCTjK67kpPO+bBF//57tuCpdkmQ/Rv0IUfYxMwdlc/\nM0kuszLvADnaH5D2Q9OSgfFVexCt6HWXgbQdlNYVXE1PuLwts5DYqv0Ycxhn\nEdbNVt+1dGkkpsaUGnAZdgIFs8J0GMnJVqwtbVa6Ue6qAlGKlAcka6YSMbCV\nhCSX\r\n=gX1C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.22_1603879407060_0.6580524544781308","host":"s3://npm-registry-packages"}},"2.0.0-feature-48daf2-kgt8pfka":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-48daf2-kgt8pfka","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-48daf2-kgt8pfka","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d813e4a21481bf4ca9c07778d035c79e8759db43","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-48daf2-kgt8pfka.tgz","fileCount":304,"integrity":"sha512-8yW5/AALEQltspPf2G/t9LDywxRC2rtQxb+WSUC8gp43rIn2WKnCSsmt8dPBgkdlFLXmc9P7fyRzIDfJnJThqg==","signatures":[{"sig":"MEQCICmfHvNrun0j7E+7qGMRGbbX7Iy2bP8vmOHBlZEtbV2CAiB7DT8MfU9WIoUDRpskkRHoiaUCyidQ+QFeqWA/m2uyRQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmUQeCRA9TVsSAnZWagAAnAYP+gKecKxqcQCiMYspgVGk\n85ylhsoDijE5GXNnG6vW3BSRtTW8ca9kjHYFjZGHra6Cmof/Ii03iiH5a3pt\np/DZzK853CdWfBbriwMcZBc16e8295g8xvtGsJbhfTS8R2ulbMpbAI38guQI\nADo5fO8ymfK3FcqJmhCvl1V1u/D/zOJoZlZ6YnN1wdQuLxgQ2YksJ3I9jR+L\nImdrji/UfNN4RCBS5ScLzhdRWRRDr/ghTdatXKlyGuxXde482CB3GxPvPXWD\n4HGgaahxF8/kOWCSoIuq+wG/lgKu8xaNTMRwiCE/8OIg27XFeFCMMRzjM7Bz\npdSiBoTSu9srhtgI/9BjoEFApkMW2s7aD064R7MdGig47ZSxoL+DNXnpf3mW\nJbX0OikKP5NrVoUg7C2WyEdh9Z668qD6XNmT3ZmaV05d/M7fUfnjEFKJW/qa\nf0gKKAKYvsH2GLSLIgH7EoOTf2kSz2dCTWomlws6J4xVO9E3Mnwk5xOp4c7+\npkzwVVsJuyPsKXdVENeh4D8/oh8gAQH+0/nyE2dG/gg80q0aOK6KIb3HmK8r\ndI0L5fw6+6oId1ZKpGbwUN9F5fmMbtzuF2Ak3queG92dmu2TEjrs40Edz8Ei\njEbBxQZMomFeY6MXPhXoZS1LCTZUa/S6fWpU3nlwfFlvhxCPkBUGRzGtXIlJ\nfm0Q\r\n=2s20\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"feature~remove_event_aggregator_from_ioc","@atlas-engine/core_domain.contracts":"feature~remove_event_aggregator_from_ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-48daf2-kgt8pfka_1603879965980_0.1094595435472796","host":"s3://npm-registry-packages"}},"2.0.0-feature-980694-kgt8pvsd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-980694-kgt8pvsd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-980694-kgt8pvsd","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2da456e647262aab30fc4757fb9aa02cba62fce7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-980694-kgt8pvsd.tgz","fileCount":304,"integrity":"sha512-93cYCmWpBDtr6PvFhp2wAHFj1Fe/397kN18fQtk7tx78qomTm+3k5ObQ8WT9jzIvqtLek3FrtOpL6hK7idjT8g==","signatures":[{"sig":"MEUCIQDd7BQbst1c6zBFwOFDdlhg9d2KF9XcoECZUNBAXEzJHQIgA47NUon6tAhSCifeZ9DhsUvRFxHSC9j41d1Pe3rPqSQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmUQwCRA9TVsSAnZWagAA5b4P/jt2hlOSmLq8WItEXzxG\n1Dgk5ZWJkrviMiFlGU5E0nVi3Xcmb4YlcVe2f1mZGrHhFzm4xhUqTzegvK7I\nprLuIGJWWP3S7te8ovniRSGP5OqwYCXekkXHjHDX22HeKml2o3gu4DLPmw65\n/B0vTuoabquLdJKnwJoEHHklSZG7GIpOHsHO8mAHlPCQzVBTKEkRU9J+IBoC\nsObfC/07VeKTSyhsCLqtkkc7PAsYt2KD1ddqHU+G+VRfVGCSAXzpAbNkvxtN\n3q/r7+RMVF8veyF2J3kb1YxihxxNsLl8e3vWpQ+hbWD/VbAIPzLYTa5Libq5\njz+7NSaBEY9HC90Z+hnxMnmIptAnAzc2irXfoRE7pgqmemiTbVruy1b9vpOn\nRRveue662cJC8U4tb6qaaAel3Z5NFCaiVpJoHtyYyr5qyxYGKJuKCvU2poyk\nICLmUJ18hyqr5LwLGiXlYZiD8+YlKMMPZGiCj2yKdPfk8WQwWbdut7YN8j00\nhhvtr356y0ARcGYMSaZ+gdx/3YXtcHvW5Yw9eYv49Hm1OK27ww0Csl4s3pja\nIQwbOgrdQjqmUF7h1ei+zRzXtO1UUFkoVn5JKzG0KCuzUxQ0Q0PDApW68gzh\niEnLUjSuZPyQwROFqhCr4E539T/SHbEKYLyCSktOv/CgLW0dwMuDfJBLuy2l\nklgi\r\n=j2Ra\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-980694-kgt8pvsd_1603879984085_0.9773948527284155","host":"s3://npm-registry-packages"}},"2.0.0-feature-e33b16-kguolqpw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-e33b16-kguolqpw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-e33b16-kguolqpw","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bb548b0179f2c24b0d508f45a1648b0c2488fb18","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-e33b16-kguolqpw.tgz","fileCount":304,"integrity":"sha512-q3l3wboMYBhO7de9MExMdaOuAih4wMD6wB9JPjyJJ2HdXk0+Ojz62N80Kr1xw2068ZiDoWadVyg2IlPZgD73Lg==","signatures":[{"sig":"MEUCIDQ8QqN7s0J76OB0Yz69bH2UPTOEdoRL22YL/w4enfvLAiEA4wNdDeaM0Cp3mAS4hMQNxXomo932kf6KVkm07N4Og+Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmpibCRA9TVsSAnZWagAAj7sQAKLWK76L7rqm3Y4ALRvQ\nYyYyXV07Pz3ky36cnpUPSwhqFJdn2FTgb0MKUQON0YMdseDsnJiwMDSEHtJE\nREPrFOA2l1EEKLZT1ZVUfHvcnRE6JMm5ZacymCLWtBNjrkDZh/SaWYjPx9JP\n4m4ualKJEzBc0xbKwoANqVK8zQENYsKQSYFo8xH7JoTevx+nczJSv33AjVLo\nRiwEjXb13SrrZH1W4C740iiFyrs6nh+KW4K41SzJJoEMqIc0dqfH7wzmdzm0\nLEd2ToUuzJp/7D3yJR2xTxFJCSXwxsrrfSQvV/ozxfIzdmp3ctGks3uKAphv\n+WJB4q7Ff1xRPl0pug7yzHV77rkrg6FSVG/aE/lBJydnwdtqUi54SsdHzIsz\nwwSSffQi4HJc2Mfre7Zt2khPQMm9qulhOMVEUjZwBIJ7D2QvCHtjgTrtjTbN\nom5dHyO9EQ/qGSgx7RbpxvgA6dDmCsC66senV8ssvI7wgeYmdnwQl+PMv1Lh\nM3U5Y0ygOQxQ6BgkLDsS8o+Y7A56lOBKep9cP5eJU8qsDiIy/g2NJMobzZnL\n07FxDTttidEk6bFHpWJHFyaouvlNmcddgy2gOOPRhuE6CuNGjLi/VNdcm5la\nBiFCs7AB14bqmPbos8ZO1wV6b0yFojBsIR+rt/AfuC/Ys99QM2xo5xLT2aJa\nkWUn\r\n=Bm6X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-e33b16-kguolqpw_1603967130988_0.703526578129634","host":"s3://npm-registry-packages"}},"2.0.0-feature-fac51c-kguux269":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-fac51c-kguux269","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-fac51c-kguux269","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0088c9167de50feedf2e5ac6ed3c87289b111136","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-fac51c-kguux269.tgz","fileCount":304,"integrity":"sha512-lq51uOyH5kAAk4EfjTv4a3f2iGJkl488yPRg0VRxB2k7iEMbTpjR6VOQA9JOXZ64gSZ3q9uz5dgh7yrSeiZyGw==","signatures":[{"sig":"MEYCIQD54G1kfsmz0WH9CJsxfBSo4XHrqK6mCQYhlDrnkJhvegIhAKs1fhON1OhJ7EM1QsYkOXPXt+KwbACjkZM3uHzEbApr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmsIKCRA9TVsSAnZWagAAuFcQAIbsFV8if5nWlMfYagnu\nPQYxVIcyS2xJqsqHTki/ll3Lmsn44DaTm6lQu5CXqp0teYpXV/nqa3LNJwWT\njpHjwehNzjOx29aMHnh2W6dVEtOUGuafzrllRYQl6O7TYQxeB+Qng7TaEAfP\nssJW2ECYYP1Jo1b2w2PbY+ZNI8wWO5CbCQ0DvJ2+/r9ACxhEUKjqRqN+//1D\n8tlYUdSRV6tVkUFu8UTo1BDVtlnPilxDTzlg/DK8Fdy88JvZRUX9hnbfqXSZ\nLuvy8aoLd9H6qNxwOva00cO9Caqdn5HWYHQU2oPgRjbxkMANV+NTofN/+5q/\nFvQZHvRkGbNS0DyW4aBP/Lw4DCRo4EMo/XpCRJj6FPVoulDLh003iOvF2eAB\np2gjz8Guc0W0gmxime1JTz8D1yUfFKu0n47EOYHrrvDbNfwCpqVmJo1fvr/g\nxDgj50J56YZGGzgZ8gtzB/rYAYrRWdG3zuakH1rb6I55ujrOKdpwsT2yJ5Qw\noa8fGDK0LzWZEkb9qD1EX82vxRyH3SVULlJZppj6r6sMb8oKvvR3RRVj++Lh\nc/+rSsknl72GA3WE/5ZEWswGu9gY+iYXVtjcRR4V4/APwfUr96yOqhkWkOGz\ndH8jQRTjaPnI6vLxKogbE3eWMlk+AKmjBOVcMUDzcUG5xstlfdBAO9j1xKyJ\ngy3D\r\n=vvKh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~finetune_process_info_handling"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-fac51c-kguux269_1603977737661_0.6038542516061076","host":"s3://npm-registry-packages"}},"2.0.0-feature-317bd9-kgvbhnt7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-317bd9-kgvbhnt7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-317bd9-kgvbhnt7","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"587a68ea45b6290122765bfbb83b00129507272f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-317bd9-kgvbhnt7.tgz","fileCount":304,"integrity":"sha512-KELpAFw4yM8Rn4h965iruzmlqdb2xXSyFHc2T1+x+SJ/orgLRc06vAh2SC+Fj9t+a8XLRCebOadsVVgCQ2JUXA==","signatures":[{"sig":"MEQCIEmP/+ga25Hm0J1oANEypSmXyx77YoEDrA5SMLrZ44k7AiA76Fs7u+nEUj0ODMgShcW2+8aFHoS+MPmZBSB3FmzMMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmy7GCRA9TVsSAnZWagAAa5QP/34RuWItealtbyUdVJe9\nVCKRO1DrBdjoE0M1/WReqvkr+G8M0eqDOyic1vPAOdT4s8ywZmplC9oiMYAQ\nC0C3H9a8/FWE9KpzC/9mUVhDC7msPaZx8Ym1gd39davUtTF4N1OrXuk+ldGH\ntdM9Lj/LO3Ia9AUea/bN9HJQYrP/CJ0wYr0nvOC0jT9LJ1sfOjvQhIHz8d8T\nlpxF2rEJyh75XUoqFH0R5f3sC5WDyp0pjI1mPa+fQuJsp1mW/fCykDcTcX4v\nN3uopLJ+3i/W6hgV8Am8cS1i6fWFS+lWM57fwvm/Zzuy3V0bSyKp5RfALy/b\n94iCGgV4hAK86FU+1ik6BnEPvARaOAoYNxddfIpoHdrlrSbygZCobr7frA/V\nDVNuQspdohpLy4MdH6B4g9Vk5G9l586MJ9NDOwQScmZnqFfop/xt2Jig3Jpe\nSBzWnOef69xdgllONsjBLbXhnGLeiVEsaSY6U865a3EceQvVYBo139ZE57sU\nUv9Y22EaDVWJyrFsdyWykpZZa9z+wFULrExGZuUZaBzzRwQFXxq0bHzvoqKd\nR13D8d/LyuCvSECTjDfjpPLaTa34E9anRoLjxfJ9M9mNqC4AlTO42MIn2f4+\n4cqiESHFdOKyB+ufDae9cX37KF2FY85ygdYhkJluhHYMIJXabmnCVBUYHK04\nVyIK\r\n=3kNN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-317bd9-kgvbhnt7_1604005574097_0.27724122784196537","host":"s3://npm-registry-packages"}},"2.0.0-feature-cbfde6-kgw0ltpj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-cbfde6-kgw0ltpj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-cbfde6-kgw0ltpj","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9183f6326df81415043baae690c389d9c5f86d92","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-cbfde6-kgw0ltpj.tgz","fileCount":304,"integrity":"sha512-WDtqdxtyOPzx+xsL87Hbks8BmwQgtG5mOshP7dn9ndXHbhWRW7a7H3YU/RHGbm8sOSKtFI2eUqHovCFinQcTvg==","signatures":[{"sig":"MEYCIQDBl3B6XT7g3c5w7awLc2XoZtX3biek5qA/2RyUOwjAcQIhAKucbbnrrSYIvwMY+YNvox5yNUoUQizyiYMMmcfpjYd8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm9OSCRA9TVsSAnZWagAAEEgQAI05rZpLh4zk9hZM0Mx0\nhrwQ8BARLrF1FpiI2FDArl1Flfeq17PZvke9/0ljkrjUqWNhOnAhGfuIR7Sh\nWird7X7TSdh1a+vgtkJil+R/Ztsf8TdfGrUIy2/46agqCc+nj3XZ5N/Dxx/r\nPXGqiSyFlQdSdYP3Id1wzhKmrjKIF3lTlQgnhx0NcqlVc9rGv6p8uO4eohPv\nbTFdgqJBVnTqluhyJK7hXgU491NLohR89RqEiCYoyz8KeD6JkJGF6klLaPS0\n/lglF9JtLVcDu4d7lli1NuqlW5STrFyLTUoq2mNGtbUYo6TeHt9o4ZrVe1Ey\nHLJTPOrDKQvjx2CWkbRob8mWKRis9DR+wvin+javb4cc8mIeC40XHHOQIVb4\nGiN1moPYhK1JqoAlH6fuIjBlkhKMF1ePke+vAvSm5GrbW5Y173qhBoCmbemU\nVAwV6GwO+Lrvyb/3e6l+xRrgbn9SdnCZhlCyEkK8IyrxUriiPqrAYKpNKbph\nQ5sYN4XTM9CY76x5x3KncAZ0bPaZKFqak6DMvMT9tjwewEBPafpm9PQhPdJA\nTdwPbaVoL4nNt6d2YUYbHux6g/WImT8SLA5X4cS4m2zm5lckAaQmUN0bH7rK\neRnxh3Yr38g1yiJAvvSbDC+325OPXwhoFc4XeXW7HplBvA6Dv3I67egXe9UY\nK4h3\r\n=v6dY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~finetune_process_info_handling"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-cbfde6-kgw0ltpj_1604047761860_0.8351416566594796","host":"s3://npm-registry-packages"}},"2.0.0-feature-10b209-kgw2wj5g":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-10b209-kgw2wj5g","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-10b209-kgw2wj5g","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"33e556a4b12149ace3df62047fd059d44f9eba4e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-10b209-kgw2wj5g.tgz","fileCount":304,"integrity":"sha512-PAwLAzUrY16guWWkMR3hqYYstxzOH8VeLUJVyRqHdLu3Nw1SBSiX2ZljGlgdC2PCr6VsMHWac0Qq26fSLklgCg==","signatures":[{"sig":"MEUCIEeLvs0dQSHomMXwYje2Hs/FfJ7r8KIucbsDA4byMZ5/AiEApniO1aEcIRWSBkHWscRAYBtDhq0OfdO9zzfLPSYgr3E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm+KfCRA9TVsSAnZWagAAnPAQAKE9sAHDbca792fQ49MM\nsb49yHTDid976Fss5Dpy7TYT3lDUCqjEybNXKbWSVmgeG2OHYiggTfZ/BE8S\nNJXV1rxkIniC5uad5Y6ZAZdeBm/qTmrWgtB6VgbpyPfcl9Tgql/wS+QlYKYP\nNu1+H8wwOSubciyBaTh1W6ct2sB/cFiSyP4fQUheO/ZkpquPVN2E+KCQ41th\nH9dwWlhjoO5udgvZrd2CDB4Is1X2ernFZddr+USPnOvBpqOknB3axwTaAO2j\nAqwXUX369f4r4x4uN6gvo10uIyhbcU+WVgQbc1rJWYZ4OYBgo04b9Va8u8UL\nLcFX6eZioiQuYR8kBUTKtSind3sy6lu0tqbOmZEZf7YovjlHHxcKPqlGQTCZ\nRS3h1Q5imMOBGdsE3oUEtZofwVFAezmcQ5EDlnKSh06z11iIBscnZ/gHc0xa\nKnGQrG8CcGb1OpUthW4vjN0AxsQ8FKwumc+PonSRxiDoWHZN6GIoX2HYjrmw\nW5YKfnTIEQd9GL+GnoCmayIcFvkeIKd80xIdUSXagD+ENiPvDPPJnqEhXq9J\n2N01mST9M1PCYAqadrgG4CAX9iucvmZrVz98UbjSvjKbQpK27jAw/z6oFpfY\nO6z6apOtkzxuJP3gyjGVCFWafxg/wJ0UH6Km3rPCRsczuxVZIsAycY3ZwKu4\ndrZc\r\n=/bS9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~finetune_process_info_handling"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-10b209-kgw2wj5g_1604051615265_0.6513796772453373","host":"s3://npm-registry-packages"}},"2.0.0-feature-0166b3-kgzf7rq5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-0166b3-kgzf7rq5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-0166b3-kgzf7rq5","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e0d5e352cd648d8ab178befacccb94795bfe2795","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-0166b3-kgzf7rq5.tgz","fileCount":304,"integrity":"sha512-/yXIXmyZkchcL9J7woJXXdrh3a2/npefdnABdvk2Nkw/QPd7sYyGyE+6Pots1mcvduRsj6Xs9fgQDNmpAVXGPQ==","signatures":[{"sig":"MEUCIDw/VY5vRn+jIYvD022XMLqvou/Gi6VGH+vQEWOZ5SDpAiEA4Ypn3V9cBozb/bVS8G29/jj5xlNPhmL0PFB4I2uKKoc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnvgACRA9TVsSAnZWagAAKhwP/2DjGZQSZaKOrTlsU4tD\nfXnFnJDb2lgCTm5fsuyJghKFcjvWXEiETvNwVgtUBpxUKRx7wrdIl0DJeMVB\nnGWf3FvNfZ/hQpaczBWeqpSTyoI4J9LxKTbe54H0b4j2cMKrcBlexXrdogpB\nekHXKE4roUdxjNNDrKD73VKvPMqe01eZflww32AIPH+oRB6eSIW1QFwXLnJu\nxeUaCqi8U4gtkFvwZtOEXn1mVH0RF1XJyj+TvK3IcULpo6XamEpNFAc/hqKk\n3NeUqaZ55ZnbZYdnrRolCppPhHkrM5t0q9cO+WTkEV9MHK+jCmgqTMLbbpI0\n7mzaY8/+LqhA3eEaAcKEVlozbX0Jk5At46/Yi/NDXfgzjsJeN2VZwhOW7aTS\ndQqSusERYEevDxCVDk5LFfM5X3qKLOqUB/FAm+DTIZmlrBzEa5zU3Ca5rLz+\ntYSQglk5BNcUo/BM3lLDkZIDHLiuCJrTXw+JtInIYYuRzHlbvEeRnlMQ69/i\nVk1L0xHx5/PiYWBFN65F/bXmMy0LKsTPQQ7x7Tqx+1akM7yZN9eTj7yEMgyf\nIE1q/7M1boNfyp2XcFs1o0WwiGsT/lCWFHAeCDWRNq7DqP7UM+bXC1olZaLA\nlkmoOwkWoWHt/eD43oU6KT7DUP8N7aRvvk10xu9KfS7KB2/rQTiIyWUW2HU3\n7Bsh\r\n=WJk0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-0166b3-kgzf7rq5_1604253695867_0.7946523854967333","host":"s3://npm-registry-packages"}},"2.0.0-feature-8eed85-kh0b07am":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-8eed85-kh0b07am","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-8eed85-kh0b07am","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c19e3b891a9414c77b8ba15073bc4c19901e0dd8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-8eed85-kh0b07am.tgz","fileCount":304,"integrity":"sha512-H5itfE+ghkIF0Fb7pyJDSe6yX9Lh5+GY+1WKlOnbKFe25gttkaLgiBC5p9IalmHu5Y9dqXx2MGM8a2/s+t3dRw==","signatures":[{"sig":"MEQCIDIz9tA8bo48hQuAvUKyVRL4wfMpJ77lu86AiBGkOsgJAiAgjWxGu6ckt9i/8kWTWJqhXhtWBrpB1enJ2lBc2fECaA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn8idCRA9TVsSAnZWagAAJxQP/2zdig/jdlGeHmeSrl7C\nZoYLhuxB4mG+MGM0blm4jRGNjWHcGoWc1gCKev7nTrz72YnK7y8QwwTUGzAP\n/Y317QgWVbz6ZXohcCNNngdGnt3RfStRfH+L6KsB/Y48nekheJw0tSztiibB\nRg0wqaDipXRRI8gLwXbb+BOOBmdOZ3ZHZRFz04+bZJXRO87ONisYckgoyx6X\nhQGOvIVqPyM6TTeMPnNqesdKvDn7StJXfMtHPsZqip2vavW5KDa5olxxK8Zj\nzVeK9ke5Orf/cYbcEVj2ghCry4klqVwxgbWNTODBotl5HSnj7C+rjEc7yapk\ntUlHJAsBMn77tDnvT4Ui/rgBUoxE8ubpqGG/9tBHg8MjQT1SZuS4+vLrhLz7\njt2EquwkdZznOpS9QQCd0STgem0yDNiHd8jw/m+NWbYOpkYHAMCkmlyGx2Me\nzKqhsi15FBYqx6V2y7hfUyYdJaj6sO4swq+IMvrPbWuaFC5fUuvQFNLoIj2L\nywn8VfA8luDFHACfA9lgx242mwmEFPjVvmRd7XA9EeKMZOnrN2lXZZ8WMvmq\n+X5jU/ECAQyKm9MbmKQ9oDrgq1r7UAnKrzfcR53+REWEzz4MGUk4rEEpcg/C\nUoNDjWZwljBmkGdNuaD6xK12gA+QzR5L5loiAY+7n/o0IOuA0+LSQVV1DBld\nyz9i\r\n=gx+Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-8eed85-kh0b07am_1604307101118_0.9555995982248859","host":"s3://npm-registry-packages"}},"2.0.0-alpha.23":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.23","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.23","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"534b3e8ce35bd25430dc4d6ef4acab32a0c0ca39","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.23.tgz","fileCount":304,"integrity":"sha512-sKFULkIJf5zUZPW3C+iV6jCZFLgQaWsDLJ1aTkmwDg84Cf2TE25va+dNAkiS1tSVFmyAuXAYvWkkxVwwyQCmxg==","signatures":[{"sig":"MEQCIFwdtNeDo5lqzgDO8oMiaPHMF7rE0+PTulcTqW17pqMTAiBbjemV2BeWY3vacd8TzR9NeFLuKzw8Lyd7HKc1XCunRQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531131,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn8mACRA9TVsSAnZWagAAoxcP/jvnJvzetPIDbqxfLSc7\neyaOziNOprBL9rAlSrrRog4DNn1B8y7lQ1QuKcRDnvD98U2fIRTZlwkXw8Eg\nfl7onXIHyfxUNeRhiEkfYWcq2tJue1WcR4vE7IGPi0DmGxX5PBeHXLqhct3j\nF+hhiCqZYeWMJVbtKsNT6gZMcermDKGS65S2Y+/1WqCSmzPullaIQEzIibYe\nU/jrFwqG8QZ7nfy88EzPuqa/Zp3Y+2DQt/dvf++0+KQkpmtP2rpxyGoME8hu\ntcJTT31yjWfEmPQ8nB3u02S8VQ2LRZvD3kWxUyuIPpXbtKD8KZSmIkzOLXwq\nks2wMpnFjW0UCoVdqAtSmm1Not2D9EDuJTivN77Adgh4VCOlBkgZVw17GLV5\net4X8YZCWK9PaMkqPr0E2wAAFIv+sjl4TqnP5xVcHQ3WLYYBvqUSJgVoE8+z\nuzZNQu0bsRGj8qNPWz/M16B/FikBaNJYBl05/OywPrSOi1K6XH3VV5VWB9VH\nIP1opizj00/EZJhLSilfA/qPT6OsOIPTF8hiFjWATfaHxChRzE7FuXRqa7Vz\n7qAW9+uMpvmkezRbMMrFCtseLXio1FUEsgEzD8fPTVU9HmtV3fu1c5Sc4PNM\nIrCjqfe6J/8CAjFDV5amKuBdKbA7h3VaN+rgmGciQ6DXWo+ZSH0GRpmbUUlR\na8tb\r\n=k9b0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.23_1604307327911_0.14522432209938785","host":"s3://npm-registry-packages"}},"2.0.0-feature-60feeb-kh0b7rsw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-60feeb-kh0b7rsw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-60feeb-kh0b7rsw","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d2ca652485c272666e546091c60669bb5fd5a876","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-60feeb-kh0b7rsw.tgz","fileCount":304,"integrity":"sha512-/CfNOVpz1P385DGjbPuSkJ1CO4bqu2Tq9q9Rk3y+p7JmuvlzH0KX6a4r2wBF7muV7Bw1GAWv6EdNuITh+OxnCQ==","signatures":[{"sig":"MEQCIGTAjbtwKqqmf+QSu9Ivu/Jr/FdC+WGJSdJpbIFmW7OwAiAjpGjvPnpVv3de93Wep/fzo7L2jqo5CevGBKsBIF8/9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523000,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn8nvCRA9TVsSAnZWagAAN5sP/j9y3Cag4+tt49yMt2QW\n0fa6p8gvxHDcjHuzKrLTngSz/DpskE1H3Ypb9zzJgOnnXh+tZO/wosuQpBS8\nad/yx/+LC4aHohmj+z1KGzHfVdUQ+Xzk3SdcseVetbh7INfvOaBQ3vZmaRmv\nnOj9DQVqPYB7aHi4+xIlqxGKqw361GFZoP/u0XUO50kq3CawfW+LLok4eQsn\n/xVdS2UIT2TkYxOELl85A4skd9W/Z7pfdIVk3Q3lj4ZAciDTMvvmmSuntnW9\nST0m+8/okctgoFHehI6SbWW8MkHcjDI81UlGEAxmsQ1ttwG4bi9kqEH0MD4F\nyPn7yMcwrQwauG7LrgEaGARfIBNiac7auUElTLzcZj/IewpgJ0deTg7XCxe8\nBdeulC0AmvedSTuXcJLNt5VKsZKI3bHGnjrDI/+xXMojafIiZhsPfDke+oPw\nTLO3EJruCIcx15a2lS9PvN9Ewei2Nto3BRukgnfeyyl5umWcrmn1JespkSZc\nKHgMeYIBQf4w1lnSkDh5Lw/4JTZyHHy05pxwWT2ui2ruibh3YrzSykWR7p4j\nLt0AHhULzYw8fTlP1e2MVAtt8Et3QZecKAH7c0w1AuKPpcNfL12PlqUHhoTl\nJobIp2tPr/yfFqtFE19Od078/eNzkTqIKf06wh2mMYXHTLhW+V2Bt0Vo+ZK3\n/EB+\r\n=J3q6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-60feeb-kh0b7rsw_1604307439214_0.6131821694755093","host":"s3://npm-registry-packages"}},"2.0.0-feature-ebcba6-kh0czu31":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-ebcba6-kh0czu31","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-ebcba6-kh0czu31","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3dd23c608331818bffeefc4393142e543a0fa88f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-ebcba6-kh0czu31.tgz","fileCount":304,"integrity":"sha512-HoRZ5Whf6JRyvUym/VQHoDcijYMN2pGQSXEC5QfD+4PYEh091GPPejtsmyfuOF0+7fK/1e8UVwCg+ihAde//BQ==","signatures":[{"sig":"MEYCIQDrgS06AuLGx6Q9HCXw6rwW9zSbspNha+xd8OSJJzZcdQIhAIDDPo5GafPI8eQ1pYCMlHihiNv+0OerltUX2gL2OOuf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn9WgCRA9TVsSAnZWagAA898QAIvT+O2OCB5kSL+sj0aH\n3+m8GiRmj7x3IKHTHZQk9y8zDwMMkeAGMDflAqQbAFVN1Rv6bHAQkKXj7C9K\nzWauG8+w+r5t0QPzqtpny3m5Wpx7jqFAmYMIGl18TpXAQ6QcTh1icJkB4qUl\nW8kZ/Vz3zqgbQRWxTm1Zt04UJ9ZpmuhePK1aMeECUNXoiJwB6gC0XJc4RiIn\n/8oobjWdaQ+GRXuOP1JbzMtZCLmElk839IyPfK834P9tUw8pCErb5hX8C/ni\nu4stHmtvZ32+c1HcxQYVwyVYdEeaeLMvpTyUOL7LH4LEvcMmoocxhpqC7fvL\nFzYcLqlpoNF5zMp6j+Mj4PXpb4YsVoSFxTojgPAiP2CnMeBnBaNg7Hoeuv8p\no4Upn6wEqSBpiOf3f7jyrAOwxkTPBVb0DzYoLo1ath2LKyVzQ9KHmDZlQi/r\nBwcNOrrqHGTaAlYDXBTHL1BYNmG5ck2/em0nTNAmrkXJBYqZpqHQVr0qWSU8\nzcRbG3ouC7icDnRXqyH/PwIbUtV6cwZRhngNg1o3zQKiPRvGuHq9GTwZMmyR\nXQ6EzonE7EmTT12PPPl6+1e3JrKUEyiwQUg8HPmkDJXFI/vkaWdFP5Y6u5YP\nKm/ME/Gz1xUtrxoM2XckTXEzLtltUQvXFFmZG74I7idqAhcVfyWow+rcYRlL\n0k5f\r\n=29io\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-ebcba6-kh0czu31_1604310431040_0.054432164173696895","host":"s3://npm-registry-packages"}},"2.0.0-feature-4032d3-kh0i4qhr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-4032d3-kh0i4qhr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-4032d3-kh0i4qhr","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a30677d580a45b876033cce029149ae2d0152e27","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-4032d3-kh0i4qhr.tgz","fileCount":304,"integrity":"sha512-kuMnI3utM/Ho5vhmrkfAOy1JgfFncd1dgpU01rCmzWS7/aMyxQGX/0TZOwmyekRX7TwaV+Mk9kJ3Kpcr7pJ38A==","signatures":[{"sig":"MEQCIErdcHSsasabVcaXXM7ko1YK8USdzXCO7IV4RW/lJyHpAiAljw3UXMdqLpqHLklv53pUIAilw5TdI+Q5dvMnqv2MVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn/dSCRA9TVsSAnZWagAA2e0P/3lkj3Dd9+i2lBWzXdT6\necMqk4HhBvATMDTluI5kyj41w5RMmwkJb0uD91RQm6OiLBYfgllopm70mPhJ\n3YYA6skWj/KziH/7Pb/8f8bZMWreKKwGqcRheAU0athcBPruLJUecjrLbUlk\nCmSA4gQyGUx19ylvleXH1jg5f2wnmYwDKv4BzfWG/eRV/oW/UAcVZzkMdq8j\nHo5Pm3Nh+8M+GFBcWQQ9gfvO3UVuRGvjxhAOgqnP2QbWtIXk3rwzqDfhvRvW\niLuYdA7fx5lnlEHLdmlYO4AoaOZbM/kmtDoSiI4lr+szHha1hJXhRxc57ibj\n5TEH/psU+KYyOeiOI3DDMPq8lEjROOtJz9i/RTbY7lvFG4SK8C7xGBkh5986\nwmnLi43dZhSPRzEUEK+xaSFnOTDVmEuEb2R8XyAMGld4hNv+gxax9QNzjNsq\nTx2O5+r76BeF+kVRNXd6rzariYqnfHn7d776wBtexSkdMasqHrqJvGaDUUOl\n8xAOlc7YSAQeET30Wp/I68+XwDVAvvoZBVmD+ttY1MiSkZuNYGreiyIN2uJ4\nzaiHTNwJ8e7K3LZQZiD2ay+OC8kyoLbJsrvN8ty3rFzxdIJINN4z8UlvUgqw\n96qWfQdWYkYec/4Hb4S2ZIuBPHtFJ36Z2FLxAjTs8z2O0Fv97r2riUrjwxVz\nkHiS\r\n=lAIu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-4032d3-kh0i4qhr_1604319057795_0.589720477372567","host":"s3://npm-registry-packages"}},"2.0.0-feature-a0495c-kh0ivl7y":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-a0495c-kh0ivl7y","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-a0495c-kh0ivl7y","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d4c8114feb79a554dfdad4bfebebabc80ba01a88","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-a0495c-kh0ivl7y.tgz","fileCount":304,"integrity":"sha512-9c3rGPaJRhF4zhfT/RMstMYO4Xm25fyRVnhlMd69bx6Nkdg165k9aEstw7o0jYPXsaa6EKEL5nYYF4dlFlxjeA==","signatures":[{"sig":"MEUCIDQPi5MX3/cM3vKSLRObKWQYtbVijNwmUuT5707gCCwyAiEAysG05CsAJ0geCrp7oVc/udVvwtGW3XPymkfe/ScEA7c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532548,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn/w2CRA9TVsSAnZWagAA1/0P/0aauEhKOSZNuoUVW/s1\n7sMppNBrdQPbsB1Ye8aT+E3yw+tAIisvk8Ywuhg+QaoYXSaD2ts9FFr5M8RX\n1jFkum7lE15eZkqH3Q4ZUP+zlQRjLkyt5KEExojYzLku6zVoBXWFNT3W+/7o\nssHxsKZkkg2RqOiaZ+EG2hlEThmEza9hrEHCm1HcbaAf03J+Jrb7kQyXmvNL\n4XS4W4LLtLCdHI8rJ0ldbzpiDCG4K4gSwZVdvqz5ZH4kShORy/mTDDc6IdSH\nxx6GjcHkMfMKVgNd+5b6SgPpuXPJWlUs6qUGSnTNdEwiBzevuXAJDPBHGLiW\nEMxvEEaI9Ogh4gne7CWmQn6x8Rf+z4pTt7qxleoMTIA92xvxDDH0mkjvub/2\nCPTEXjTIVfX3F5f7ytl6exrz3/aLPgyQXfYMBgRWeahF5YKEjTFwBjI+bx03\naeIlM+MeiKuZ8I0YTL1PZ3XGzq2g19f9SF9dtRD+atoyYquJHyY2Ol/9MHua\naG9nPEYOxUq53csni2FPSB7DSBPSno0snzihA0bc82ZjbBBJHxtxeKBVeAZZ\nF5oZmBeA8VJzel8S77MyH9jV7HSawXi/dC8tTTmX04FubS1xYwPJRwarBtt8\nC/mk9pvhEfsAoT9tq358bMIvvwjL9rv2Y0CdcRB0h3/t4Xawzl3WhhEuNUv7\nu82e\r\n=1VQd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-a0495c-kh0ivl7y_1604320309714_0.37329464296651893","host":"s3://npm-registry-packages"}},"2.0.0-feature-d50d55-kh0j911t":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-d50d55-kh0j911t","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-d50d55-kh0j911t","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"07b475d8b9e950bb7290562e326898e289edd3e4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-d50d55-kh0j911t.tgz","fileCount":304,"integrity":"sha512-JC5A5ADIen6x6QoG3edhqEC8ao55sQezSoqQCtuGdYW5f1PKyIKqESiaU0a1ckSFNIw/Q5PoGV60PkycwB0aRQ==","signatures":[{"sig":"MEQCIGrmEIFGj6vY66rlgbJ6PtciDne05H79XUc1rm3gaET5AiAqBYHdEXbnpMbLK057YYKEa+8WKUOaEwkgsJZaqSs4zg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532936,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn/6qCRA9TVsSAnZWagAAscQP/A3iylvGjTyqcznNGXlz\neHiOQ5i3vwaB3IioJkpkSmgBxMGTQpIU/UBt1KbK2HvkhATozO6Wu/KvSiKl\nfLCTT+ydp8Acjrpq/01ekDxGL60NBkTRZwL58myniIEqzGwAeENbeyAHzz1Y\nxlYn/XI5IGDA0vnlIB4D/MkOfFQc3ameeXaRgIxKPaI92tBuNVkJRgdHljw4\nEJq8Y+Jun0FheJNDnZZzUO3d7l9DzsU+qH9ebrJlf5yYMVFkt9XSYvBbN6sA\nrKYZmeAbBJcgNBW41Wm+f9jJP49fZ6tKyCWTedKNtk+8LFxXCOKPUwD+Vc06\nJZ7DuagIVMw+OgaThKtOtr0zRYg4h9wcLP5JXrD5ocMpebdyl7S4B1qSbbnf\nZvbTl6Bm60UiTgXh2qYPCbTzeLvC/lmNB/ZGqMj/KsEP8LSiY2A4i+g5Pn4T\nXl443pnnJXYkd1PVHn+dXv8NmeEibhlHSX2PS0ioI0rRIC9B9OFGtqc7Mvoh\nxKLtsz8OWEpCyVP5sUgmFaugmUIgQ0K1hPJgGGX5kPEhbuSksUapjMlzh0mf\nbAmpiAheYN25Mue2Q2XvA96PdTSoGwTEvySLWoqQpMcryVFsl1jEOvNaydCo\nlhJ2Fh2MKygReHnvbGgSe0IrxDRJTOfrPWnAUcC+TTUXp4Ha9BUfl8MpM7Lc\nUrF3\r\n=lYRD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-d50d55-kh0j911t_1604320937530_0.038051252837302485","host":"s3://npm-registry-packages"}},"2.0.0-feature-593dd6-kh0mrnuv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-593dd6-kh0mrnuv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-593dd6-kh0mrnuv","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"53a736358c3980297b6ab8b83ba57d94530315ed","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-593dd6-kh0mrnuv.tgz","fileCount":304,"integrity":"sha512-gBqzfx14la9kaD6I+9ftl+xV3z2qlXEZPUlFq6annTFBueDUKto02LYmszWdgMtgrlNPPpQERIeFOwN0fgpHJQ==","signatures":[{"sig":"MEUCIQDcs74h37RC4umd5nzTPVpESBCcPaxWbADI68f4OEH5TAIgSEMz3rShb3mhATg2zwiACYINU+9/ZVrCTAqsPfWtzWc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1534254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoBW8CRA9TVsSAnZWagAABjIQAJiIqVuTFqnV5NS94xDS\nTdmY4FCQDSjrGMq2RMKN+t526XUN5KNXWffIx3DMC0i+09PO8SBAasY3g4qc\nXYYmdqx+cWTATlF/sAl6RdOKS71JeL+9au/HfMnRnxi8vFXlfyJtJ0lfywjS\nHNfNcI7qTjIX7nsGYErX/gafyK3aJa0LMyjDuBDUD7pfcRdFueEQ7YeD761U\nAFtNWBvZRDw74gHRq21Cx6w+xSJBYwM18vZfdKsUebT33nVXgq8QIHlTpMLg\neYaRXhNQilUL8MN/u/1o8glXFIFrB9ICswthd/1WrZZcDwg7WVYMqbwf6Ywj\nn4dT41smRrw80eD6VfNLZYmZ0+GcR4VbG0CfTk8iJaNrxSVidlTCIvXoLnAR\nhkCx2+bcGN0Qg4oJQWJ53YWmexGxLzwm/ZUoDWAWWBhaVyOkJD0kUcg07UA/\nMjZcPezNMArAx6MSDNorEvBMU0WWypRV93CWWkpbBpksUva0z0O6Lgv6RYlD\nMjc43jMCyShI2RI4odUk7pc5z2CgcGsniToVY6L29YDd3OwrV23Erkln/fpj\nIKYcqpOw6Faqx2RiNE4OOVn5jfOoFM730GBVPg2A6Jz2nXpADar/eTcax7e6\nrKjxesrfe2TFygzsn01os6Gkkv8xUvLalM6mIaJGAbIDTZ+6HEBt1VcsvztZ\nMbyK\r\n=Eorl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-593dd6-kh0mrnuv_1604326843737_0.5244383874407796","host":"s3://npm-registry-packages"}},"2.0.0-feature-76f8d8-kh1xvn1a":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-76f8d8-kh1xvn1a","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-76f8d8-kh1xvn1a","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f9b4cad1090564c60a5f1a75abb3289a0b66e0d2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-76f8d8-kh1xvn1a.tgz","fileCount":304,"integrity":"sha512-s2dsVAKqYCSkfnrumI+ipqEHaa87CTzkAWcbvQIxGTrQmVkv7zW0tkQIfDiVWKtvl2nHu5YdRD7oAGvus36hHw==","signatures":[{"sig":"MEQCIEQKoZwvY65UIj4XrVRFZqjrjnUuO2VQqBLRuIHeUgT6AiAz+TCmDNC6E/J4dWrYsDtPhhFZ6ZqrG5DIIabAGn89yg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522342,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoUrVCRA9TVsSAnZWagAAYngP/2qlJhwmEf177wQlbmTt\n2rYYj95HJkaQ+CmMHcQLg9Eo3iPf6KkC4z6+NzEtGlU4fjgpoe3H3uEG0DDs\npx1hwxwmRY4DAxYKGAXjoUto3q2i3jffb1BZ99DbtVLJMHHZ2/Ri31nG4/PM\nwaVOo0o393VeS/USLcK7kFvalZ2l+T7Bs8I047jeRqI2vUpVBMAzudo37WUn\nWxr6//MUr6CXsz7v4d8R57tx4V8iq2hPOJY2PEwzxHUogPSQcRja2WOO3czR\n2eumdk725633OaNAAeh8Tcv6ILHVOZO8g9iHgwI8hOMNqC2XUBOP6T1qp/yN\nIQ2WA4FVewQrsHE5FF/ZheUIYmrONfrkN56RxXazv64M86m1Agw/Xnd3m7nj\nfbq1iTGN61/cWCWqgqCROy2pn5wiKc5yMDpEjr6YICZop5qUWEUBy4ekAGod\nOuWi2RtrxLhGY7gTIIcbM7+n69jR3fjm8/SHYrFSFXWYTheIQ4jDqdb/Jey2\nFAWwCoEjZ2kD2Hl4pFtvJzurfYAElCFkk2iC1NUSW5CpZLhCaBvvKZCweA0u\nmyoFEtvnv2dBQTGCyYhoue9iGhLv3oHgtA61pZhqsath0lkHpakJ0BoefeC7\nHSkMjt4HWXakdTdKul1L1NFxTu4p+0IsX9gBoCxXQ9RntCZI26vpMRv8kZ47\nHbBt\r\n=m/A1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-76f8d8-kh1xvn1a_1604405972537_0.6773610713259017","host":"s3://npm-registry-packages"}},"2.0.0-feature-1ed396-kh1y2ozt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-1ed396-kh1y2ozt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-1ed396-kh1y2ozt","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"31de2e7860eba0332dd077c651147c0a4d169b21","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-1ed396-kh1y2ozt.tgz","fileCount":304,"integrity":"sha512-VCxOAQ9E+Og7DHOuUv1S2ftW7OQlj32MVzClPn7LoASbPMGswbsDQv8yJoMbGVpGqkWlic3YIZ7jPgu/MMrncw==","signatures":[{"sig":"MEQCIE55+KZPXn0Okp8zx2yMA4M0LljDtqLuNPkw0uGuFKFYAiB3AsZHwofhWQcsPWDtCWoktlEpOM0ySXP+XVS4G1cEGw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528046,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoUwiCRA9TVsSAnZWagAAAGMP/iW9IPiyUBwidGCKnL6O\nSVlThtrjPwdRkobkgOr0g+bhH+Vyx8UuSefDzl9KDpEiB6Z14TSQKWD0047k\nb6q8q8Q8nwITlhCQl2ugcy0JdbAD/ymcn2djfRGguGV2FWvQs7OkbH9n8B5w\nda0S9TAWP6vtLQYXCwJ0/jAaYwVeWn6FGwEe+DQk0JaRXh96ACyfaiUxQJuC\n1bqJwv/ZSP2v8/HaBetb1ScviJtpeS07v5cew21+/xO6bARUjkjsDN7RNLq4\nJ9XOtOtXz0BGhK1ZKRf7D48NQ12aiE/15QJrR7tS1iIRHUjtAVWCuymHkDSf\nwQKF6RU9Zk9ssxxdW2BBJIj8rXrAyFJ5x0Pj0nMpXBHbwEUhShdcRyf+tl+J\nBvlUonxUOIWtlhTj+NZ2ncCy1hNLnFa7hMgETe4k23oNa+2T22ECdHdDBd5/\nh+MvnNfgvA3SKMg3KSHn59nxm8lSyfYBaLTlPMlvqCbim9hDZzQcYO2Oo/hK\nDUICpjgrKfOAK05tunFLawbgHNjaNT2zMxDWNpTKTaZZr8vqsnNgb1C7ewpE\nobKs8v7Qp2SSYclFA+KZvzo0ymof0TZ8QOxXQV04CYqBdOTlhH2d+SR8e6ke\npHijZ0fxdXCh7yn3vFJVZMOtBRxQFWJV8pIz73Hf6+9KyouYgVawmKb+ukY/\noY6t\r\n=M5Hd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-1ed396-kh1y2ozt_1604406305997_0.9100787207944439","host":"s3://npm-registry-packages"}},"2.0.0-feature-a53820-kh1ygnew":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-a53820-kh1ygnew","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-a53820-kh1ygnew","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ad36bf69c5c6c70ba28f58dad3e8d1df163ace4f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-a53820-kh1ygnew.tgz","fileCount":304,"integrity":"sha512-3xujWvads5o+cQSce4C337tJnpU8thFTAdm2fLNQYp+bERGhedtNXtp5JEMhQ+6dkbOgALjfepJMs87Fmjf9xw==","signatures":[{"sig":"MEUCIFiSYKh3BtcjC2sxQzxRIU+uXPg7m0nRuUbqMZBTsD3KAiEAl56CM7yJQKXVwitv+8YPbhWfv4fXOMfOPxhZ0IgLqLQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1534737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoU6qCRA9TVsSAnZWagAA+dkQAJ1rd8HNlIlEiY+U+ToF\n8GAFP21xiAtkegyiF7A70HuQ2IP5+74f2lf1Z3kDxWDXsodovJOr8LEsWVVa\n7k32JUHGAKj6t5KKDP2RQSM73Y1PdjkE64dqSphQr4GYY8GZS+1LE7DCIagk\narZuJ3avJsjRvIVIy2VRlzIGqX8Tqy3GUYlJBy99IK0UVIcA22CdYWC9gly1\nTowXIEKQIDrK28f4gKbnPTgbR+pDGXtdfIf2toOl/hxhc/MewNn9CXY0JV7I\ny40a/A7bSIW0wjMFUDdsNWGIbHdp5h8A8G9d//aqeXFH+Gj6xS54VWyjDIkX\nE5W+c3uENPbdiKhOJ57uIshYmi7T85cSPYylcwaStKYp0b8JDqHoT6nsNCd7\njkYSrQ7ew7l6oZyyRyFwEfa+6d791yOpxWuMIZmxkhhVfLXC+yRe4BC5XgGc\nJ7uVqq5OwyF10CnhtJZrdEH+7+dZmOhTOhShF4THULptiQSeYznc+kVR249z\nh44CC2gvOD7EQAKphNWADbWotssvtsSS6qvx8AO9YrkRi7DxC+LIdEYq+R++\n+H2pPhnLdqzoWH7mxgduW/kcDR/77HkBQ2jRo9xvlMB08m2Od15Er4P3SNZl\ntNFBkB0/mRfMUQtsE2QMWfWh2p39I7yIP5+Ts7ZD3HnhKQBPoYTjwrMaZF8h\nC5P8\r\n=Xju4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-a53820-kh1ygnew_1604406954085_0.05548322778765957","host":"s3://npm-registry-packages"}},"2.0.0-feature-35550b-kh1yxryr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-35550b-kh1yxryr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-35550b-kh1yxryr","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9afde45fdc8e5180f897f7e7ee7b951f0dac96b4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-35550b-kh1yxryr.tgz","fileCount":304,"integrity":"sha512-9OyePC9w4hEk3NYglc3TJSwNFqZBZWy44mtKF7eIZDDf3JNs+9crSC2KvyF0lpa8mgK4oTsAvnOaTVxKgdlSUA==","signatures":[{"sig":"MEUCIArFw8xybZPZHR5YKk10MbX/Ya6ln0ObEvdcFBH9oyHVAiEA84aWhhHq10n8pPFB8KN1fDGwu4q6gDoM7J8e1CexBCE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoVHNCRA9TVsSAnZWagAA4vsP/Arn8L/DWhR/eCb22PQM\n41A84ADft64EEkZVw2HKOJQ2Kw6Cntyv21i3sHKBByikax5/xf1pB50d+AIM\nWDxUzrqg2uVGAmgPKhdlZXqaH0DO/kJXNaLrFIGq3QJO1pdnKI0L/Bp70XVh\nzrt91UhnGPmBKm51LaddewUcnfnC47YbtykBSVvhhWzOEiuZSH1w9u5U15Pu\nBt8wywhDGMnbWPuZ1QArST0XFwt0R8T5zEM6w8HjlX0cnnR/4MANyM7znsxI\nHoDUWPaC98PZOWzceQw2aSpRGTI6w/w8EzdHqV3apMq5vm0ywOCcKcSyMipU\n3vutpyMx8ZZ+l4PDvYv8oYId61j0ymOsPconEjoaKDdmUPJGh+yPTxGMueKf\n8eKMf3a0GQyz3t4VHwKiFZb3neejPYEOjdtuQAS9ramckW4QAwY9Jd3GcE3m\nwr0ikbbniSGPaOV7fZbmxIThwhxFjVn0KX53YEzAxCLCQaAZqKvWvNmseI7W\nC9BVd4bDntLQhe9t9vTrDTWlXepkZmX+N8mOSNG8WIIMuHPVaQ+aqlkUayOn\ni0szPYrTBg7GQZ1je2AJuxbIJPsNxCSRZs17XBG3EIHSEWaScoKUVEaub3Dk\n799r6soDoIN9cf9QtQL62D7XtvuHEZOzBw1PSRNqnwlGrrYI1CpJTmkYnj0m\nBFAn\r\n=uUT9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-35550b-kh1yxryr_1604407756703_0.24664085206863606","host":"s3://npm-registry-packages"}},"2.0.0-feature-bd6dd9-kh1zpyzq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-bd6dd9-kh1zpyzq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-bd6dd9-kh1zpyzq","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f07198f37a82c149bf2fb6558efdfae1c810dac3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-bd6dd9-kh1zpyzq.tgz","fileCount":309,"integrity":"sha512-8dOoozjRjU7H9MKs36Oh42D6wuCpveN7XgOGx76BspukZ5apkgMl+ocEfCSV4tpzi+K/FR1fOVJiBvTBASB/dg==","signatures":[{"sig":"MEUCIGFUmgquW/O5xdtp84moYHfOS6bLMDoVGTS0VrjgQnyaAiEAkjopuXp/BDXvVSQoDsMkG9FXV9B9GX05GJJnEHpwiB8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532016,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoVboCRA9TVsSAnZWagAAI7cP/AxYJ5EfCkjUf4n3kMMi\nKgGgddbTx1FV9jtQxd9JXEHXUX35YsmKGaKiqfpxUpG4sANzVdG8rQxd+xl5\n/1O/ZO7gH+YW0Vih+bHtFGt6PUqak744A78/s55xHFeknBa84FtfZs4chPj8\nbU1o0+AgLgYjCruwzoW1FvvKCNnYXpjsDIsSxzCR2tV1iy/in4op0bYGtNDJ\nqs0MSKbuNS2bTREFIO4Gh2P3wLv59chrgJq1A6D/asaNCHgZTFY6uwN1ZkiB\n46jHjXj3DGBlOFnIBwYL4juZmA+c9i4ks7uYjuCSXdDAQ5LLkDQM5MVppoiD\nLGlGKG8nMRJPP/Ta7peAbYUWCdaJy6J9F/X6SsJELVBRBbAPwZdOYIH0gw92\nc5gA/Y4vceyHz++AQAtnjZhU/4i44hy4FRs5di9Jy8w5/QBIAX0FRyOsVQKi\nyKuNis8N0cv/mczZMD0BAuyna4rnLbsTfEoroPRUJFqThFM3G1tU+l79B6gW\nXW+w28NSt04oJmCeWHHafsV1HluQSLhJgwRYLLCxRDP8F0Bze2ij20zXWItk\npOJ+QLdViu2NppP+dflTamutVNwvnW8coHcdWqaz06yhvVUczq1T59Xj/SZi\nSxYmAHb0M7+M+ljbRDRfkaSiclqyMoYk4kFJA9IsSHMa8QgnSkZMjb8kuRBq\nZlx5\r\n=WVFA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-bd6dd9-kh1zpyzq_1604409063857_0.3741393455713282","host":"s3://npm-registry-packages"}},"2.0.0-feature-c5bfc4-kh20p8zt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-c5bfc4-kh20p8zt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-c5bfc4-kh20p8zt","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e38e9aaba4b1c5a9b0f2713498d9b37e9c565580","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-c5bfc4-kh20p8zt.tgz","fileCount":309,"integrity":"sha512-PbsKRvuQ/6NWApGiMls9uuJp/6p+kkCsbXTl2zPIXXo7/zzTpnWwx6+ak6aBSI+lNPYtOEALwN4+jzduS4XpkQ==","signatures":[{"sig":"MEQCIHD1620hrjEXyaQDuspbVGnoKkLkLayF8NCfZ8+AI0GqAiAydLvW6JxxjrUbFVT87ZJ95HSS75EtApfnukQfrPE1Mg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoV1cCRA9TVsSAnZWagAAj+EP/3uCA6DrhYP7qnbYtNdq\n5/tIr+T2OPLgYQvZhwB4cH2Wow/P8zIYTVxlpwGinNdlgaKPt7Ux6hAfgbcQ\nK/N0qCCKCZpLt+lTkhoJ+fG4LUmwJ4aAeLz+t3qmNGWT678dywbOMEwGIZGn\n6wWWzKcCGMnGR7WLdvppQS/waFb1XqIP/ODotYBXDqCcrY52db3+fdbEN5Ff\neIPENG/T8VOkYNQ3I7XPsd1hIwenatZnv3Swhvj8VtVDzqLHw3Q0rRt1yDpJ\nx1F4+gCgQqhgIGjgfWrHzQ2fDzfVGZnWoK/WkvAfxJjxC/Whk2dRP1Tm7pTl\nsoktgF/aplICsEVEZXw/65WG+Q/RFciJNVtODpja1OLgecEp9Wvhq1e1A2Je\nEt1XyegfZHTfQai49tUcqgaiZw/Amref1EcjSZqcQDAwFGgYggesjlpY0b7I\n763w/XOUjH0kYNHATOWvhGZZF21rXcAxv01BLuovvxYWfTWyi1yMD+lwIevZ\niAezoAUMsdznvrcXjEyDPIu6KSErZmYdmksCl5U6b48pwabZw7ek7nc6LXTR\nI1qs6JrAXGUsmm8vXVXsSVVkJfDNumtdBYCSKPqV0FfhV7XoWg+ST5R3zoTD\nT17uCUvhRkw0yLRXgUR1Uew5Fjml0yoVqrzLuVbjXdzLgIvdonhsYIb4LD6F\nMCRt\r\n=IhrB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-c5bfc4-kh20p8zt_1604410715547_0.9415154518107252","host":"s3://npm-registry-packages"}},"2.0.0-feature-885772-kh2110aw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-885772-kh2110aw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-885772-kh2110aw","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"538173236719fb1b57be1266de201e60149822ef","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-885772-kh2110aw.tgz","fileCount":309,"integrity":"sha512-J1usugNW4FXYkaLMNsP0ELpAyVmAxHZDFA9RIDDM6EviE/2fQQu1Yzf59rCD2/XPDCJU6PdQnAHZg0qcVD03og==","signatures":[{"sig":"MEQCICnZLSZ/v/SoGOG0O78NR9WhhuEbYOOfO6mnRJxWUNezAiBI8sYYUC9tHuSS/ijW3xYfwmvnzwt5rRCPdi7QAJ+HhA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoV+ACRA9TVsSAnZWagAAdNcP/02m7aRBj2gkpkgDt3Mu\nmw9+MlbZiK2F8ExGCczfy8CenHuoaOfKCm+vN7RdZDsR+mDqA+J9HeFdUUsG\nSUpxD7Y3FP7j5AJDwdK0YW/4mHVA5CEzek70ML95yXEiNpM6oi+8XZJ0ND3R\njsp0MzNSfKQ3I2bIcCLIHoWqc+8SvY9D6O0aJ6sVSv5Fpd0D3baPya8Wsgv7\nEZ2r+Z25a1qnnDDoyEasFml7X7t1Z+gCKb+QdnE2GBmw2wEVNjfeNfobx9mR\nDePewcc8b07RnuHj5ya1RK5mM+8LDvkPSFxvNFwKxd1hneGuVdC0u2Pt/XKS\nR/3dXGuvjdHU2RNmp9w30oYQEsdOItaCpEL1GwQWTfV2dZYX0trxG6p7cmX7\n07KvH1+pda1br/w58kSRRiSSzJ2zXonnU5Cv+V9FanAFk5jEhRxktvVbY82o\n+L3dvpYXTefUTUppmbLJ89bRo5mvRjnOXLDoLitaI1T6XJifnTuC2OF3tjQW\nCV5pk9qZmIEbWuNS3YPMsgEV/A+8WqxNw3cCsYmBE9JOShey0wMSSz83xEdL\nNvwNnSjP4VTES3p8n9PucACNPWv2B6gGmIaZdJ/Hz1KRdjnCOHaew/qkNWJV\nIUBh9z5Xm6WH+kTEcuAnJHM4OSVZA6kmcNVOz3WxbOOIHOZBWsHOsFDc7oZC\nH2FV\r\n=Fhyt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-885772-kh2110aw_1604411264211_0.9547779752785572","host":"s3://npm-registry-packages"}},"2.0.0-feature-299f65-kh22w3co":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-299f65-kh22w3co","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-299f65-kh22w3co","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"71f289413957a9c28e329698ba7cc6aece9e8730","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-299f65-kh22w3co.tgz","fileCount":309,"integrity":"sha512-O+tBs+FUvAwPxK46LpRwk6N+pQxR4yQiGv9OEpINEPH99EGY2Y9AOoY8kdfU3a3HcRuTGbP2fW7qjncWxzh+9Q==","signatures":[{"sig":"MEUCIE2K0CIhalnLO1jnC1O/apgpiYjMr1rR/Luk7cyYvya8AiEA+GCHx/liq86dnDmzimpJwTZ92KD4zqvOh8BA3PTJ6ns=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoWu+CRA9TVsSAnZWagAAOLIP/jCyFDJNZwX097XYZ0x/\nHH5qDVUmNlf2XMVdQOGXAGjtRRLWQ8E9oPxYTyOSPrV3RRCIl8OIJyk2rYHS\nBXvh/cFFYrdAUSuSM/FhAVy0rAeNkfHt/A09W12lOh2xfRvNmsFf3vnLFTHV\nx91OmQm/4NKxULBZZS7JBh0FeZT/E+/EeyFWZ2XtgD1D6TWURwVpPXC1LclG\niCqrzq0d07FLc0wG2k5ZwUQDfNYeAeDdGO756oWIxMyp4wgNNPMt4ZwN7meg\n10ZPPscDq8jXs7FqepUgtN4a5y6gLWhMkHsuI1hL7Qe9CWezjrkkUBqmB/8h\nuuOu+0an5+h4rZZTO/tyCx+KAGXYNa+Qw6jPscXEWVemQgm3VF90cU2XusPE\ni6Gv2UO9tvSlzFDGfMXdtJRdOZ03B8WkT6sky+rzhlyf1+bLsGG6e7bPrzn7\n1cbPHz9kSH3PL9LZaETPUXfORuxoT/EYcqx2QL4STnpERaswYxPDCGs3SN+w\nBPs7nfYT1zZs1Yvj5GS2aM1dXKBaXuMr8HUv44WplmPNeRXJl6OLdYTH25cb\n/MFlUfCzlRead0iDRcWVi1E6+FYxg6EVfbBn+/v7m5VkV8ZqMquLzwbQJYTA\namYb5i0kiYIY1MDhNf2Iav0d58/exddDFX5RONNwhaDwnXbO1UhZtEBQX2v8\nQZ93\r\n=YO5P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-299f65-kh22w3co_1604414397471_0.05363320360706525","host":"s3://npm-registry-packages"}},"2.0.0-alpha.24":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.24","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.24","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1302ba9481d0e6a83ea5194631c7f736982d5856","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.24.tgz","fileCount":309,"integrity":"sha512-oR7Ki4oo3oeJipiDGuxl4P2BwFJDNjbH1szvoujZkupaZw907UnZigUngvXtJVldeDZRk7m4EkLVNzEMGT5MGA==","signatures":[{"sig":"MEQCIFlga4ImRURv1jR9z8EZxasW82i4eKiOw12W4Cr1Qos3AiAuPNXJqNgEQz2FBM6/UKfot9I4lGTe6Qmv+aWiMQwzZw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoW07CRA9TVsSAnZWagAAzwcP/jwSHJU5AhfvU1OR+f+B\n3ykd03M20QzTDgZi5ldLspAKfwSLbn6CeB1EfHBVzE6XeWvKGuEw+C9W05jB\nqR6w4Dbxd3ie+5CCbQpmlZkvOEqnOVGndwLr+/qhBw512jgN47Sajso6wIHb\nclCHkOltoj1UxxFd0+xqlDIl0s81AXno9SQwfWs95NRuKvHTXg2DbXa6ccKV\nyLZPk1tqWCVYNKlwN3Eol33Z9yQv9BOaMQI5TabkdyZU5la075JyTOBsMb/b\nUXGueBecGmt8faq0s2FISt85/tJbh+rUOaECLbcrvb9q9yqZyQafMYnnaQaU\nNk1wy7WOJ5O31sMiC29Vyy9B8hqCHOXgU004D/iw4tBgSrLMDz/+dPpu403l\nUxHxd0ad1jmNZCtjsgrhR5mjPHse3vRgjC6QpJIzUWb4yukgFZyWnTmQoiId\nbePWj/liDliOnHSqqejlJr3IuTOs3+wVvnhJ05OY/urx7xpm5DmQxcFs8kdT\nabYuKHUAOvdYNnWzlkn4l20WM+LV+Y82zU+ghqSOYXwOFDY28pPCDUu5Jv+M\n6wpGb794N64JxSw8x+gP77uREYRRIXlsDl5aEnxS8gJBRQvZQhxD5ZtLtabV\noDYdM8BCXYubMej1C2etlkrhw4nB05qZLTSAcTm3wYn4CCf+BxcU7d0tu+9S\nW1gD\r\n=x9RB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.24_1604414778567_0.6035669971442239","host":"s3://npm-registry-packages"}},"2.0.0-feature-ade7c2-kh23rrqp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-ade7c2-kh23rrqp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-ade7c2-kh23rrqp","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1d6fe90f0e8113701866933e421586d703fedbce","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-ade7c2-kh23rrqp.tgz","fileCount":304,"integrity":"sha512-lUeb/f2JNl6VXBQFsMy/KFkC1ELQKCFotWyZY7TDy7J1Wj23MukSs3QXCXA/MgBRuBDRsSyM1dp2McT+UeR4mw==","signatures":[{"sig":"MEUCIHpUM3Rv3hdNknjyYXq5FfdhbkEiqdhjR3wL3mq2e3mUAiEApziCeIEtis/d5uIBBjANlktjWKzuQbT9VD+lu/ykuHU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoXGACRA9TVsSAnZWagAAhJsP/RwBxs+2LgKIXLp0P9bF\nY2GqslcAHD2nloWdcL66jozzgwyjFmyqagbO/BIohc5G8MTrii7w6f5wKHkZ\nOeINTNdiWLvowW5XyWquMj+qdVZtuqj3RkG3jLXz/nU1503iRGaXIDlvh6fo\ndane/YOTKed2RsQsP9hvPM1NRNnKaSIvHSWgydziVFbXfSby6tRUPxoL1kjA\nZ1zYflEg3JbkoZzkNM2atw3Nb4EdT5/7sxkEZK4wpyRUyY1eG/p9bKNDr3eI\nsCdGwvu/6BAHnOJ2qAmWQWiPfU5S3Zo/HK4jUTEb0mSuf4emAOQok/ssrJTh\nMgiuriR5ILRm8YZE2f2sgj6+thyWm5P3XHy3NjW8a6Ri2ve8729a0+2UlYYr\nxKNvKAWcqujleAAwvcs6lZR/ftH5NGmfZdrv46P3sGT+GlIy7tW6jOkf7Adp\n1J/hSdAprCxDcOqZZT+2IN9oy9LMGp8W8WdRliT3Dkr1GteU4SRnGUEJo3r/\nPHy6zapVoO7KR1yLOM7/wfrU4Gb3ago5e+APfbc4TfnvAsqGLkZM0A5XC1w9\nadSuCbiaKHlvSX7zao7YluqAEYidcfiOYBfUQ+jzGfLeGiZfOQGuxP+1EgJ0\n0L5PxFKdntwyB3OzCrNu9vrNzPDNtmsLzqzY8fZYo8fxUtYMCcbI5V4coX+k\n++nP\r\n=E7GM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-ade7c2-kh23rrqp_1604415871570_0.4535319719748556","host":"s3://npm-registry-packages"}},"2.0.0-feature-231490-kh241vyt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-231490-kh241vyt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-231490-kh241vyt","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f19da4f4956e64d56dbe9e4305edd1eaee9027bf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-231490-kh241vyt.tgz","fileCount":309,"integrity":"sha512-SJ4c3KeV0iYZJOdAlCCjBrvdICzTB2v+/DqkU11Cwz6eoUJFjjM4rzVMiU3K6rlTKpCMZElgvzDmggNCYh6omQ==","signatures":[{"sig":"MEYCIQDvkY6/m+WIcFT2jxNbbFjNcsfaK4ce8fIqBtjuetYfjwIhAMmDDxXfVd6qtOyY9u90X5uNFyIHAFvEXAn/mIVdb+AO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoXNWCRA9TVsSAnZWagAAxIcP/RiVZwQyB1Fwbwpx1iAx\ncZQGjS9P+vAbPz/hz3zI7/+f+A8cuKlyGYFuK+ZCXq8C6LllEcVKdmWNhU8K\ncjT7wuI87dd0qY4pP0qTs1brLNcMqBCqc3bwQm4fZE1dDt+x67yoEKUAae2s\n7rK7wgZjN4/C0MMK1eWB7V5TaU1svfObhiXE/hMM1tAJ8yJtMt509bXim8Au\nthZbwJvZsH/mZm6fMbbZecRQmQFSPYb0vW/IEHZlL2RSDVxy+NWURZvcdJw+\nxjFBpc//dzQJfC2j7Im9ewq4v1pVQhmkXt4iDU1OUqkwRMCc91EcBDFlO7V8\nZmOO3EEtv7qAQH57Nwtx/ghRTpAIqJbyK8CMSQEYDZypSNpHJAoIqxsbOaxE\n2pV9Ptp8X8pR/s/mR+VAj5UXmF6+QDOX8e5iClnpxfk8O3obfujQuxG8H2IB\nLyDYmTkm1cXEbB4kCu+aizjBFNR7XWYxR2urdO6YznEtaNTafXosW6SSyFmm\nNHSiX1BKjucQddXjZb4NW64/tp4Lz2fQMI1qwPlKZQT5rlZ3TpdX7jLNQkPL\nNI/PK/PIYGKzE05AevLM6RUij0Yf9vOEWD0neLpQ0lqI/5YEef/vt71FHNGv\nP0x48FlSlWY+8+StQazIK2Dvg6fZmsDMucQ/F9rg+IFidqYbR77ceQujia3d\nkUXS\r\n=Bd6o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"2.0.0-alpha.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-231490-kh241vyt_1604416341992_0.4569598421333354","host":"s3://npm-registry-packages"}},"2.0.0-feature-819a74-kh2427iy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-819a74-kh2427iy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-819a74-kh2427iy","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"41484581e389e02423017b4326bcd6139d5d78d0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-819a74-kh2427iy.tgz","fileCount":304,"integrity":"sha512-CbjVYwOkkgLa6/z1FTMozH2UztxopJXQB3FxMDa4+QiMO7XsyzKoxbG1unZY31BWujJ/m0A4/msOsdycpU5U5Q==","signatures":[{"sig":"MEQCICiiYotSmOFKiWb+0MfyHnwLpyDFZLLYqWjzDPUHNrw9AiBaJsXZS8XFz3A0lujatN0pDApC7vd6IxUhbNJVgxCa1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoXN2CRA9TVsSAnZWagAAQB8P/A4oOD5ACrLIeO35AXcS\njXg92vViaU9jnSfyKl5kXffUHhghuzl8e/gnH7E1hLS6B3FK+N4QgHSMqP3Z\nsNHDWmLelP14L580JuQ/C0jWlLtfQQXd7HPto0e1dHgjpKoWzJDA2nfHpHaP\nklvtqAtIeFOqoVBTpyCoZSqoPNpHGaLtKM583HYGAfJJr/L5r49gX2Mkj9+S\nB12MzVSKjM98iOwr/kgP4xqHrvqfsCLEvb9FBDJMiiPnabNljZSkL5us7xDk\nup1ezUV0CBF8nDA0vb4nR5y+nClek4+C/wDDEoLUNGla1ia1eHM/w5MD3rkZ\nlErSnSM+xrJi5reOueySViN4vkvfyMpD85ftm/pFAn4KscWntPnRybrfutdY\n9ZJZAggTA2/FDhqSKVtJDezgi25RM5CeykT/YD1UegGKm51M55bzBPxskOi/\n2ruoJwAZCKSyFLlmZhGcnHPHhvpFyTt1rmGtThRnz4e+TuwHyVkFhd/0xS/H\nsXhDt8bmHZr2paqxOG0NM7g0jlMYbluyulXKK7FnIk5OWq9bw1akJWGu6psZ\ncWB2UgPf3jzqXaBaS+1RaA7sV3EmRQibSe80niEU86grFC4qolUXWqwAPer4\n+Nsyh0UZL2HFbvKBQYvoOsd5RSLssQRxBRI6EvdcrtGj7Bn5VsxzZuxrfEKz\n47Zp\r\n=w91D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-819a74-kh2427iy_1604416366834_0.5751580097622537","host":"s3://npm-registry-packages"}},"2.0.0-feature-b2eddb-kh26woo5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-b2eddb-kh26woo5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-b2eddb-kh26woo5","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"31efdf8a1ed56aaddfb390ab1f9fc177f129e7a4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-b2eddb-kh26woo5.tgz","fileCount":309,"integrity":"sha512-zcoiBaixEtm2MlZwDE6bhuO6wWcdWsrcpu2n3gB2F+u9Yof5vZPWnguaorVgp8HbzyxNafmHvdYLY5Yko+VvDg==","signatures":[{"sig":"MEQCIATTohAeCtFHak4sAey1FaoHw7vQ4OO4Naclx3HN3qLNAiAmxC5Q2syKcxBhWx2a+Cq1sBT8vwOvSu/F2Vrudgk5ww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoYYTCRA9TVsSAnZWagAAE98P/jeQOWJYk8XYK7+dOeBY\nVIwBr2VUdiqJAJabhkrZGEI8mpxBtvLaVwFG3kBOSaMY7hAuN3RchXY70ur7\nYFb76fFp2/u9BpEX1BZp97Mx4zR8uqBChyyp9kDpGKWfCvTbmO6uPqiU9oiY\nOCeGHDfYl+tYGM/D7WnqvAuR8nEGzgZDHBx3Yt1Qi00qEvMfd6ITZL9kFYLk\n6zhDco0vUYqd/as3trh8tIPswQWC7fmKwnly81chCFtui9bOMv2mXHMzUQ2z\nJbkkyhzmduIjIFwA4ycE8tC3PCE4lBJ/udyrA12NZA3vy2wnBtx6AhFPq7Rt\nQoq4N1oYhqASTGVs1i1uoB+c2ufSWUPpCDtkLoQHOZnIZ+ufOYxAib+hYmTW\nkYFVIVtX64Ty2YuLDKJVNVUyGcTIuAFaOQgV39w0uA0nyKVklVN1sbiIAWw+\njpXybEPiV+8vq+1fkpomlNirC5+Yj0pkv8ItW+eZk7Vh/PHP9htTpGgAmJ3Z\nmUbS425PEEZNlMRtCWDi/umWXtEv0te3dhwmVCWB3bBk9ROTxN/5GJUax4ic\n9j3qsPVDGk12hBDIY6yQvWQOe3IVCWV+/vb4+aNTJovQVyXB+3AGc6SmmJGQ\nZUV9GU/UwYMwfDRi3P9bNc1bsfW36GPH9EZoKuCbS21N0vX8EOniz1slQTKY\n/i0x\r\n=Wb++\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"feature~remove_event_aggregator_from_ioc","@atlas-engine/core_domain.contracts":"feature~remove_event_aggregator_from_ioc"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-b2eddb-kh26woo5_1604421138743_0.47076977713748347","host":"s3://npm-registry-packages"}},"2.0.0-feature-092ddd-kh2aqd8d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-092ddd-kh2aqd8d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-092ddd-kh2aqd8d","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bcd97736e2dbf116ce26ac839809eda084f6bfbe","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-092ddd-kh2aqd8d.tgz","fileCount":304,"integrity":"sha512-IwIIOtFNab4jX5m6QE60CKgZqe53RqL6Ra64Q7Nb0sGKyVhNonTftqlV0TlVOtmHT4pYGLU8eul9iqmt8vyipQ==","signatures":[{"sig":"MEQCIC1/Jx8uXJ5PERfD6jZQVJJATrfeGcgn4zSkSsl5R/34AiB2dxh1KWhY/fYc0VxxyAW8WMt0pXsTTttVkYjueIOWzg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoZ8qCRA9TVsSAnZWagAApnoP/i6WtuYbhcBQTuXo/N1X\nEC/glO/+POKNRnEvjH30WWH1BouFU7OyaAPVjp/2lcpXrY2aqoykKaSA4S0m\nxAeCCFxFf6QmlxRo7By4ay5so9bsX0PXvywu7bCJiwNhiED+se2zmI01PcGo\nrWxjnhJ2/Evn/bDkKo3mDHj4EZ1d9XkHZdV32firx3LnPctGZQAjFEmxdY5D\n2a9j1Hag1NRFE8PbmWD5mJ6RxDlj2yyIgcvAIc2YK2P8hvYcHrfAjwkHR0ME\nwlPxzYLEfbnD3UKND8dYna/IdFWzY4cZ1H8jEBr5wqwnOCBA4keFN1LKxnoG\nlrsnyZvDn+DAZUELWanJauj+XGr5FoE6c9jpv9xcTpcxJptwFr/2erqvRV4V\n6hDNXIZAknGHoE/fc+lqkqb+Oq2v6hk6B9VPfw0N5WuiG+g/nvWqdZfZUJm3\nVe5KleVnG21iG44UbC5Gbu8H++UsimYsNN9zpNEif8Aoih8fLREqRgivUVIn\nJKScjT/OcIU61dREDhtwCbQqqZ2wyzvT1sZHyfJE2e/RE2jXiULNX5AKi+kG\n3aU7+PgB/5BPly5SeCq5DlnIIDt6QJ1hYETI2RzaN+ZNFbA9fQpB//8UkgU8\nnJ50+BaKZjXLc5HTl5r+dgRKrI5RnP428YaEHbo0+Ew8za2cIs5m1lgwpYT/\n1HOU\r\n=4d/p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-092ddd-kh2aqd8d_1604427561154_0.39088996221227723","host":"s3://npm-registry-packages"}},"2.0.0-feature-56316e-kh2brewl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-56316e-kh2brewl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-56316e-kh2brewl","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5d56e8db823bfdcf53879cf09c418f02140ad5ba","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-56316e-kh2brewl.tgz","fileCount":304,"integrity":"sha512-MtxEt3F3pxuxnbjClMRshPvO9yNNj36yGwwzEYHdydbryfh6ag8eJQriZVbcivBfxr4Hf1+bFCjTZjVVvsH7qw==","signatures":[{"sig":"MEYCIQDF0e6ARH7WrS5sGtv4t0Y55jCOfCFhcz+9iPVSqNP4EwIhAPyMGXQjPaXVaeyUa2SXeNHI70FWdO7mw2RXpwqKNM68","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoaXrCRA9TVsSAnZWagAApLAP/iHlZP0Z2mQU75BmG6cs\n9fb3zgH7FUuGU6zx122Lyo/l8EqYWonOoOYtvvWc8Vesd8kYXvMsMw5Tl01R\n46V9ayoBNVXiP/m845ERjLcoiKNI9IW77Vt9xqOVp100YFAbjJqwE0QBX0zZ\npdCcxy0UAUdqkEOzUYKo/VliAOUVPWUDHOntAjg2wiUCEC/44pH3nodx00BW\nxwaVTaSrk2uhVoTt68H/LRRw695F8HANP16X/KtTL2RoFyFchni2fet/DMWL\nUnxyM+e9/ToJYZWExgSEI5eMVWamiAcPc/R/dty3DevEZGR6mkKQ2fbtFbew\nVLHViKftOvz8I547g1pd3Jp79bkdjRE+saDeeDJAAM+nwTfzW4Sk19pdm7wh\nVXEr/MLWuYZpVLQ5kpYfdEOodHZaJoEUYwUb+pnf3Q8jTaGVxQt6INWH9FiF\nQNroYw9gART4dsjAeqNLf2QWgtY3ZvL3cdcvdlbLnZpg92q+Df+FYb1/1Lir\nJY1yx9rhXyCRK9YiDemRqWnka3tYYbjCWgnUYhBTuI4P/HzaXDdFO90H4Ujm\nS6mXoa+FChlnua9OkLwKBnaifO/EOjIz4KALgTaZUU832SET0FZD0nSs7JtK\nlgH5+iSIS+gOxZpF1pDqViuiqhgXoiVbGXH6ShT+JAtBZnWTJGcm8+RKJQW2\n4Xku\r\n=05kB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-56316e-kh2brewl_1604429290498_0.684273179616999","host":"s3://npm-registry-packages"}},"2.0.0-feature-1f419a-kh2d9kvs":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-1f419a-kh2d9kvs","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-1f419a-kh2d9kvs","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b519fe35eae76d0104358f00ce6a08ec9307a384","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-1f419a-kh2d9kvs.tgz","fileCount":304,"integrity":"sha512-YVyDlsxRNcyF7U1YcqPDmmsIUrF8eWF4C0I8og0Z8im+9fScHfbSDYSg+8HF4ntpV8rfd+qQNhyJTrm56SqTDg==","signatures":[{"sig":"MEUCIBw2EoIIrGQMo4I8CUO7mYGS+HLnXl9iCVcl7FygDkhdAiEAhT5uwSM5rKB93xAEAtLJ3chHFBqnukVUm36GPcilcts=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoa/KCRA9TVsSAnZWagAAz8gP/2OiCwQe2LfZxsoTVPxG\nVs/uoDzg7E6GeWnRJ+xWMGNoW6+dipppiC31ZljLnD2R7O7KIg8KCYAKaAem\n2fOTkDP2K93Ap42mP7EKfi3m6L0IHfz+SFopdBJ2BJ62mpZo/u1lQjAIiaFs\naRMGDCSbE6iCPGIhxvzF/FUmeFqhJCV95j+qh0J6lf4xLUeHUx52L5JRfM85\nuFJKaWOJ5YW/aFqwOc20T3jfl5MuDdFjfy4+02AT1gZ00VUyYigQqWmVPFw6\nuamlf9zBnIBKiEznbuKSdg2lY3pPAcfaebPLsHdHreeI8I339ovAkwnuJTaN\ni9tsxolWgEURF8unCwIGPNg136pYZLtYTbDiFDFQByBnwITKouZ5xKjTWMUa\n4hYJfhrvVb4S9T5F68uS5I7q2yiIpGEnFjIlrRx+lQcXRN1BDAvKaHe5Ep+M\nQwse3BU7RgIONkEx3AGHXLnq5hxMf1iBRXpjfgxPs528mI39N1VTXNlptfCK\nDrwZ1M2suiuclE6ASBhNhUZ++QR1Lysf/ShaLXzEblOfoZX9mqnHZ5F3MiTa\niYN5w6kbZzFxjKpTEJ0cXO3u7eugSXS48cC5DyDCJ/0rMKl9LN3U8OUVHUwr\ne6K9L9AWHwmkvz99ppCco5sG1FPx1ZfhhfCcGOcBVizciFvfTqhkxa59E0Vw\n8ZrB\r\n=cjcF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-1f419a-kh2d9kvs_1604431817800_0.7386311455106367","host":"s3://npm-registry-packages"}},"2.0.0-feature-fa0fa3-kh2dcqzv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-fa0fa3-kh2dcqzv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-fa0fa3-kh2dcqzv","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"01522a94b34c52adb8f95ee70913a113e4bd24e0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-fa0fa3-kh2dcqzv.tgz","fileCount":309,"integrity":"sha512-J5YXUqo11oegL54Az3rrCNWwTxHv4gv8Z1iuJ4sGOt4kzPKI9y9duKrg1K6dUdlLnKc0G0aT5gE36z4XCa2ibw==","signatures":[{"sig":"MEYCIQDlMgef0UONzsLb3XniP8MnImgFXMn1J9g/6kQA9ZGGCwIhAP73x4bj3nKiHj4ipSzdzuAMUPRHeBZZObHtnRF3bpG5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfobBgCRA9TVsSAnZWagAArEcQAKL0q8klGwr5hTh4mH1q\nuyDi86bfLKn/oCDtW1hl6ARID7WHaAa1/ZMJA9uNb5fMbkdVCsyN7avmvZir\nyh1WnMjiGdHdAEznEm1YP2zwIkvQk0sv6baQaqPS5yApgqtoItaYN3b/uq75\nYEm3+ee5ftijWLC0GCVI61wj/sIVqGI5419pAdkblzWF4rWY930OPBEzL84N\n8jtUlwEsLxxJvZpQcuaHnibEIJiD8VMI99BUY3rJGSV2VRg2w6XWiqCwSpIq\nkLwi37PvQLvhX1QecTQbgr7j0WKIZjQM7Ne8ik60qZTolauKdb9/RK0C/nkS\nbAqQd2xr5G2OAzJJ2edVET5ssBT1AluJ3NQx41I6/x/eumyF3bglgFZL/3O7\nxd9COYUC8KRqY2tmT3f6y5iGTvUoB+qrT6RosgmkPiJbsL5LtKFr0bVSYF+Y\nZe+OKup8NUFk+jzmFo3jYlTS/PTNdXohJ/O3pbqvbf5F1s/FWcoM0Z2DtAtP\nWDxQD1A6JJUIZIzBSUfDZpXUdFsxwVxV6/W+ZFyVTFlxzvQ4VVakHfLUpapO\nF2yArn5FaWPisC6tvvqaqgau8L7wgZFt0qBfBIyA+bAFpxWVFdKEXvhzHryC\npkr20QziuKyHAwcIefsPwwt/Wjr0cDYoBz03oGjuAA0yavNgZPk760/KYUuz\nbNTu\r\n=qSYW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-fa0fa3-kh2dcqzv_1604431968366_0.8537420059167213","host":"s3://npm-registry-packages"}},"2.0.0-alpha.25":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.25","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.25","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2ea89973d9fe28087158fb8aa8965b944e361a2f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.25.tgz","fileCount":309,"integrity":"sha512-0Xe0eMTa8frExp14Mwi+FqgsS7HUwJMSMeHvRuyyhN15FICBzGFKNX/JLnxUNrX1BmCCnfUAvLecf369pvsO5g==","signatures":[{"sig":"MEYCIQDgNr7B5AkrpjOVCIcjEBh1amGde2I7NUK3G6RT0iNLcQIhAI07iu4g26zyU5yJ+sjiAAlXesAstDfcAQN9SV9vgZEt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfobIRCRA9TVsSAnZWagAA8TsP/0p9zQ2So9v3BdsKeW6u\neKmdgcKbjzZgiR9Btd/gDIzTu+KPVeL9UwBUVWMEp5dEO3cJgygv3CRgXgs/\n0QvNJKwTJZK8M5try70tb/lsg+DAlkKGkN77oVKpl4ppNjoeFLvzN3TKcNVf\ngNjjSBkLAv8hIWrQnr0ZqM4yqK+BlzjyUmcoNQJ819IEHAS04yPwfu9mfP1C\nOwO2x1MY67wPiNHPvh6XQ28rIsv1upLY4S9vS4UbAmyc7CYinJOlJelZjrO4\nf7LhH5ESg3BEQY+8JI6v+WsKIWGxAY/uvoVTRPzK5bC4cmG4T43UIUPtvZ+F\nLd+mZqrxEZ+5uGZqTN18usCLeP0yDTm8QzaGRdB3vhVl4+Q1Dj8S8EvO/o29\nLDYeQIWs2KSe/P4JU6DZ/5SVu64cyQFsDZn/hsiWaSnScW9m3VYdcWLQ5PSD\nkng/spaAj9l0BU7nY8AejdVo8Dawp+h4H6a03mtmaNDj1fN/nGG/ANi1aDj2\nJle38cjG3CzASuPtZvkMJqwZBwKwghOX+7fdQCSh5hZKYmq0h38U1T0b2gQz\n1OpYdGWyrymVcpzqECe6aqo9KOa0nv7vNfPKv2IvaR6LyoFECCMmQfYCczz0\nz2QkDR1gAh77kEHhgsEowP/ubszIMQFORjwWXrqtx0N2IJQvFBfSiGGQbjo+\nOGKE\r\n=qYHC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.25_1604432400549_0.5170929372888902","host":"s3://npm-registry-packages"}},"2.0.0-feature-c38be0-kh2enoqo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-c38be0-kh2enoqo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-c38be0-kh2enoqo","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cce8e28f394436893ce08d92982af70ea0f2b652","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-c38be0-kh2enoqo.tgz","fileCount":309,"integrity":"sha512-ZdwBMGIuz6+eq6ayt81tS8Za5hF0CQe5PZTWYkGzuWlzNNxhSEJXlZc/sSGjaf+5ign0XY+TbOwBEtKYNsw2dg==","signatures":[{"sig":"MEUCIQCKmrCpLE5zmqLYkFvK0w66/aCS3Kuv0l1pNZ21fgW3rgIge+gUTTcq+4E4MrDEc/XDms1iXCVNSPeJmp+FQbztKT0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfobjvCRA9TVsSAnZWagAAMlIP/2NF5A7vjvdvj2GO5UyK\nnACo8+Pln3gTlhGZ3MAhCeNNpxGvl1d2B6lLQWhOotxo07o3SiZ/JcFRJN8i\n4FQoipPC0xdeRpG4Wm5qWlBsASbkXx84rkJ/Nxnkt5jnFwN/FgPcufTmfegT\nNOz14gySoOn5Tw1nrpqrVXewHL+iLmbPARpVKpY5VKWLWqJQBXr+HxDDuOJp\nIfYLRk0b1mNd+ywY8ssMJA7u1qB12/+dma4Je8UAframXhlNj2Eeel8iTH/z\nJWl3Q69IgSD0dlJeEXorGYAXfDWkDEkfQbeghMCaGLLjfA/4YhNW8T4X56cN\nY0DlPztVG2nT3LkaRBYpP8PlYAfC3terGGgOvDdhoMTaP0p+CC8Zrk/pakoL\nO+3SnDX0xc4MHWKz7eQGGBpV6KD/Ec34T/1YjaneyEcmOMZGoMEWnB7WUMKO\nkOlo90PqQ1o0GluW8UUWgQj1G1gZnuatjtLe8M7GBdALq8ejZpua4+Tpm4YZ\nLoszu1tkTQYcTGGZZnA8zMSKMON4QXfFjyjksC+yrMKrEcpHJOOQjrgjdMWP\nmAc37e9803H8MeyrXbuCdCOCJNj/PajVReJLiztg/dX0hYLnaO1lKg9ouoXa\n0/lBrteC104eiScjxmxgEf/6p0HHmvT3eY6ui5FnAehZuWgPVTa3ozBtqgDN\nvFxp\r\n=ZvdG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-c38be0-kh2enoqo_1604434158565_0.2641226060949773","host":"s3://npm-registry-packages"}},"2.0.0-feature-8d30d9-kh2ev4jk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-8d30d9-kh2ev4jk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-8d30d9-kh2ev4jk","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"41afc3e995e3fa6ddeb2ed534887b04d82a73e3d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-8d30d9-kh2ev4jk.tgz","fileCount":309,"integrity":"sha512-tZO9K/ImyfE5A1JHo+/Fh/UTxdhTXoqUXryhC9SAJnTmsE3wEhvorpDww8SSv0LWT/RIvRJSnZzUQZuVHR7ohw==","signatures":[{"sig":"MEUCIQDnZmiyDUr66vrk3k/fB4hn439TpFT2SCyH8i438BUWpQIgVC5ZQIICLJ3jNdBk5DSR3s6CHoUHFCsguyPKAWsrkAE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520057,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfobpICRA9TVsSAnZWagAAzkAQAKDaR1crkArSBRM+HSYR\nDno4EkaV0XWbeZd8reIf3SwtQZPGH9vE3JP2MerJ1ccZ5CXYnrvYymMVt9pu\n0KTqN5ajWhoYXP+EnYs5f+fs/XxXUXAUwUx+85HhygAcEGUh5yJFO9Hz9eqi\nmoTemRO8AuR8u+/dxSyjLRXc1+qKJY9zD35tyHbtNQK/ZIPY/3VFdnJNXGwQ\n9GSRqIzZK8zLNuqqfPj7toYuk1Ve0AoTgi2UgrvVNi/2Vg5rGHcBNGp8MopC\nxj/WSKTcgmEiqIXPUVTtpue5h9jcSNWDRi9ZkBBh1Flm0jodM0pyvtMZVR/9\nJeXJQSFJxQvrf0B+DofsHHUMFowd93DYWOdK7mMnUVPC5exc6bQxYoHmn+kb\nXAfGle7w0ieJx9IJnGJhjTCEC6anHUpW6hUbbhhOTAtjd0q0L6vClj4n4zgA\npyZvGT5ORnzAd2BypBPfwD8qRZ9drlUUD/+/aYaBb1/kNlA351ylivFSD1D/\nxTQTQs3MvgpNDIsHandoBH4QBZTd/H8XgRMgfbbBVBs+JCAtPSVDptZvi/5E\nEulhXEzMusWPAPahX6anWLV7oL17Je24wDtmidgNHfFFVOt0AHvixg6eMsom\nSPpcRu4uA8b38X8ZwqfFwTCkESvvDeMvZVDiuJpLNNPUbghosToAgKvYuPdi\ngmxM\r\n=SG0u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-8d30d9-kh2ev4jk_1604434504217_0.5051636473140411","host":"s3://npm-registry-packages"}},"2.0.0-feature-a71877-kh2h7agg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-a71877-kh2h7agg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-a71877-kh2h7agg","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"09cb43bec7fed2282e4d64ea34bacccfcddba71e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-a71877-kh2h7agg.tgz","fileCount":304,"integrity":"sha512-RTDTTzRIUKoflBzV71/OH9f+65mX0H2kcMa70RFdo1v67JrfnyqvpVEM6mWC+XJk4A7qo32IC2jOpP1k+IvwhA==","signatures":[{"sig":"MEUCIQCG0t5NIFjyBGDn0ENVj/6XiqOMxKvWq1Ve7uzjhp2g0gIgYfKIkL6Rt+j0fWMLnT+ht254zeTqSNXTXfSIIU9c3pg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfocmdCRA9TVsSAnZWagAAFfIP/jdrGNORXMsKWZ2CUmOl\nhpO6c84GKKIY2PHqzs7E/mJf72hcSIsuFxxnktf2UNV6mAF/qIc7SX+0oODd\nGZNp1SHk1oMRnj/101JGhwXQBt1m+PMKpqUChkK4IGelOOpz/xtwKkJBZKsN\ndaOoKMrkh+dMXBPt6his1LVwgVS7m2itGuiKauhiIPU+whKtl66X+4oCbRY6\nPU2/IYi3FzYWhXDgn+IPHwP1mPT+KQAdXDLu7jw2MjeKIg6NuwQNt0KtQHQ3\nR6Mj5GJQ1GBBF36u5Pqc0C8gaw6HLRGD8c7W+XZRp7c6hcv4B7YA3YWn0G6Z\nvFw6pTsCkBNVn0ID9rhTDANNkRJrurqmY8lbJ2scl1s7pcLk8eyWapFF70+Z\nElKKNfkmZsg8SkC7bCHs7ihHQGig/FLgf5WqrIqhxFLvClWp8WnduCAahmAY\nurGXQE+63joxzyLfEn9Ip9m+74s/Jgyhmib0lp1PxzD++chKc69h+mhpSaCW\nDGuMPNNq0AUChZgGc9sFAVPsNmbQy+kkkxoWiRPzLx0ihr9jPmb96Ay3k3yr\nzPdeW3hF5dnQ8a5vM+9XI+HoTzIKJeSISInGZU8lQwtzBaqdf3QX+K+qqMrG\nqlcAAl7Fq9K6TIIxZWVYLMaSAYBtdnj525xyAXf4DSXD6wkBEVFDGJhFJy8P\nxvgf\r\n=wMdl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-a71877-kh2h7agg_1604438429272_0.8217723361152518","host":"s3://npm-registry-packages"}},"2.0.0-feature-90b8b1-kh2hkpms":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-90b8b1-kh2hkpms","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-90b8b1-kh2hkpms","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"56bd3a1abff7f392e9e6c95d33148f26534d6f4b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-90b8b1-kh2hkpms.tgz","fileCount":304,"integrity":"sha512-U4rL62hlU+WciW9YtCrmUX1vzml25xI7jE2sVQ5hoXgIXumXbRFs+mFDJJNgPNlxz6J16C5lyHPv9e0xxaNEGw==","signatures":[{"sig":"MEUCIQCiGOo5D0XZxc7dO6FtohkfgN8nAlA0JmNjHRcdyNwV0QIgdA/UBdIWCI599txmul0iOsIuR+Mch6s51x5NBMqb+K4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfocwRCRA9TVsSAnZWagAAX+UP/jaXEZgXr3yRj214Q4gc\n6CMzCsobST4EoEpfuqdoO5K3oHmFUEm2CNeR8jqqHRcoG4IEcEZc0caL9HYy\nTWKHeF72ScYxRJX71y3e7ekAC1aBgiIiRP2BG/0ZxT0v2zkfSaQjhI60Z1EB\nb4h+ae45TAj4oCCQYSz+F49HqpF8V6wTAbuo30RhlSKj8VXvM9L7EVkXZudG\nR617OcsGZoVoiy55YPNg+XsxQecvj3tkcb6GS7RFltoD3Trs0xSv7sf6lqfZ\nIDfJl8BQUCGyEnIXPkzdomst9XMz4rPzcgQLyvsrs0eL0BX0h8TD/qsFfR8O\nfD2guFcSIdSlo32I04ztCCOVzt85lrtlieuZZHggHV0xyL6l0019aaHfyk5C\ngIgnEwzLoiY0O4sss+nXuFzL32BoexMzr5yenlHRplKwv0tlpyDmEIyLbPx9\njwAFjmHXeonGayB99+kfF7JIypgMPwDtKtVIPWxov4aUN8XGnnvDsseWBt3h\nIuWxbT4NJA/r2zYwZC2RybAoyQWYXHa8xRgJ8URNJBzoghLgrl0MAeSBnaC6\naehOs8pB7gi2fsiJoR199YJyp9N5OoZlk8Yv3+lhvEOQehD5Zjar4tf0+0XA\nd50ysP6awui3SMIAYnA5LkbSMSvLplfn6zgo1VKQTe8OBdULWcZGL4ClJ8pH\nNuaG\r\n=kbIG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-90b8b1-kh2hkpms_1604439056395_0.40869523967929333","host":"s3://npm-registry-packages"}},"2.0.0-feature-560676-kh2jyfxs":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-560676-kh2jyfxs","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-560676-kh2jyfxs","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"723276e16d773a6ff31da0152008b057909b9d2c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-560676-kh2jyfxs.tgz","fileCount":304,"integrity":"sha512-W4aGL37+76qQ0SOFF5gvjUkcBTRg8LLcAB9JLdhe/ODWrqhIJ9a2QiGgM1MfdQGHCILHzGYekRjtEWcfc08QiQ==","signatures":[{"sig":"MEUCIDhfR9bLsooCehvXTJaiqg/pVUGHmCp/+yQmZWt40mm+AiEA1rRewsxxd+4kNf3RGRlEhbCxp+N7VBh5d2vxcVIw7KA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoduvCRA9TVsSAnZWagAAxpMP/1U+2eyhuRgE7ijVEkYH\nIA9qSMIH8J0op1xz49nSIzKA32PMgZXjO8EVFjkhq8xxLBv6QNmMuLAOZh4B\nAAhOdOWefHxqTaV47m/Rd+cYzkn+mjEQrJkBh1Z8U+xIOQFn9Uj0GdnSjHNx\n8tb44tJZUOKdy3PTWWnWh7L9r/fiq3/VJNv++PDjl9N5txu1O8mwVnax+fBs\nMwjYZh0GlyQpa0VA+7MLJEolFOhmOIwmHaEWDmgUB7fKjfCwq1oC18Y6+ldi\nuN0+f9hRSiIDdnk9gnhTtJlKTyXiLgB9Smj2Bi5djXhmGtRihB1TR/YNG0k/\nMdBSzMR7ibHEzk7U7CvC4E3MH3y27NAxqiPdnhBsBoE/hPYDEofXzwo8mYoE\nrqB7ug1gmbNZOMnsvNQs4ezsJ3PlM98rd1vDGQPfmQccCabc1Mvp5BsvHg3U\nasLzXJBiNmmjZ5vz0Z2QVw5ueJKOnrTm6nEGrZ9QAJ7QKiyAnnGQfaZJG3WL\nTYYa2QfYcZVcikDe/MKN5bYO1MMOQlPVuQ7zaD7QPjU/pZezNMxn5caqNH5S\nCsmzq8oT+4Yv/RhVYW1jx4iqLYxAjyo0yVXyf+p4872yFlzE/c1/TND+3yZL\naJdu6an6tREKiNMo4jv7bn7zaFmXWXS+zRyqwvn6oJU2up5a20uZOX0Pv3in\n25wf\r\n=QJuX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-560676-kh2jyfxs_1604443055124_0.30934795138152227","host":"s3://npm-registry-packages"}},"2.0.0-feature-3228e2-kh2kxp37":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-3228e2-kh2kxp37","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-3228e2-kh2kxp37","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"44f4027f3298dc085c12b348f8209c66eda3a38d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-3228e2-kh2kxp37.tgz","fileCount":304,"integrity":"sha512-ELsPlPmnY4k1l/MIXvFEa2ZeTje4qNlJLHQifpNO2TtnEKgg/9bfLW2JaLwOe1e3E+X1Ont8tXayLog6vR9IUg==","signatures":[{"sig":"MEQCICY2SLVD5Waka3SZylwddZcJXq3A4qYZzdUu9dSljqEyAiAWxEkigDNSSaNYnR3tXbKnYiLJwfVI0fKdcFKGYu53fg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoeIcCRA9TVsSAnZWagAAqXgP/12OeQeF16C23ysicxZa\nTqbYsGZ5g0X+B1967AmAL8PrvJ3URPV0oTVNnvbj/fvNSdGmT/mLAkGwQjdD\nEnntXA5aQzCv2Z0IAH1hpHfq6PyhHegjbGUG9It+xZZuFFKasBRDl6xTDLIE\ncM9VlNbVRNdzAgGEHz/OEHPmra875KCpnnNS/KGTGtKnbyHK5/mKJH9geFmW\nkK3s8iT7E0jEs4b7ZDz9XKGHakSMpZA5CNcMtN1OLHrST7XBgd12r5NhYAxT\nHHcL84pBms1O9FLvQB/5Awx2lv/qUFID8X7QtbgNcy1HJsgl5FFo3IbiStvi\nzfFM/W17B/b491N/baYEQqC5TBRx/K4VdQSO4Nr1MYghhEjor0AqJzuk8L1b\nDParnyeIP9EWEGKZ36iZZrAJJZugkBntxAQdzRVmJf78v2hmmaZit1SAIba9\n3nNszfALvortFf1UiSiLnwPYAPRhH8CSQmeGo1j7XDwVev8o91oV5Z4vOpNV\nF4oV5S0b0v0+ADjtLFpf7Q3X18SjF9dlS7gVhVhjxXpuECpG5hS42hrZn3kg\n9vwEC8KXyHgqOUl98uEaPCGBO1BywnmJ7cglMFeRJROXG9Z8ikfFShqYdf+n\nhHmARN+d0wQLEvXy/ve5y8p5TmYhT2ztvOljwRzUlPJcCJbfOYimJdXMRpxl\nxmHK\r\n=PPCI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-3228e2-kh2kxp37_1604444700044_0.841089396044642","host":"s3://npm-registry-packages"}},"2.0.0-feature-4aef2a-kh2lnmgf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-4aef2a-kh2lnmgf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-4aef2a-kh2lnmgf","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"82169ee9ec278222619de6ec2dfaa130a6da918a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-4aef2a-kh2lnmgf.tgz","fileCount":304,"integrity":"sha512-LGKgx1fbPyBT1bgfZunJRqIp4IxBQKTZ+QycWSLtfkidQ0PquB3ic/RpBhnJYRPL1iTuAhb8J5UoJC53XzQwXQ==","signatures":[{"sig":"MEYCIQC+0oPEaXxbPvLZNN9iN3+SH2y9X2ohqyceHvQUUYhdjQIhAN2Gb7izLKlCccGav5MlFmAN+rRcdradEUVObfv6SkOD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoebTCRA9TVsSAnZWagAA9PsP/imGK6sX0XD7VnCvE3jB\nlEXw9u+0l5PTLKSLLgHAPTLiKdzyGRNlnU8FtqI8ZzEzivigx8++Cremjlzs\nZxStD48WesbehLWN6YJaL7jD/AlqCc+SEobSEBglCKz2xx3V1PlA7HPrLfvf\njFWw1krzsFo7aU9AkPGqLxjZQLTStHGtDXCZyoj9SB0SzolpYTN84pJXerme\nQLwzYXpE+WkCI5iaNbXzLSAMeEA/EahTEno6XPiEvT9P/udfG6yHu6ethaVo\n/tz0XwK9ELL9I+hjoUPH9tdohRzRlNuk/mvlMB+CXdE1kOaH0zTRaHFPCfX8\nnhJiM9cPhSRo829uF/X/rGiLpTFZKUY8eGQvTbUEP6CyGb26knnBmxvdpeTX\ns568j4dWFkQXnqawQsqxlpor9HS9fvuYG42LV7wTEsCEHaqojFzLVYJ8F3aZ\n1ta7gkQrD5owPfURhFYT8BerA2nvVb+FLb1upuLyEgFI9MMrnZt+0bavAr+0\nFFZsUQqzN1oR4GkiB5r/pAvHyCfabn6P83tHKBnfPXyhN2w0MEa83LVQQAav\n9yTVsCnaAxWsq+nS8t3TkI2Jq0Z+gMEJRZxqn5CBQvcVM9Wzdl6BYxIiMqlj\nR6GETJsNh+qhQ1BEK1SS2Fyo8MkQL7dJg19CHijbiwYhoN6EsCKxydmeAcGx\nrLz8\r\n=CK/f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-4aef2a-kh2lnmgf_1604445906807_0.008254158002251266","host":"s3://npm-registry-packages"}},"2.0.0-feature-53a311-kh338q34":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-53a311-kh338q34","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-53a311-kh338q34","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"883b1ac31fefa6a38f1e56692f55714ce45635b0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-53a311-kh338q34.tgz","fileCount":304,"integrity":"sha512-lis+qTNAIEvd08MyTCZ1QOHKg4dYvqMwH4OVezwBMOLxTW27EgZX5Kds23qxeVlO9jAfE96vzg/jEA94Qn8AGQ==","signatures":[{"sig":"MEQCIAtWgIXhQSMLI26XB3IMaKj7SJhz5MmLeuoAF2Dcr4cKAiBnvYjt8juGBRAk4SsKjnt38pP+In+j32EfJnoxj06ifw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfolo5CRA9TVsSAnZWagAAHU4P/jhZ2J523zDwys4qnVqw\niuFVA4sCBqfwp2uJ/zZczhM8I9sPgCsiSMzMDB0QsU1S8ruICoUNtcEQCbtm\nKn4ADIyIF5rnB1Fq93AUu/OwwcLPYzkLCMyuQB8KWUF7fLBBdIYcsDXS3TaI\njrZb2zTmfmNPolae39xHPWkR1W2byhuiA3NlapNd4GRO9Dv87GPKisZP7vCO\nH7Rx1ZdqE9fn4VS0h3R54f7Bft7V++n7bwOaWjvg2v6eIRtBeQwkowdfFNEE\n/bYCBpJb3URs90ZKDtS9bFFv2MfPCBBqu+vtKST8JR6zII6YdVwh6VjAe3FB\ns8exJ1oJAaTystTz1dw6t/Xbr82FEuDsuXG7HJ6Dd3X5PXlNH+RQTQIpdKhP\nPNqeykDKBAxxnc8ZjTMX73HEK/2d+X14Akd3vZsF+YnyklgyIuwqQdmJMYeg\nQiFC4e17AKFceZRt0Yhp+cD5+WOaYI8JpMDbNo7bTWkjkVXotBzcf9IV29jh\nx6+0jY7evk2e3sNhCPV7ay7E0B6GU20s9nMniffUXUDu8qwpQUAuuSkSimE3\nqFzzgwB8jKZZmVoP0KU3DYkrZJYna3bMrWihxmQGkKGnAK2aE+V8imybYoGO\n7HEnROKNtN4SeJ41x2mlddwAJIWjW0MHqv3r6yI8f1YTqocLVxCklE+30y8q\nmwhe\r\n=2GYi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-53a311-kh338q34_1604475448869_0.7445404305536636","host":"s3://npm-registry-packages"}},"2.0.0-feature-6625d6-kh342s9b":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-6625d6-kh342s9b","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-6625d6-kh342s9b","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"30339d957bac3a1875df6ac7d044eaa9a5a25adb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-6625d6-kh342s9b.tgz","fileCount":304,"integrity":"sha512-KNcK+5+gs24Zx6LykC0WRAbxXMLDSEdOITaDYlwEN9RJKfSXUJiLy9aKM+pBpRiImAKWX9D8YE/eUTDX/xNMvw==","signatures":[{"sig":"MEUCIBIBTTThU40p4zTTgG7SenswvzAze1idMUeaY6bvOR4bAiEAwvipKahaAxVOpBtFKIfieROz1F7n7zE3976uvuPvZp4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1522646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfol+zCRA9TVsSAnZWagAATqAP/Azx9Lee2Hso8UR5W4p2\nzDJrHCCboHGrYWDIGiZ9wQBejW3qLVij8b+SA+o857lbuh4kiPa8i1nxSPUz\n+U6K934lQDO73Rf3jV+aVXYWWn/hrEtLhp212w7o8jA7FmS1k2bg/x4tYVTX\nnPdx4ibvY0E2c2FnCic6gxo7w/jWY/iwCwZ/W2uF7Htg+DhW/75jX+jYsoRu\nBMp8Wd4TPkwG38cQ0YyVtObGhdOHdhejTYgLI4hctwDwyL/UMBtXD8syY3aV\n24azOGXgktaYhxW/QN1qxMvWAu4kNW+SjTt/LbotwIbTul/n+KDCrQ5zN2EV\naSTb8lSN/VRCzLIXuHME457Gi736uvZ3i2AL8axJKMNasZsGjetR71SOunkE\nu8IsqFiLzo3xEz/5gW4zUO9g+vmq8jAkkhO4t0nKR+iJVx+4c/y7P/EmAmAk\n3xLc78WTRqZ6UJrWcTEdTA+ONI87o18qdAaXkYh3TrJctJnIxfCeLZ4eKDx1\nwh09L28R9Hps9FhLlqMpqRZ4iypbNJJvE+yb4+uEptvzwt9kz3IlV+4dk74E\n/Vx5IkhUa+VfebmstDU6+YcFN1NiR6gfZDBJHZcvU1VUmcuuo5Jd3yKvr1Lx\niXrY7XKlYo06AzQgSLZjNsasIgqhsbFrBNeV2NbtBKKsDMUMuq+/gRDvGHLR\nh38M\r\n=B00X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0","@atlas-engine/event_aggregator_contracts":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-6625d6-kh342s9b_1604476850934_0.2012693432341779","host":"s3://npm-registry-packages"}},"2.0.0-feature-40c4eb-kh35mt62":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-40c4eb-kh35mt62","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-40c4eb-kh35mt62","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"68762852837a30d6fad52cba64df28d18f3db820","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-40c4eb-kh35mt62.tgz","fileCount":309,"integrity":"sha512-un4PkeesIflnQi2M4ArJ/2eZu6Zk3Daoljp47plOh8AYwjJxQvvbWOZnl9sG2nkR26VWxwCra6/FQmNl3RTKmA==","signatures":[{"sig":"MEQCIAtX2rtANXuTSVcfdabhCyO084onK9QLnHYh//IgsOaZAiAC+NnY6SjwWSXX0cmuIPppdQz/qz7m3i/rbLY7dguiJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1515371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfomnmCRA9TVsSAnZWagAAZiYP/3/TedkZZViPNSSOVHaO\nJbzi+95g23qbQoP94iIYbFGCoXIzNnGmOLQRtaf11wk1CN8+r4Zc+E30sV4h\ntxaf3PTWi5oADs/bC36dFAayh3o3V1FDDXeI7okMEgZOVaySopS9k1Z7aAx2\nNYf8AmnujDnWLIoiC4AtAoqbxGpSbSljpA/BDnuKeNlwKR3HdE1xHjEE3Bak\nczQp0F1Fx+OxwxmxZMsDi63EKBkbZ07qA0vZ+zjDss9Vowk4zZ5/tuDRx9ye\nH93ZHN2feyg0mq9riQgAR5gUZR5h99Rr8WwyFqZHbKz5ffEiYf9d9jvMqOw5\npFkHFKlWp0zT5beGSaoVNvzruj6tgotPa+t530Ld/nb1ErWGt4BvJ2mSewnh\nmTh2OsUq43JeNfMNosOrqOvhzh0d1+RznIiWSdwcd51YwkQLiex4O/64i9AA\ngWcg08JGji6vSW8JvpsnWZcl4kw3sxp/VVG2R/9dz5/l2j5KS2sbaA9AA8Iw\nMphYtziRFFhOdZLRZ2Y1C1zQdR/2TGdymkMNCw+g+il7QbX/XcsQofVYg/oE\nTCOc/gKv46FB15C0Z3oPnHGuuiWNyW7XydHPsGxTKLPbrqfXQG14a80jnaLe\nZ+GOTcLS5y0J4bI/Ea/tQLwJYz3mjRljY3YrRcJO82hGQBIViDHqiEwSldne\n/JGi\r\n=DO7r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-40c4eb-kh35mt62_1604479461833_0.3508518996742971","host":"s3://npm-registry-packages"}},"2.0.0-feature-4687eb-kh3b7rli":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-4687eb-kh3b7rli","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-4687eb-kh3b7rli","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7b4cd09c879c1be83cbd5bb5c12e23252a690a64","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-4687eb-kh3b7rli.tgz","fileCount":309,"integrity":"sha512-7vGZV7lSuldVi0KPKWFHh1KxMbPHhayOOUKYqguVOhGPe91DoKD5wHiJL0EMP1nnbFVWJsB/SHyJpoDPs1SKjQ==","signatures":[{"sig":"MEUCIQDwUXTlfT+A1FnerTuS8H24eD4Pm69Jz1bLXim4jQ4laAIgLbPYL9uGqWu+QNYahBQUfGdYT6RphWWzCwr8YvcXQfo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1515371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoo6ICRA9TVsSAnZWagAAbd8P/jG6agjOUDnA6dBcdv8g\n5EREKeo6FVs/sgXOGlLxp+AfCIhG9pVzWrDtVlTgjVHv+OAk393WvLpZ49OF\nAqJH0mp0V68QeY9naYDvxRmzo3KxdoNBPu6Qo+WCuzN8pktvZ8ii3mXPS4pW\n7UWuVJhyrZSnsmaJ5EzomePpbn0QPZE+cohEwXUd9cJOzSG9aJVqzydy88Nd\nChhZWE9qWpwXl3fmJI3mJfdEB2foEU90w5f1NekI+JUN5qRkemqkoDZ04b4o\n/+ZjYArDskuYzfLM5Jg/kTlsMEC1jnyCUBIMkwdlzp5iF/V4I6c5TGOOAAP3\nQVQnbjvL8WT3w2NvCwcx6Zl+GOM4ClKW9pa0HU9+THmkXKyVGgpRfQx9x7cB\njlWqkt8bq5klAWdHK4KeNDkY8v4qhzPAFRw9cNoYVsnSd1YMBLHvH77azN9G\nNyjfnb4c8vSBKG/ogMTiV/cC+mBRbJbJxAk5NZuQ04BBWkyh1kCH0bxwiCJp\nuJ2yVieBJ+/nAC84Zlti9HWnvOK2yzqE0UgHHGwkPei9p/L4+ctO3sooTDIN\neCohjlVgcpEol5PM4DD+faFEcg6dTo2CnX+xf7DXY+n2GL8dqxjVstRzJDXo\nIn4TISIw931BhC9MiKr2eBdBIhgo9iL2ZZb2AhjhSxEREDS63BZMzEaiRxwE\n9dFJ\r\n=6mT7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-4687eb-kh3b7rli_1604488839629_0.809955521952616","host":"s3://npm-registry-packages"}},"2.0.0-feature-51675c-kh3g7th9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-51675c-kh3g7th9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-51675c-kh3g7th9","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c0ed3bd1704f06644c3e8a5fc8e3f991c61bb105","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-51675c-kh3g7th9.tgz","fileCount":309,"integrity":"sha512-0D1aA9EP6JpDK1ZNFQ+dledzkjuA8Ji8y+amsHAdUIAkLLDBUI7xOkZZt5WlhB+Dr78T6xKpzde/55umD6eHRA==","signatures":[{"sig":"MEQCIF3Dv6S0ZcYosqE9BFM5YJcgMZMpVFbHlWGXvEobPD2PAiAf6r40TeYLKv+xnQQzWsNxwTAB4+pd7TcOIddv02Fkew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520057,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoq9aCRA9TVsSAnZWagAAXYYP/A49JGlHCAh0i+1Q0DIc\ndMEA8g7T7Do2KSJTiqijFCGQKQ1EB33o7I4l/6uAVjtG2UhYoYRbJi2wKLrN\nY4Es3bcUGU7abzX1X2EASXZqxFtjbn9689SAbyUt0Jm55qcptiuaurBAtUn/\nnKixYH+w8w1bITaH6M/RFCyCUQpXFdCqhh7VmQkH70CiYeMkzsGDJqfouBZ9\n993/9kOxEqPL9rvVyZxmWIrnJOqpxghAwRQkH5Bqh7cPTENSMAZtXx9t1q8O\nqmVwWHsYszEr8/1in78e3HuD4wHML474SMAwOCc96AmtQqo9hStfSrM/rQUv\nMPxT0s6/z6pq2hW/vEsIemrYj3UlrOmVqfYIm2MKkCtKwo9Zf3aY4hva25V6\nCzB98ZXueyxiVJVez/QnUfLf7kZVdVnSOSoYKGnDPSQPjyQKKvEdSbGK2m1l\nctM3EKPQbM9IAIrKi6Y1vo4cB4E6cait6ZKiRuc/WSb9Bgqq7OR33/hcNtGx\nzlJibcyzBNeMFJ7fAiKh5Bf+00ZVT7yl+wtTuVoPBAMd4Fo93Snwc71tJ+WV\nufh3YPlAIlB9HlwNnF9lYXgMruXehC6DCrEsREKuG/4GKagwKVMfO/hnHoCm\nmUwRRmGHjsZEQ7p4XpnDzy2ua0M8bLOsw3sC/DOGbBs01B6rmJ2gMfs5JT7G\n57sd\r\n=jqqo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-51675c-kh3g7th9_1604497241666_0.3556428830569496","host":"s3://npm-registry-packages"}},"2.0.0-alpha.26":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.26","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.26","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a243a98abb4351af343d9c362e33dbc08b493365","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.26.tgz","fileCount":309,"integrity":"sha512-LnxTsQxKpIGp2J7MJOYhS3W1pLS44hajD0K+GD5V5JJNZx4bzyGcEE9wFp/HigBU372avyDE8BTNicC5dNiqhg==","signatures":[{"sig":"MEUCIG6fiXsUw6DH/ymQt51BW9ryNBrClOmBS3R5ZebkD3i1AiEAr8VOjHRMX2YatjxqhYqbNgHAAAEUUxjj/2OzoVH5tHY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJforKOCRA9TVsSAnZWagAAJgEP/RM/2izwfVrgdEdy7PkM\nZ2dAmrQy3Ud0c313oaiK5QoZZr3jOkpirFvO86a+WLbMWF+XGS4djQV4HQk3\nrXQx41HOblffxQBMqx30sGUfOM/tg2s5u6rOmHch1Ew8Y/hO2mRKGK2xx98C\nzXjLYjDiO/azyDM75gyq4vDNYzFTTlgIH1FnJLP6A4n9BQC4Lme02SqBxhUc\nG6j6rVM7GQzJ1B9VyZElaM/Jq2OmzBVwbpnvuvtyOVq5B4aXGaUm826dg7pC\nLI0EvI0/ZPkGWF64UlNRQYHWA+uGFA0jCEH/QokiUxvubczQ7FyCZORKIDy9\nD+eOP/kLNBi7w9P4+a3pw+7cKPjmbUW8083ZpBn928WBbsvDw+0XSn/5Zbou\nTmsPCzsjlGLhh0IuKWlpbsGNVf8kK9+2V4OPIoGQ04JeLwYjysCt6iWGrv+8\nLH/wB1X/ZlIch5gu86+52vYXsM88W1eqJr4fEXurtlJ918FoBMRoFS58iH2x\nopf2RtllXHNw1JW0A0PV1tZ9NDSS27Kj6ue7o9D8oWgr204sYXV2cnaVjKQl\n5cElt4pk0G2pYIFnynGTtFoEEYNVFAvMk3ziDyVLSU+lWKB+g0UU/qlIiqts\naTD1otRZ9qCSvaJJ1Orna66HQti/2jqfymkUYRqF1ClWdHqfyFvjCAdXm5Zj\n40mR\r\n=Zgzu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.26_1604498061728_0.9001115227276004","host":"s3://npm-registry-packages"}},"2.0.0-feature-7786f2-kh3h2xac":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-7786f2-kh3h2xac","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-7786f2-kh3h2xac","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"77b96348d11529ed596619a09aafb7e9ffb63183","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-7786f2-kh3h2xac.tgz","fileCount":309,"integrity":"sha512-RxxcVbQkrIFOkcbn8Mte+hF2wXnsIzpDI1We559GY+T93Gfih9nlcSTHAVuMxFgr59WvfPruL/ppo0ihCsF4Fg==","signatures":[{"sig":"MEUCIQD9GT64k2yd3xTwUZ19NpOtGJXY0qFhf1Vq8fTn2VYnOgIgaXI1tVLll4U/L8xHcl8Xu79TPN+132u3m7qq5N/dVkQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520057,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJforUDCRA9TVsSAnZWagAANdEQAISPYV06jC5IZIdosVRB\nTe+jCiKnExxMe9MGkHNsG0fFyPKeTh/i86Bf3NS2YVSPvwCKJf5wfXuPdzDJ\nUsPcpVi3VAn9+g4srPAKJ2C4XpdBGwqLwE6/8bFrazm1hB4Ad5OiifC8paOj\njPbnOncstTuk2iZ1wwYTSfHL8d9v1ItwynJ5qutA6ZZcdrC5HBjrXGaQ9u69\nW8BKl3v1yoFpMpqd2GS3I1KxRVoIjENl6g9nl6FPljAZa556njxGWQseKg2w\nwKKMEtQM1YE8jyJ4MoNZO+8bmlu5N/30Ahx1W7JhLclBwAXRGqOu2CEz4R9B\nSPs/azReRPD3vaL1urx9kuhVG+xpehzH4I4UFRNeVEOJEJ/8RB09MGPH+4V0\nDpZkCLxGcnCgL7Codcv8TMaePmebRXjiEg91BPdUJ4HPhv65ZsGNYCe6H3eA\nkkr5OxV7uATJgqMFcsQW1+w45ZPUkZ3i7vrSijVOM53M4WEzxE3bWeXsDKiW\nOxTq+zyC5i/TsZOntwlHmJEPIhdA0RgVEzc9QKmp5QNzmKxydUVWZ6G88d8s\nSVTaG17wIOgp2PHuy9Q3q8tDkfx2PnyXhON+i5A9Fn3KbEDqve/WIU8Hxz0I\nilUAdAW7xIIZwl7gnXismliNkoJwQs9fdeI99glFxejx4ixLqtilLgKgZPfC\nhjBr\r\n=3sMF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-7786f2-kh3h2xac_1604498690547_0.4212610347338044","host":"s3://npm-registry-packages"}},"2.0.0-feature-3a98a2-kh3oo3oo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-3a98a2-kh3oo3oo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-3a98a2-kh3oo3oo","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"19750de841cbdc366d81e1779edfa345d673ae09","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-3a98a2-kh3oo3oo.tgz","fileCount":309,"integrity":"sha512-iEq2N2FJXDvUfQ4L+mSEMlpK6jisdOIcaVdvCHBxmPX9WVxSYMNk+gFXbm0yuJZpkhlaWvPfIoSgrBUfhDaYyA==","signatures":[{"sig":"MEQCIHdsmOTXxZ8gQiXZbFquQNhzaDrGg2P32w6FcBviUq19AiADigxja27++emgV8HCED2nO/I1bLbZgrqPwlVltT+y/Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520057,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoubNCRA9TVsSAnZWagAAQssP/3ifZCRS4UWaGQDjd1UG\nKEEKw3uR6RBb6m624PsVTZxpUvpgyY9uhqv4N4qN0xYBlAuAYHYBBUUw54aG\nX7yKCYy0x9Dl2pTxNm5Xg5rPT61v/RE4hzyLxoMdF2/QkXGz3Bs9rIr4riay\ngJYtKXM4cE8mSOxiLWinyq2nNQUh1vAyk8ROSM/FhMhPDTxkFrAnKJ1ZMDE9\nNF/Rm4Dw8yKlSQkO2/B87SYU95um1Ml8Wexi13+TP1ItiqHyLhDST7MfGXVb\nfgp0p81bXnFodOsd4prlxvOnESwN89crZx+t930weq6n04V2VMyZyQoypp6M\nEwYEQfSBqMzZTmtlwW3F4v8Kgp7Fk5b0VPo13PHe0FEUmWNf4i1k2/mEL6aV\nWkkGXXimykbDanjnvOh0eOGGzt7SzXYlCw+p/TJ/Q3h6rXclVl7/2U1k8VvF\n3A/B+pmjxqnju3zJgk6rf+nmiLO/XM9y8bguRSLxAlOuPJxoCYrHe8KL5qFd\nBCV1qa2klioYQfbqodB2PEoTN/qGqap2SGJSHk/V88N7C0AMW4VzRaN3GjjH\nFO4hSXkvmprHwg3aOrvTTcZCa/mr5b7k+c3CtgDA69aqazeSYhqZ5+gbly6d\nwED44B8HhGiYMQbaXUeiaYcjNyJyHkJjQNiAnWwuAhdZrUzL/so0XP2CSBa1\nKw3z\r\n=pA5B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-3a98a2-kh3oo3oo_1604511436691_0.3642990702029614","host":"s3://npm-registry-packages"}},"2.0.0-alpha.27":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.27","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.27","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"060eb3ebd027d007f8f8a61013434f36b137f77e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.27.tgz","fileCount":309,"integrity":"sha512-7k7ZFBhXxHKnq2lDzLXMbii4oVemurWpnFD+SkT23a3qVoablT9in5qr/WQrA7Dai/LDkTIBidg83Thka+gtvw==","signatures":[{"sig":"MEQCIEnL+7x0sr3Jru/A0ZV0nS5WzU6eONLZg2MkF6VtSlx6AiBgQ/2865lZ+Qw7P9b4+PU24U3j5+mF8Tvvu7Yn4SxJdA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoueaCRA9TVsSAnZWagAAkjkP/AxyMWqgZ8xJ0QnsSLf/\nnL6k300ryi/8r+PU1Wz9STjFzPr+b1nNygReK+hzFhBjy92XIjTp+xHg1tca\n8zSFe1rGpHK2hVN3TaNDTooJY9gfQOPfKTWgWTCv4Gc3u3+E3nYDCSvv/Gac\nXlca9x7eQvgseAwwZNHUvQMXuzRFvZmwy0k6XLrYOCPq5A0wyFicM8hrB3xt\nsqeOpnXr70BxHmOJFu+yGa682Ds1iR992o9BL0q0fs03iPSz4zlYge3XlUCa\ncRemYYmkYP9jlXfNzQpT2sVSosKdyLbKkEPUIVi/1RvhGaTSK5t2BtM8qcgE\noIlPifkFHD0YoC7cU2R8PObXs3zsZijW7StavpG9hj4M5hwLrxfSODq5VUBz\nkiOulsTo7Hcc8dV4GahxcS3P0idshNyykwK27se0Mvag975BAn2mLREc9Hbo\nPzrG1lUGtn5OIVgCHZbn8L8vGTKZUc1w80UWfLtxfSgEwQ9D/FhNPhx5noPG\nXAMiOJEvsPHTIeEBgEaz3xYwoXgPKF2B2yIJFxgrD8UVJImuLjnd3RV+JOdo\nyT8kZCpDsRv0RPY/xeP2UNc7ngEx7RsQkjHzNgizUqAupBz8z5K9bdfihcB8\nvz1PwRLsXeAfJ4ufXuqVpivu7MgLUpNR+8q3TVhJ/dAdjepiq3fhsWekjV/M\nY/pc\r\n=ryl1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"^1.0.0","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.27_1604511642276_0.7000287947294728","host":"s3://npm-registry-packages"}},"2.0.0-feature-bc6466-kh4m970i":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-bc6466-kh4m970i","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-bc6466-kh4m970i","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"60dbeb5c7ffc20b861fdbcf524252be6189ea530","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-bc6466-kh4m970i.tgz","fileCount":309,"integrity":"sha512-h7Du6yB9Dg+YwxYWCk0Ogh31mg7eM4P/tk1jiIHGk6QstR04t5XwO2QCWoY0rnPAZ6R/2d2FWdwhnp5CkOvdyQ==","signatures":[{"sig":"MEUCIFEJJEeZ9lyVzTjxE+rPgguhm9U4wwBOk51T+EavI6K8AiEAxqFcgG4EbVIGbDfECfvbJ4ci2CbumQGkjacOg04+XAc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1515338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo8MpCRA9TVsSAnZWagAAiFkQAIQeGqhGSfmXwwnU6Hd7\nkYoOGImXS74dpZLndk9BivxnvtyBlpSsz7ELRW8ofqVGAFtbYakmDf57sDHM\nxDr5FnRgDXLdNkm33Ym8O0BfkUPmOYENZIX8BdbqetBtmwnR2ltjW0DY3NlX\nOzqO2HVMvN3CmaA8ZNrcqGZ4iaT087bYSTdecR3MSyDNmnnedB3Et6YgabiA\n4iV3Tgp3QGfTh4EhENCiEGmc59NAHPh6zUSVc2bx6R0wgsUERi+MZfbLb0lP\nXwDceU9lQMlZTh4hXDxK4azf1wf8I8XAE80xJXUPIRAKyncoID+jxJHMaOTz\nQipN3ADnCeffvLWtzgADhw6klv7E2lVnMxqUm16U/gQ8GB4i0jZvHB3OqEFI\nZkhPhlrKFLDLY//yPvvnDAf/C5YjF1EmDtBc7zDPuLYUHlY3GvNUjX6omtEp\n8f9rDNidinrx4vAXdEJbyCmxZ1NHMeRtPjLAoPBymuZsRdYqmgN526UFUv4B\nXLljd+Edt5WuddNdMpCNRjZf5m57O+CbfCoF5PxOgmgJa3+siop+bAxZymp8\nLJTD+dahJMRDExtex+iGCmIzmLCU5lisxzJRc4TJEhhCWkcdyD7YiqBNIdKW\nBXwzk8Aa32E6W+GK7uKaE7emrrJqE3uySINlOL5IxjstnO/vDBRAwMnW5A3x\nHWxe\r\n=ISul\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-bc6466-kh4m970i_1604567849345_0.8513469300081216","host":"s3://npm-registry-packages"}},"2.0.0-feature-0b0511-kh4qbi2z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-0b0511-kh4qbi2z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-0b0511-kh4qbi2z","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7587c86f9203a30b5213ec1f71e480447b8c9ac6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-0b0511-kh4qbi2z.tgz","fileCount":309,"integrity":"sha512-aLhMLxDtbg5NI+qcmDlBy/5gW26zammt1PHB3MI9ZhSELxH74L47zpgM95Wf32jUekJG2LUWg3bLk6XB8VCZBw==","signatures":[{"sig":"MEQCIBJFdHykj7QA8w6j0PdW+oqfGdWEX5TcpgBtqZBrzi+ZAiAB4vy0uq8uq1DgqZ3uzDiCcfaNmQJIEDoWtUc8090wgA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1515928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo93PCRA9TVsSAnZWagAAZSYP/2rHUUXBNn9m7SDXpzif\nXR8+OxGSJcWD3MlITjMF21G0CdZl2ijrIVfcmdbRqt6Ps/gNRerhaIxodgg2\nlN4gaTsQmIcu2+9+BDc1wtYXzqZnvAo3JNpQrqBY080qTW3vip8s1WRo64U/\n7oLDrV+TV0ZDxuL98Vt8C55MynV4GUSrcQWO96nxdVrTOp1DyGpDsxdZ0FLz\nPl2OoxOUgmDajEEtYKgLlDedJwSiGSX9VEmKBEzRPEH9gfJXEd2GQJuWueV5\ndC4BDE0ThUlvCeNpu9nErYh8h7NfJvGHOTxKtCmKx7uKIQsgfahbQzJrfH63\nRmzkVWvt4E6OoRJKuTWG9BS04a6b7Fmyl/EFovnjE6w7NRBh9BWlri5Lmn0C\nvRBoNHql94nqx17aOangfJeMPBCq9x6EFhENum3C8m6csI5n4qqJbTXQF6AE\nDrrHRpFnqiVn9/ducStyOUpidAzCxCdnfpC2EJCwtXDHixXDkRSh7CBxQgj+\neGZFefLw988+iJdx94vjHholHXUGUh0u3oABsyrXru3u9ZHSi+s5lryELB6v\nQLEKWRmNHd+P3u7rZ/aZiGcgMi+TGUr9prBJ4l5D9Zxe7EsEjCJUEPGwTEy9\nOe5cM5krrsfbwKuVcZ2RPDGca3r2/Chhjmihi/ystU27fzDDRr9cfYiksyki\n3uZo\r\n=GX6J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-0b0511-kh4qbi2z_1604574671198_0.29509200421531734","host":"s3://npm-registry-packages"}},"2.0.0-feature-34bf99-kh4vqom1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-34bf99-kh4vqom1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-34bf99-kh4vqom1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3bd3082890e7df07cb7a999f8ee6a07e4bb4a775","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-34bf99-kh4vqom1.tgz","fileCount":309,"integrity":"sha512-UzN9VqOxKj104EoJvsB+X6Zkp7p+IRL/jIzuWkQSkF9eNh4nZ03mWQeYujnW/vHQNBivxd0ExPOHdYy8QK2Q9g==","signatures":[{"sig":"MEYCIQClOBfGofbbvaDmZOPMoxmoSgkTKw1GswUnv3FxVkxDFwIhAJo4CQueIrSKlJLJhJsZtZECjsLOamz7Q7IAvxk9zu0R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512828,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpAFsCRA9TVsSAnZWagAAHmIQAJsb67DtJE5wapuB0ukA\n3Kjy48xywk8wj9qJYUBzI89X7eLTQjm1pH5HEyBtLVmUSrB0UaGfkpU8Jm0K\n9G2VMZML+SDx4+m+XuICVLTpMbLQ7Jg8tjo4Go8QbeVVh8M+cnEtdAQv2Sdx\nboterW9tEVymOVKRUxPU1FqQK0h1VqkSUlp7XesLUizkDwMxhlVfwfK4phab\nrjcuIAg093c0RuFvSQJ3gthmYKP+yMestbzoj1jUYKUwBdYOZ43nq1Leaw9u\n9rm8l96oGdlNxKp5SeMTOfJSgzBrYoSxnhn/JmqfBrDskiU+TJsxTP/BceXl\n9oba2MTPj6w5IT1wq4WX7AfFMbWi8qEEzLJyFFlveRR/z5ml0ELENh+pM4rX\nUeEZVoOglsEIKPO7ddEHeJrKP2LUHkdI46naKJp1dI2xIDYMJ733LEU8J9rj\nlHYfTwTtDUe9vT63LtHp06InyTdtKonbmQ8FBZ1Zaqg1SezjUuhSh9+/rZfI\nj6ylqdcc1StDCGApCMbh0JKmTsLNjbuUGUu4xLOCDqZpZiJ2CfebEQVJtoQc\nnb/EpVHnWO4SR6IE573KNgaJ5/OOaTK/XYr6gVZIqy7mfqqPaxDQRknbl3vb\nOKX4xoFU/heYBnR6vRiy0I67JDq5Y99NJ9g/3GSt40X3UTdt80eErW13NsNz\n/ypl\r\n=nElJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-34bf99-kh4vqom1_1604583788035_0.3168273187876556","host":"s3://npm-registry-packages"}},"2.0.0-feature-60bd1a-kh4w6tx9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-60bd1a-kh4w6tx9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-60bd1a-kh4w6tx9","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3a2be79e4b338412c4baaa141f62acff964b3713","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-60bd1a-kh4w6tx9.tgz","fileCount":309,"integrity":"sha512-+d7wBhYG8qmP6fOlBbSTiNdgMDKADBTXAe4GUQT9XsJhzxi52Y5DRKBZmo6vHpnBrnFd0mh6rdbnuoNEGQP3/w==","signatures":[{"sig":"MEUCIQDfM6Ju5CgNraqNrJgYEbkWQ6Twewwr9eQNQO/xGlqM1wIgWipVKCQcfmadeM8KVnaDR9icv9Zhfjj8vAGZ67ukAYE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpARXCRA9TVsSAnZWagAAd4YP+wbkvFnN43Rp1CmUdawH\nFeDpP8Wz/dYN0yAQW9/ooP2f8IqY1S5jtw9y07vL7u6nLJP5QJgYnCSVzZq3\n838qEFjf8GyuFFriKjsUXL0dc6ez1uCae7g777Bv0Pnz8K9mJK5miYdllQ2b\niLKd63IG0IuVl2FdR0wYsuksMtYQLRXyzeQ6OiMDBUMgi9aEdTs/eUnSq8VL\nV2L1xYHE6ElDEERNUQPxYYQnvjPK5V7KU3LlEgJv14L2wX6s8Qsbk6wAOXCy\nMPniivYg+6zuIlpOUF2PbINVYxDlQZnMZbEl+59a9Q4JffaS/Qb0DD9M421n\nrEcPJgFcLLaE0I9+9uYEFTxd/lRFT80hDExn2kH6c8SxorLwd3irUeXaDzpS\nVCxyYWVJLwEiwZCHQVcRjXmjoP7hopHSpJGdHsHrrL8RuZ/dR2R0pBeQk5xO\njkBQW9KSvVfsrdm3zKYr/UQaF7CL37rAOpL/ZNLSBdfPHOxrytd09CqZiIE3\nPNBkBCCx8gAW8IXFrFp6wpYSmGEEDAU33YlNAcxQ0DoNnn/r4HY2nAlUZSSV\nq1CiO3JjsDrLy2si/gbL7/AkrYhEwzAElFgs5hvJJQ5VSfsSr0DmNeDRodYl\nG9HUYfZWML+lX+QVv3wwHsGM9Oj1OGEqXOU2vUD8q5TaO+eJydmiqKpAR/el\nC0O8\r\n=lCVw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-60bd1a-kh4w6tx9_1604584534981_0.3686890020351645","host":"s3://npm-registry-packages"}},"2.0.0-feature-61f303-kh4x9mz4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-61f303-kh4x9mz4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-61f303-kh4x9mz4","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1eabafa630ee2bc7de2916241aa8953eb67ead1f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-61f303-kh4x9mz4.tgz","fileCount":309,"integrity":"sha512-TAnALOxJ3amBdv8lZEddOfsbMJbKdAt0AgkSl2JxxvXyxp1nXPJdSf6mgUy8LVBVtKFC8DlYRSX3sPk0ixDuvA==","signatures":[{"sig":"MEQCIFvtzCLLVDzP/cVso4uNNNBiDlef40dq7sPssR2YBncQAiByiMxPVzAgu979wKCC+yUEKB/V4OHNqiuDhO4BZWTtmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpAtqCRA9TVsSAnZWagAA62IP/2Op53qXYIclLFOEC9a2\nwD/bcPZZiEo7QzsrWPii9+78MLYSAhHxxyftnD9DXyAbN7kziJa2JDQAp4Go\nwNiSw7n+OMhELKdHRyY4skG22TqKHCnOhUozy01CMfpPpTfJ7CBcCNHwS5ZT\nrEuIos+0/76larbHOAaHcEU7ElhU+iz3B0xEINJTTZxApc+FCXQaIngf/IUu\nlzvfhDNqXQU1yZFrkABZShlgTaQYVvD/nZUcZ1ppJHWoRzpO5zLoCsDZJnUd\nfX5mZf2YwSDxe5nbzwDj+2toTm0xdVDyweVXIjlXAxN/idPmzwRflrrmmLu9\nyFUtuMhmz9THJFHXAozIxQF3EHKbLMQu3j9TqsarI+Yj6kgTnLH3HFdpGXQi\nxZX1GTDxGb2BFau5GeHTLE7/YPyE9ZQBMMvhAtfFVPPOoYHBMQ0rIAahrnBF\noMxxR9hlI90IV+J8jcRnlsOKvzi5PzjVCE39Trw7/X92wVBOa5tdcx4d9rlr\nED+5t02PgXS20ONt6w99s3OyCTTSNO1/KdRtH9JimtEaMRkVBkKJ6z4VDzi4\nN0bp/lY7473ZNepI40+mEJ8B4hYipJ3IU5YL0cgFK4bpEiDxEl8X97MK9G7C\nwwsBMSe5pTAxPyNkdJR4/b7bOkf0XPPS5WROSLSyEu+J3eWZ0Cw62RvGE65Z\nP8Ww\r\n=bcpf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"feature~delegation_token","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"feature~delegation_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-61f303-kh4x9mz4_1604586345401_0.7351645953631085","host":"s3://npm-registry-packages"}},"2.0.0-feature-5fe847-kh51xof7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-5fe847-kh51xof7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-5fe847-kh51xof7","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e6d837fdf4860cc4e354e6e9fe8658e1ad07949d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-5fe847-kh51xof7.tgz","fileCount":309,"integrity":"sha512-Geqwc6RWsPXjCaZnN/HnvuSdl7wa0InOB4k+gQEKkQPG40ZVnETFMaKgQ9S0tXn0pZ56Og4FAFtqNPve5YiyPA==","signatures":[{"sig":"MEQCIBTyZg9ERWiE8ehaNViRpsrptGFd0/hfyxcM+SHZTr5uAiBmMwu6JVfB1OjrjmJlHSIyS8sL/HSmHJ+8ofTBLWTmOA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpCoKCRA9TVsSAnZWagAAE9gP/iKufbTVICzaAsvLvcln\nPWx92NPCnK2XXPF2ULtBaMy4GnGwaXrFRuEls5e/SsFNtXuSeSGDqXcBZMFX\nZR+Y+vt6kEydPqmhIxf7huQqKKXSBzxKxyOythIxmb307vqGFNEgYOKdc5sV\nYf6isGUQpgzeIKUw29Yz0Lze1Gcnb5xLKhYa3zoli+3s2MPpx07GRnuvdvbY\nUFBYITIGGHpwEDqw19mZMVRzd/lsIosevIayb/7eAwqwAHRx2nQliBDBYt8s\nyzfVjJ8pNu6Atb9zA6KM8uuYFJbdKqz9wMpHrjSxxSWxRFWNx6fdeVGDkaFa\n2HrUx3Nzw5ros70uC9nRy084yUI8P51UawcU7m4DmuD8kcsOACCBZMwJQ9Qw\nV6pcSOUcCrAqFYt01667+0pLUovJRWFqQREi/YJZ0sC0fvHQE4JL5oPVNzM+\nxvqsZXdE/92mgUlgoyRCumss/acmSNPFOExEIbb/H7vmwvVJSfk++vLsp0+p\nAecCGnKu7kJXUJcrtKWzqswnZhDdxTGvXfs9Z6Hg5KA0WN+tEbZRNMjlPR/s\nFvmkAttk0GkDC4JPE1Jrd2B2v6S9zyCk2/7jnl/7A7th8uHhW0v28xLlCiQE\nh9ut0/EqVwJKtdC/cUXjYHtXer32f9ofA+IKMZex1WfHJUCx7az6b54YNsUF\n2deX\r\n=b7nA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.1.0-alpha.1","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-5fe847-kh51xof7_1604594185883_0.07675490771138982","host":"s3://npm-registry-packages"}},"2.0.0-alpha.28":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.28","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.28","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4b2733d59cfefe475995e4e4a1a7de582b4311ea","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.28.tgz","fileCount":309,"integrity":"sha512-ZdRjbeX1VUSwssHUmq/6WjXLbPdtfHkW9zE1rsBle0y1JiKC3YS7s+gyILeBDAO0xc4/2UGMl+DbDaRESZ7Upg==","signatures":[{"sig":"MEYCIQDHXswYhBeJPzcpkG+ld9maa/OtoFVub+8/sPG3EBSCnwIhAKzvvDI95/grLnL6K2bvsLhUHqMLDQg6VRQ6QcAuzmde","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpCumCRA9TVsSAnZWagAAy9gP/2rxcL/HIR1rEf05bWOb\n5lyOb0qTqpph7ttAG7rSdCzV7kb7lwBYJ2GZ6H5KkfjlCWJcTscb7zORX1QO\nGP7mWhizu+aUm5FKawTeVER9RBJOWP5neBnX3nhvKDCcTqoO05DZkGTFdsam\nbLVMRlqKTZn8HmpEjB0LMmuNWEmhrYIl/LG2+CyVrok0w0zYxersPiki9Nii\njLJkzX6EHzjDT8Cwj3V639+y84GKaAH7tED3PulAQxcArztvZ7DNn7/E/HMw\ndwsu0tdIZRid+vpPSJd61Tv2G45UFY1b2XfLK00RRt9NAHxrcoi/ldGit9Fm\nI/UTjuYw80QRC3HVpbytzCqwl+XbOQxzDMeq80s4Un7SdWxg4fhubyWed51B\nArJc0btuPwHZmIHAyLo5ahNOwBzhZ4yQxH9YJ5Kkk2JL7E+29hAZii16k0dg\nuEhqG2coicwP3bMWzyFentWgQFA8bjJNKYKUo/zYziQIs00zv8Ac5MDzMiIm\nekCDwF4NebgTEd/esK7zSmK8QIyl8O8/hcHmXfKXlR7GB632Y/FsT/8HZg3k\nLWUlk3KuMFoHxaFnHgakWKlfrlM93qcsjkvx0dJJGOQXHbZM99abjIvclh0c\nKImeTbAdouRuPlEaERfbFn3nKxSWFdDZMYM/121deNMxMWh3xrwJlwuO0ZwR\nnVuz\r\n=Qg5q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.1.0-alpha.1","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.28_1604594598376_0.48350127093852024","host":"s3://npm-registry-packages"}},"2.0.0-feature-f6c857-kh55iwy0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-f6c857-kh55iwy0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-f6c857-kh55iwy0","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"08f3d382e5d7e00c1341d27f93cf0fee674cd781","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-f6c857-kh55iwy0.tgz","fileCount":309,"integrity":"sha512-QraVjUmuOPb4o0IudbkDE58QuyztqliCL1CMx4/1ETdcCDR7IGejzD0sDjJlqVtuJ5Vu1cfjrvOop1Z/3//t/g==","signatures":[{"sig":"MEYCIQC5oJiPuMLJUmTvQNSqBVlGLArfURpt02v48eTMtS1tkAIhALUTBt8P6vk8AQDqnWQp0gbD42DJKlLgq1xu6b3/kKbO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1513032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpEGXCRA9TVsSAnZWagAApL4P+wV59+a56HUiXCIT7Wfx\n9hI0FO1JP3UKja5gBDAx5GypRdIAa5KsLw1sP0WGEEyCawtSQBnY9X0RVEkh\nLKSxWUiyIaZZ7J1EH5MfWW10d9zMdCxPdR70vZAazMYUHGl3uIcQArKuhpiO\nFM/KYquZbluO/5WcwrGNsyvywec5eTQNRzrFHagposCcP/4GvCdhTj1yc26C\nNNHT/eM1IwsPnCLmJNNWldzusKMQcOYr2368YjT9ATEv729sovHqQPXiQaLV\nxnOW3bDmbPYX1M3JSgYWTAYUgOfNM/AifllJjjROfB1fZRxlgjMA4LrHEGQ9\nBqbqzuk16jHYH4UskKFuwBZ8fCbOV1EzMyJ54lDLsTs2HmYXe6aOMMpEa+Sv\nvpLxExxbMOF7o/VLP4oxOt950CtqVnoiKCwEI4wYgaEyuFuavjKE2P5K+QJG\nbc0JG95/+oLe4Lmt0mz+78ELErq+Y4L2LyUlmJGc6+zKtnpZYBDV401KqyCq\nD5PWY5KG9MxcIj9darzQufq1aTuofNq8cKJIHCJX/ka9own4T93MRfH+6Yzw\nALFSHczVRGtUcamuFLr4IQpKl2wPVrrVO5VS/8jq5kJjBJD2Acuxsvi1tgpJ\nh1alzbe7mau2LTqBiPVurZVDq3wfucmcDHXrliqpmp1OILGGKuHqWQ/zD3YH\nSvfL\r\n=wYM4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.1.0-alpha.1","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-f6c857-kh55iwy0_1604600214475_0.9553455930277861","host":"s3://npm-registry-packages"}},"2.0.0-feature-7e4a8b-kh55kgrz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-7e4a8b-kh55kgrz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-7e4a8b-kh55kgrz","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"51964e183ca94121d28aeac02c62d185b2fa25c6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-7e4a8b-kh55kgrz.tgz","fileCount":309,"integrity":"sha512-isNfI6JD+oyRZIeQXYShU6vSySWzFNml9rPsp6yDkTHw5cqzItJbfu7IMC7xa7LoCNrhVhvYE2XQNU01ecSSQg==","signatures":[{"sig":"MEYCIQC3oihOPAPzDx+9QpD5Ivsw+fTQGRecNKugzp1qRLGEmQIhAIVsRtN0a57wDmdy7sVCo4EZqi7xlcAqcsb2mLqCir0t","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpEHiCRA9TVsSAnZWagAA4UwQAKD8a328zBd8cJ3Oo9Yc\nR8bZ/kL+bx+F/+tppUAstM6Q4YifHFBoY58FrEIe58f1U+qWPrscGK8zyYP+\nwyfK6xvk8XEuAYIzwiSiZk3EFWKw04s3URbvmZIIQpTzTRm9vPBzNvgteLsw\n92hRYgxTCxguQGynQXJLJ8IN/mU5DNBQRf5SfhTrsMi7Xpqy7UIuJJ1uyg5h\nAsxYoGqhyqSPsagwTEiRjbzboRI0JmqUn7ODaNMEVL3IRgrv/ctmfWci9pRx\nzawQWfoeh7fITedVMFzs08pV7DngtevmBD29k5e8lqTo/7bKbRBzcryCE/7T\n9rwOKiqLGgsyy6tH54i/nP/+VUcFvKGEjO/sVzX7F6OqHVEJqQZFZ/jegtmx\nHx1UmPG9NPTj9QUjTYW6R98vbTPtzUqiXgNKgPeyRjvWIIIio3kkq53cwKZo\nxsjwvubZtXq9AN7GUZr9alEnObHTkFYI4ENlORMB0oRfUdb4cHFqZOypCJr0\nE/8obfMqTS4arcDjxtFHTtRXd1KLGOXscT2TU4F368fqOc/pMDlENw4m9Wr7\nSemL4qCma5NBEt0XGbl1XBh/A2ONQPKXvFSa8Epr+gJcCHoEiEXoRNDU3eob\nGVNNBePwBqjT/p24n/2iGa/rHZ24uabm+lni4+gGnATeImhV8dgoN9FExhSp\nX62B\r\n=i0Th\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.1.0-alpha.1","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-7e4a8b-kh55kgrz_1604600290110_0.18988948076925816","host":"s3://npm-registry-packages"}},"2.0.0-alpha.29":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.29","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.29","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"321521764ee5bf4eacc1c84ccf397fdc8df3798a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.29.tgz","fileCount":309,"integrity":"sha512-zz57GbpJARgeHXkeDUDTJC5nP+H6iwPD2oep3Sp0w9dBtZvaC1tibfrVN+utba6Up7GvAMhp6Fq8giiuXAFuQQ==","signatures":[{"sig":"MEUCIGqBGmAzfJOGNTgTqUIaBw57YuiLxsYva8juvzg1NMnBAiEAoUelqLXD5xjkcrcezF8vD3F7sutbi7Eh0s9wz9kAtSU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpPizCRA9TVsSAnZWagAAU4IP/ilUGMEXoHjAYoZd28lh\nCJV57ZwEp4Zj6jyAKesZRC3jhb8Ageac6+SBFUf23R5oIgEoTY3O0oIhLWRG\neHeKsPI6QdBFOuEs4iKsAd1y/f5Ova70Ru/DYLicx9OG0GU7godku/KwfjH6\nz5pJmvMoZWX4CUGVdbGTdb/zrcerVjry6ooxViClqiZY1+fYsUn51wB6cr7R\nXsB1lI0hj+STCocYtzA3CbM4yVnUrJ/yrwtZPZdcyqfBxuTvNJte80vw6ceS\nFikCCbzCaq3rgtSOXfLfKLO5POBZJA0eXVwrto/Lo8h8Ty8I3RYkEnnG7GSe\nngMyv76VKlJHVu4OfxsuB1OP95ObISIu8zJ6WuwWRQNt140gMdM5qP7xo5u3\ne0yMjPn5h2XiN12TVtIhs6RIptdXloZ8ASJxHMKl2eIPp8Nzdj/3032/MNkA\nzFP2Lovk0Ap6Ndkoqxv5ZhAzd9I2BSF+m9nm49K8FcRZSV4FK+j47n5bkn+a\nnBUCtN3ymCYaxpIKz6C7DCQCXTn0oVjX977O2zrnujKW5+s7grnVtDUvlqDe\nhyt1bKCw2Uc6waqO2mD5O0gkRovld2wgpwhgT5BZV9oIgKVeg5Wpc0fCduPh\ni4aLN4D0k07n7UjoUOUxyus05tUuLjjHM5/fW8wH2JzaL376m9dSUf5FfPKx\njxNj\r\n=ZTcP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.1.0-alpha.1","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.29_1604647090998_0.7977798662875244","host":"s3://npm-registry-packages"}},"2.0.0-beta.6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-beta.6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-beta.6","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3b1a756f9d97c90ee43cd7404fb44df43c093551","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-beta.6.tgz","fileCount":309,"integrity":"sha512-VonlMPijZXU4thQfHdMD3pU+9ES1Z2ZQVNWmgpKORXi2+G/JU7Q1Hj6We6Kdq+EE2Xkd9McYzqL8AtCm4vGcag==","signatures":[{"sig":"MEUCIQCKoWXf571vrqqyIVBBoIDao7iD2xIiNeXwUcG9x4MQiAIgM7LZK2uXadCva6rJePM754GTPUkFXcVzMvDEgtOHktU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpSfbCRA9TVsSAnZWagAADBgP/1+B6fFmFhbh7MebXQc/\ndLUAX6GQLV9WbmT3A+sey2fDBzW+Ym7byl2l466oZ6a7YxD2LXYcWtjIzy7n\nnvT7VhGfZeRgfMzg30g9FxupM2zSxXl6KMtqpzV85Z56eI53b6UyhvodL0Ec\nOaYRpZ2FI3QyAXBQ7pWJWGQb9bS28+iib42rCwIhWdUgU0hiQouibf4ucQvA\n1UC1YkSgkhomHEmfHv0CrqXof3pEy/qhvoLdf2LyyM6zXq69zSjv4ixY/nAh\n8QByZS6711nktftMUmqMwq08qG5ilsc1d+1UctTp74+uOhvQws5g29YeX0fU\njCNBuXGZHQKYukGUOJMK/SUkA4NenEVDmVCBigVxBYsuBitgvR9nyc0a6yvw\n5jTnPebwk1EfQLR3KM/oUz7X653kcz/yGVmU/8/GCmO+IKWuYpcBmYVcbHfx\nz6ZktzbJUy0SPiuz12lw/1xWW3hDzvetTHXb0q5B2a3b8lEh+NElwm4U36Ft\nZrd+mkOxmKXCqKosxg5J/nBP87lSKSUJoojZkpPFEa0kVgpXxuk8V81of+PA\nLzE5umyZtjUBB8vihH7jDHB+WBZrpB7+IJ3rgn+JmwqTRBHLXVwRlMcdmPB3\nr0eF8UjGIURJN20lBWsQxoWtjoQBSbmeEy4+5gNOMY1QqCMnA8RDQDeXPHsl\ndKMQ\r\n=cHlL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.1.0-alpha.1","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-beta.6_1604659163103_0.6410326776429114","host":"s3://npm-registry-packages"}},"2.0.0-alpha.30":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.30","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.30","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d500294b04967d8073b094720bd1f12d4808087e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.30.tgz","fileCount":309,"integrity":"sha512-6JddvmmQIxyvMGJGZ67FWiLOL3z6afaxeCOF2JEuoEXI7NmRIushnp7B7rl3Lg/UsysHncUrqTZ5xZTiBKP+zw==","signatures":[{"sig":"MEUCIQCmvK5CRcUcRzLN4r2fYA/QXjRVyerpYrBTnKvtx5yhvAIgMY/h4WR+vRp9/vCohSXkix3zandhrQ62yVMwPY1IETQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpSfyCRA9TVsSAnZWagAA4hIQAJ+RgPHhnWarNXOT3vXZ\nP/h+OXJ/QlHlV4OEW1jIL1qP7tTaEqzBsskhbPxWjZ2smhxgy20+V0jJjmHy\nMpfXOUaVBvLWjobMapaluHCPsOyqoeLg9VB2oVRWIqdKtFCP1N+iv98e1LAa\nJfGAn6xblLHpABNsn0s9TAsFKJaVhhiiSraGtmAbUHSkT+KHLPezOcHsqqDd\nYyZDk3aed60oMzcLBaoiS1mVDPwG2VfcKGjilD9jtteeUxSsa0S1uaThXAGO\nk/rZY6w7o1Xi/CzYX3fXA6N29DdR6xz8+7AbHG5lYtIWzgmwm1u7J3ZDGCg0\nSqGJhgcXkN48rFHHNU/jqKkyj+KhH8JhTlEmOy+0J5KkqeQige5W6kJeTaUH\n8vI2X7MjmFRkX95COW1hbbsXE2TOanKbnlf6jLh3rqi1sECBjo2MCbwaF93+\nqIYqrMBiA9uJVtWUaTcEflsQVwiewyLeRmb6MEi+mJa1VZSHFZpVVN5Xq4jz\n8umas0feZb7bVehoHxvssQXKQs8x4mSMHQSriCZMXPSFch5FpQovfSnKHOjL\n7rKme1jWtjyc1/NZZQIKwUpRwdv9jBmuTVKBk9H9qt9S0xyGfpF5SZT9Su4a\nVqNAXwqmI/A5T++TMMB6ojz2G6cRKvDoVKNhm8c865YhjeZQZPtfU1hzwLIK\nfXds\r\n=wyel\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.1.0-alpha.1","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-alpha.1","@atlas-engine/core_domain.contracts":"2.0.0-alpha.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.30_1604659186140_0.2143700640992221","host":"s3://npm-registry-packages"}},"2.0.0-beta.7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-beta.7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-beta.7","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b1ebbb53d894e86278032c247c7a0fec13a66bdf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-beta.7.tgz","fileCount":309,"integrity":"sha512-7MR6By1XzR9l0GDQEU97DCeRflxe8YTe+aaUrpc+sC5P/WE5Bonw4YqgfOfyYJ235yowanfIvFpfSeI4GnYteA==","signatures":[{"sig":"MEUCIHBXT5nYpB5KIpzH6zccQTgQz/ctI/nyrMdSt16tV94lAiEAhNhjrGgEZnuylU8TjFBCPg7HMkYa4eGah3o6DbC5XpU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpT2eCRA9TVsSAnZWagAA2RsQAKT0EZOZR27TrcCP40fd\ngsg8ll91Z2GOHLNvS6XhQHXx6TInaJ/Spcp977aksX+sg7lVtfA+U0XmxVKR\nJlaAY82EYHTSCLgkUBh64Dcch/t7UBBzZFwgnfMy6CLT7U3aF9GF23QFSujk\nnaHg2V4pTsGocKkXX05k5ksUlw1ipN33ewLXjMcN/etvrltyOZUcjwfHzc2a\n0F9iJ/AWPjCaWacleSO74PELzSsB2Mwrl/poVubY+JIQj38UecqSzjHyacNk\npRt7h7nzljiZWKaBzvSjFMGbdjagKH+P+w21tD8OFDw3fIdgF6/EP8YW6kM7\nYu3BwoF4E5drrivlZWr2l2zQThOaFMZ0lXN3lOTE13+V+TYACyd/9/hYkdIL\nSqNi2O6JFB7fRoqxiaM5QI4FFzRnloBLfQ586RPwSbbQ3wY0c/FdFCL4B16t\nhhDEuzwHdl8IPhQPRJGB+nTS4y+DC2Xt8DO17rk0t0FNrLb6pGZgPF2EDQDZ\nlHOTKEXY8UgZcDRB/LTHMqqO4WnZwpGaB/n6gWwCrqLj/IwDGzOi+C1g14Y/\nB5tAscG3NjfryDfJfe71rQx7a7qEl4N28tvBSG1TuhLFXHOJeiFGFArFbFwb\nCu0RwlyjtPfAYSQuLdCWDE1k/hDXhRR3Uly+pigRl2LjzEVC0noMDx0Zi9mD\nhlfZ\r\n=ULQp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.1.0-beta.1","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-beta.1","@atlas-engine/core_domain.contracts":"2.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-beta.7_1604664734049_0.947231389323659","host":"s3://npm-registry-packages"}},"2.0.0-alpha.31":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.31","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.31","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6313ba1530197f5beb2fcaee7545307de2853bbd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.31.tgz","fileCount":309,"integrity":"sha512-cvFtia+OOOJzn24hyyZw+TWBv23r8y5lrtLk2LM3/SMyTiqfPSqBzby+L+TCikt8MLdekaMoS9wW4GUxGJoV7w==","signatures":[{"sig":"MEUCIDBT1OyzLwm0R+RkLvzR5riLtRlviuBg4JdH/xmEhbb+AiEA3ep62Xnye6NwTrtPiENQDxEAzWLvEzXk/e9nGQh3nFA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512953,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpT67CRA9TVsSAnZWagAAX1MP/00rEvaojITlQ2COD+lg\nH57Zc6uHvjUklDDYz6JBuRITSys2KldePIcnnKTu5Rsaw6JGN57/5hg8tWA3\nr77P33cELOeRS74qlVUqKqJTXX4D9SEPeO75iJ6ufdwBYKSAUBk1urKihNHx\nEd3FcxJqg2qZg9uNk2DELV7f5tDgLLwsHZc1YIPPhbvQGb/rzvuFjrCa7hSj\n9+PzZmyeCQG5pvYCyE3E88Nw84wLg8fj/tvIDbClmVVP7s8FWj5giRrQ138h\n9sMbK97wNXXLC3CaDXPSiS31lPsKv93HdXdUDGW50lVkf8+Asf2awvKvYmI5\ngEBnwJFsuWL5Xfne+S9cMwj8tngzZ+CRIuubt5DkM8FCZbDVatUTDBmrWxmK\n+xxSjcAhoe0/JTKfbnruohcCM4VhGwQ8olQPulp0O7Xc8udyuCNgmz06jsZU\nb42DToIDr7Zvj0/tq4R1/9VLE9HH2Rcl7eNagOrav1nOVdjSkcvWPSdKrE/I\n4ISZMy6Sec1Uy/usOa63qn6s1gECkNewvYdCyqOmc6uVTCjsEiTl8vUnTxnR\nXD24zDgDw+QAIaMGknz9sL/b4TIu8VzRfCbxGkCAzBeEyUkhsgBq35Vn+1lf\nEGOAV8Rg5Y7QYICi61PkdEaH8YHeCRcw5RnGHeeUtNDPGnTLTydBVzCtZwAW\npFd5\r\n=UFUy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.1.0-beta.1","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-beta.1","@atlas-engine/core_domain.contracts":"2.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.31_1604665018620_0.06097517977831268","host":"s3://npm-registry-packages"}},"2.0.0-feature-c26f2d-khaojjmm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-feature-c26f2d-khaojjmm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-feature-c26f2d-khaojjmm","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b5952e57f6e89186702c7e67338510b93b8a7bb2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-feature-c26f2d-khaojjmm.tgz","fileCount":309,"integrity":"sha512-rXxXg49zYOdq04co3+Cvq7ydPdyEr0Iom21G+Z6mDxmrGlQPMFDVjaWHaGAFdf1Wl7aYnaihB2jCMLHqeEU0nQ==","signatures":[{"sig":"MEUCIQCbTemlj9EQ2jbMgmMomJA4rtjVy4TofUQ7TCKDWp7AUAIgKZVkB7bUsJfhvT3T465twrpwDotiuovqaNBFR8Ff0aI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1510904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqVtXCRA9TVsSAnZWagAA01QP/i4Cb7Nph0OWdq+z8ocZ\n4AbG/yqagLihpIkAgTgGJRWKu2xhhEe2Bql5IFuzN6LRs9DNlpXU2oq3b9Hh\nifytvHYCtO+PKC6RAW0Y4R1K2mDRLd5QfzyXZPbCxpqOJ++H1ZcOzdG3bskj\n8a8iEsjKEBKQPQLRBuORRpbgoU9DlVkQJ7ou3dZ39142h/Kpxd78nqLo9ujd\nGNuL0pjoxGEnYbPOYo/ZZU0YQV/fQKG6Y9Xvh/ndK2OOxROq10OYrRnMOz9n\n0ZqT1QARQ1xOXrTLAfV6yBl5Lmje0Y2sYpyeJBMcLyhiwepGIhy+6RW/F1Uc\nWF3/ObsjzPiGG+Lr640ZuDDIH08BkxJ30sHpi/xXSzkDC8hhLCEovl07Z9vf\nEyJezBA8onLIN+V9n4vsGwdmGnUC4cDej7HzQGuUOxu3mTyUv6SgUobbJX/s\nav9V+UvcFLxlbPb2n0TO4M+KKePgoGb3BpIRw9JhNT8oZpw4t185RLCgU/NK\nYEdfNhT9C3AO+fdcKA7ZLYdklCkotrBa/1yQZriZMWIfPIHEKsqxz1L8PWba\nS6OrtN6Jggia32vpySqjZ9/VeYo90gJsbZuZudQjMSMGf8R3Er3fTF6cSW4J\nnzJSo2G/qk1YhC57XYE/xUliWEF8it21qEJktkxEgYmIBlDtlUSOZKxMD5Uj\nj46N\r\n=Twfj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.0.0","@atlas-engine/iam.contracts":"1.1.0-beta.1","@atlas-engine/process_model":"2.0.0-beta.2","@atlas-engine/error_provider":"^1.0.0","@atlas-engine/event_aggregator":"2.0.0-beta.1","@atlas-engine/core_domain.contracts":"feature~remove_claim_checks_from_persistence_layer"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0-beta.4","@atlas-engine/eslint-config":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-feature-c26f2d-khaojjmm_1604934487037_0.7089267521267122","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7e15289b692c3092e07f70d93d5fa66de8d0da5d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0.tgz","fileCount":309,"integrity":"sha512-f0XxEcrd06UIh3uDZi7Vkaq3Pww1sP9KsubDrvJCPLCHW4sBv5V5DKv9m2MfqnK0VZ6cbORZacscCPuaqQ8Nqw==","signatures":[{"sig":"MEUCICfwRgVScLvyKdFjtJBr+YLO8cvdasllQ5BO9kZ+k6eGAiEAnYQMHONovZR+5pbGHJlk4dJDwbvXXTj7+YsjuX4LbKw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq7y2CRA9TVsSAnZWagAAllQP+gOa5hvsXDyFlG5qyPHH\nDllw1EMrQnId0rtUFASZ/eLBw0Yq21cQUwCYoseXi5RbPsBeMjJu46sIsN8d\nxsq+t4Jf9nquKGk6tuPZEASJDMewD27YNFcypUOiZYSv+IqbI9kNCix4cQpE\nss9VAncVjo5rY8LU0guI0qbT9w2WZl51zBqnFMRBiJ+u7AMjj+HdFVFANFL5\nHAQdmea/pWTkmYncp908iWKuoCaMqM+1CuiL1qU66TuCavHWwb5xwuOh1JSM\n/btmjjjzQAs5WCJFDrDaer4blrHlwxfgNnycipbrriBg6juE1tViS1c4MKmd\n17IS0wB0oMeH1WqOSrWVp4/MGjT1GdyWvdqwaYi/zQ4qCV8ITIlFYqa9ADLp\nH7irx6Tr7AzPT2V48/+ZdM9k53JFwlIG3adqssjPnkdqgs5ve+DvadEbBw3u\nQ25TbTh4cOMFCEWxjW4N0ZeMrmbk/fheQzf0UJcJxC+25HRjMU+ZY+G1JDsy\nJijCAh81UTOTeT2NeqUIonuHsYgstOlgQYHt0ZcK3WTJer5ZaMGAUBFxD26U\nZpC1pTPjcw1y+5JODR0d3gj3EeM425vXH8rQOgP9vyY9X2Gnpo8iRd77Uv2/\nEfnw2QmQ/9DfVys/SrJ0FFII5prWelmlcB0YVn/GIUpNF95eD47W5wCV7fYO\nZdDI\r\n=v7dv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0_1605090486148_0.7783556469461164","host":"s3://npm-registry-packages"}},"2.0.0-alpha.32":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.0-alpha.32","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.0-alpha.32","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5d0a23caaa27d1e1cc0c90a89d734031f54a8773","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.0-alpha.32.tgz","fileCount":309,"integrity":"sha512-/8R9TvhTNuV4nmEgkz/6GXVYQFcmU8pZbRQ1pIlLfaPJozZExxQ/8CGY8y7ZkPBHQaaIhZNjCviYVsSdm4uWjw==","signatures":[{"sig":"MEYCIQC4Rw5ue2AXYlaXANN8HKV96nEgmbz2uB6N+z/6VKztUwIhAIVBoN7kwFZSe8YLvOol0e2D1r4KT7fF0I3GDXTaZ/lV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512918,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq7zcCRA9TVsSAnZWagAAYb8P/1UUeimdJPtz5SGX7H8s\nThGhwucjioaBWqk7RGrDWy1u8kZkga/ntpSwVE77jotNcFuOhp1L/6A4jh99\nqzk4MsxIHSWKDKTrZm7ADtqSfui7bWV2ZORbj7iXapKsgoAn9CZy6ub5yYfB\n5SufqZwwJAGDnY7ANsnFFvtnG1HEou0RhmWOPj8UjqR493ZN/PvpM1nQ5uaa\n6zkfimj6YD31yIVWU5ZUtbuOTuiY8NSqJMppQFBFb8fTARFH3oyLbw2WhwAR\neN4NDVIWDAXtr2I4Qt2M3yViRLUf4GKLfxXSgyYfajRbYwRSHR3iHMO+ol4N\nRgAgZMABSKM0lxchGdjO8vvFm0FmTNMlWRhTbWyzuwL/gFR9df/d0UAcPZd8\nyYxQOrQq539NUxWtwZGlG5r2xqP2eRXl3ustMmxCg5zqVR1EoTlyPKrm/NW1\ngWB1rOPrSYQKSdmWZVvV2dnXWXTsj6ba8zkfa1YbYTImozvMcbGE5RNKeB92\nRKIUTOfi6m6X9VrB+aU68Zo7DWWdikeBKXH0Pgcjp189yW6dfRJ7I170DaZg\niV6RL2MOVAMdTs895Vu/srpyJlug+gYxKKXsCUQBWgZ8jpfLXlm4gfO27d8a\n2Dx9ajj88k8sm9R1CARsQx/qSDaSoig9+IEuzggZKGyX6rWJ+USeb6pbyW4J\nz/TX\r\n=f4zb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.0-alpha.32_1605090523666_0.516880179326396","host":"s3://npm-registry-packages"}},"2.0.1-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.1-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.1-beta.1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5596320b9492eb18e432ab384fff1f53bb82a6d1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.1-beta.1.tgz","fileCount":309,"integrity":"sha512-qIVXHOO1BavWJhFagsyf1QnRn0Y8hu+76pmrN/BG5Im4ZoUpSba98eshXgBFnK//Sq874b60YyRN4y0/aGXjog==","signatures":[{"sig":"MEUCID+MFSpTJ8xc9RPVeoVimYTSvLmtBhSvmelvlMoM6iVLAiEAzhaHaZD85LTtzO0MjWkuVQ+/rQUJOodbsvSSmfopkdo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq8eBCRA9TVsSAnZWagAAu4IQAI+hb+hWG3kRLB4UD3uH\nJFhpQzNcjeMOrHb40E8ISAboe8ZxCp4iEcWqJWYkPwtbuPgisAGuRIyhB2+H\n0yrnZrIxwEca7al/D5RP9hXud8drwff02yLLFdlakShYUns6YBcEQTIoxEln\nnhLvCKYl/n4IcT6boCDSgDWlCPL0hO9o8RDuxzNo4YEVXhHJHew+a8naA4E0\nj1iYOZ3kYxU8r21SE1h7aQyPjzwIVHDkrENgV8E7hSnvwiEKeKunFeYbmKMB\nlTdsx7qVeiQVWSJG8lks4TP9H1kA8DOhZJamgqSTD/4hpmfWk7d6IH6aPWQg\nhWnrifhsruv0uhwYx9VTWPjeZ6S/bjSQJY0GBEyOd5mmFMKr1oVs3kMznNRd\njUy+DtcnqeCeSKdF9rYIsggWfaRYqQ6xdYlexwjiQLl+bZ5ByztSNDl5KGnI\nQoI+G6wIjlNefR4fdLca/yUdOSxy5cArRS0mP/FaC47TzsKYlLPfyfw/VT9b\nmhOI/fzeEZmS1RJh1S9DtY5jSyvVWFGGu+eshmCfVTt6xQrSy6AXA43alth6\n/h+1ilzMbFuEjkVGxUHqmuq5wBnk43MBVb/agj1ZeNTwh9D//S8+Q9pRg2xP\nwGak8fdbqvfPAoPAeDXCrvkfVrauv6l/76zLqvoV/vnKjcoXBtyTm0ShgsVa\nFBZs\r\n=+g2a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.1-beta.1_1605093248338_0.04498125526909247","host":"s3://npm-registry-packages"}},"2.0.1-beta.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.1-beta.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.1-beta.2","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6065d62e157b381b38bfe952aa8e56949202a738","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.1-beta.2.tgz","fileCount":309,"integrity":"sha512-7tL2HXFNv1CXxBiQqx4bWDZQeE60wn8agxvkjiC/bXNkjSxp/PrfMuwh+YgfaRm8LPv/8iqiEaLNf8SWFb3D2w==","signatures":[{"sig":"MEYCIQDu2k331+UR0x83egrmMsTDPPH1R+CywRqVU2CxwVy71AIhALBdvHg6Xsbv3L4rw7Nd7u0gc4pEaa/c/8Jh/OeyigLd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq8lJCRA9TVsSAnZWagAA0ZMP/jHynsCcLYNQga3C8Sp3\nZuIk24RSG/7EazCJcRpSlSgehFeXpF3tiZm5l3Ze0fKjZx/KjVAKH698IICm\n0+K7qqNtWo9JIlzao6OLgojpa2p8T1Hcw2goKLZhb4v3iLQobqUMNSHGXoTN\nx/7vEhk3hD9Lm3DsMhpeldNrNBORQ12jjgfCyGdw7Y9E4Ta+DlnJg6BNC9Jl\n7r5Mg6iALtr74VMf5kCEJmmELCBxttQ0qzTr2tCt1F3zylsLO312XjlWB8wh\nN6v7UIThl0paQkz5K1oDbh/I8A5WXVFZOvNmBarZLumII92N2A71ErNQR4uY\ntKuStWlouvUhB2TCpxcVx08rdBPB5CWVnU1GCPcQa3U/KlQACe0UPl4W90Vr\nd8SJK0iGjR0R3Jl65HlQJe6ZYyfdSksHMwFVGfwJvJNRAn3KeryUnsQaxemC\nJdJeIDIWsdC3acrg4d4ugux+eLh/F07aub8UQwvxY51ArBwyB4EEj+S9K2Nw\ni578D0tgiTmr9bLe0LP4XAOPGJLXEXT0yOaF2/0SUSZDYLza/YwqtpYSbEWs\nG8QtHgJxC/Ig7qCSAx6WZQvm5UdNPsaZWKOZDOLqlH3e7ALv4g4qyak/uO0c\ntTRagwLKQbu3A8UnJR3ciB/XxgQYiFlqMjrIW8yV4aDzfNMZS4qmNkEnUjcS\nE5qr\r\n=vonA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.1-beta.2_1605093705312_0.334498709817999","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5754d5740ee179166fa90569e72171c2b11201a0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.1.tgz","fileCount":309,"integrity":"sha512-Jg2qbtvW/qnSAGEAqxMRwBITO32pygVOiRwdo4+Ty+ygNBnndLGORzIiZ1SS4px3mDz+bry/hp6mwu9i9Rlhqw==","signatures":[{"sig":"MEUCIQCh68A73SndjMVdH7LvuPQmauyDb0gOEl6tU6o0ForMzAIgeba4FJHot6500wCvlc42HGGZjBM5DOnke1APROxc6I0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq8lQCRA9TVsSAnZWagAAz28P/jPpmwY4rW/t6B2aHszE\nHShowLTvLFhznwdq0k/0cWMoz3sLrKjYd5C0vgB6ASKENvFwpVQ6wcWOC4Ho\n3kWSbErqGFERe4Ug6grq2zjU5Z2/A5HLF0Ohe3EHc/F9DpweBFRcpN/svpTl\nG45u+sLylMxL+Ex3WMAeJvqnbakRpzLwaNfF3lkE0/iFuvu21W844FITvsxD\nnqWAkQj/QPW5NnmbT4ggm8kr+gIiMhsPutmaNh8+noSRTc6bN6w0vLKoIARe\nlCgwcn8vpxFyg/kCyta961/BQQMQvVvOB8Mx4b69WjDpDeYcsPk6HmT6O3M6\nx+rwsabUYKWBsMphlRaLzOdRusx+SP/a7HfUBaabXkRHh+2LUDfsXzAyVeiV\n1DA42fCc4hggb4wDwSqtpudiL/trfwwqBENy4GlZhLS/KWeeOyRuNxOKO+Zd\nkVdMjCCWw0RhhytnM9gQVOJrndRmeHs98FiglMm3w2pRh7bf2MlFMgK/6LEt\nAeRKY3XGUQIlyEbkaEKQ93wjfRUhhdRjnWBGtStoYk8AfjVVaaWl2tWBgm79\nEfgJ+KlHeNtmjX5d/C1pu6656EOXCWqcIi+cM0Jf4liGpxZ3Cm0BRN6JxCwq\nnytA5f96nUIJvojzzHgxlura6oHqCzvHtBHkRKf5k401daQ3OxfVwF16vjXg\nChor\r\n=qytI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.1_1605093711490_0.3904566791711339","host":"s3://npm-registry-packages"}},"2.0.1-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.1-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.1-alpha.1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d4dabffa7d5ca021d7c89782e97bb90c490b03cc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.1-alpha.1.tgz","fileCount":309,"integrity":"sha512-Fi5eOmzg5VxdJaNWhwXmP47RDVAJWi9OuLRvMA5ctqgoxyzHx1bvhNBQUEavF2J4l7jxiJRziPSw0+JJp0h/Ug==","signatures":[{"sig":"MEQCIFBdDNS/+ACNSqD+052Vhb5zJFo7hOvDu2oGGAtlqafMAiBKU7ryqCYSLTzVWpaLkco46DCq5CecOE8p/xHTotDWOA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq8lfCRA9TVsSAnZWagAAqmoP/0BxPUP2Tyuv8ja99PF3\nhQ3ky6rNZX0lnx9CHRqviMAkhK/z/AuC0OJXvmu0/W0YxZwtUGQ5u5zaJvG7\nbnoiS7Tywjp6Sm4qGpmYc+VH+hnkqC6eHTG5GhJ2TG+w3N2tRY1kZlg4wg0J\ndzo3FsBmRGcdmhjZMLaOtVfuoiwx7c8p/T0L/IeMTTGNJNmmRo2TPoXj+J4y\nOySErDuH7aX8AYOVl3j5okJa12Y3mpMFYYo0fZi4WqQRAYliBW24KU7LT9Ed\nIOcHNRAUHm78fuuT4YTSOAOvMND/pZoadRsb2MzJzvaBKG2vNFLpmAUI/Q+t\nofqNRWJCCR20JBeBZn9iH5zAtx4yECrTGDBO+ZDOR3G4CCYwj+eUjbg9lc79\nYOpw7hXrTR6X/7UocetgXFP42N7MrluGTkSf7osIJTiLwGvOHIp1kkCeF05X\ntuQcfbxFTxNtUi+l9V3L+jSbH5j5ukBjKPktWbqBXrT3oDbSsxSPaXLt0kIn\nsZu/qIx8la9y/+CcaJM/9OW/2zrQ8TNkgLkvpc5vpNAk2po6eM0WRVYSOBXi\n63I+KNAglweI/xdVqSIUXWuX3KDr6G3boMV2cDAVG6EFV12xhJY6VAUGlWI2\nCCmC1LjvMglcn5AkKUw35uU/FPWRaIscVIgmyGplZbcCWEw10OIQ7QK0DPpy\nBtpo\r\n=xoqS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.1-alpha.1_1605093726885_0.8031405010932404","host":"s3://npm-registry-packages"}},"2.0.2-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-beta.1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"db3b5e49de49c97319f9cd180a770b07485153eb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-beta.1.tgz","fileCount":309,"integrity":"sha512-PLk7tPY6GpW688lVNfmprA5lmKPZ54wyzWj2tj+1QZ/OtWyCD90bh+VyB/raCzJeIzkvOWG0pZ8HL6s82pjJXw==","signatures":[{"sig":"MEUCIQDXs5ILyuXQQepcRtIbwVu+nZScJNcTJsxJuwhQ/ORBIAIgZy1c1kY5/kQDF8XacaqtU3pAuTFg62RR0kHhdAh4Mlw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq+jkCRA9TVsSAnZWagAAodsP/0Shup97zBo3bueD8agk\nQ7dXQ5mF0lLn6b+KWzTSr0rVRMcLxCNtbzTixAwj2x08OwEv7d3RN8Tluerr\n+X3qs3585m8NPcFW5vFZfByppCeZMyyx9+r07h2W0y5+MHnR8eX98wityWL3\nA/EhEXyEt5J3yE3w29MKEUmbJVmK+mIFaPNKNrfEfpg/xB5V/yrZp8SQAsjh\nGon3BS9p7qbLH2oEGDgEw8Fv8PIKIAk4V0zp55zrOb7Xkzob57mK5N+G//dn\n14fVIbK3KxEfU82jkdNi+YH7v7UuuhyEH9pfdFMNdrICDIH+UJPdTGZccnKr\nYB3+1UKvNHnJvgN8m4sR0TgyW5RRB6u1vaz1HffmRBREUJ0fEKU2DiasFrKq\nFolZ/yL7H+aJavlm4VRgucvUu/x/9gp5r5zK1pYfXfw4Bx68JnhYfJUYNNLx\nRlaq7o/uTtx0OLq1BMh4/aHPmolzgT53r5F3OSoxPvkUfI2CDItA4qDNo4yz\nL69+MWlZ+PSkEcy9O+WXTwc02ZWg+xFzgnBf1G8DqtulQ9HBA2Q3kwKwkdsC\nbPlGItPTVjTJ7RAjoU1rwCxOFhi1Ba67JOqUBxECoOhYGM0+8/xW4Vurpk6Y\nWw7fz29PGC5cdfAoouUqI77JxLoUpQu6kTLiuxU14voIdqJFUHGaXe+3nv/3\nnAkk\r\n=NPr1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-beta.1_1605101796084_0.2349061093418816","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"16ae7e3008d343cc80dc2ea7040cc47727be7c16","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2.tgz","fileCount":309,"integrity":"sha512-F/C0Kfr/+V/VE9bwo5oeUKyZ2i1owlZRwcvP+VoGVNoSIZ9g1ZRKsMP/OtpJsj6XkrdfrNQqUY09BlkwJRtF8w==","signatures":[{"sig":"MEUCIGM0WIN5sJdXOeYGQvhe23RzCMUALnampJa7t1S8tChAAiEA0TvCy4bzoGZGHkOvKswfbsOC9M9RpA0B962LzsZ6+ds=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq+mLCRA9TVsSAnZWagAADZ0P/ikJZY0vGHb3IPiDThbG\nj/aWdRU982u6Ez56h1NoW73XHuM7Too2knmaBft6ibPBN0CPDoVIRfKYEJFJ\nteuXm0kPS22giwSiKQzPp1GLad6ezG1BqMqDXOBTB8wz2TVTk7X38x89mEdm\nkrMOc2WJwiDWJSyMNZ1drRsvqC//oxsyEixLMOZfiI4P3SVlxdGykz2yIzVp\nGbz/6Us6ai5b0x4kEl0/W//c6h6nWLjxNWrP8YVeAuKZBUaGDy0ru2nzcZfq\notX990jeUgwQhDeIosssqlwfBf6fhZE6saTuVo5egV5eeMLdc6Q/YogYuUnB\n6UtIS2ym0ieFI+70OmMa4FP0KSuhgZCs5jBPuUBYF2VqGFRC1GdI/V/UskBu\nUU/0UmVPKOTzIFlsPFNH8iWIgz38ZNlvYGfNep1dphQsS8vl7vW0dqKHOGY0\nLWqq0FVft+MzyRNujNrsA88CRXGHWB3doiS10LoHtwCi96zoyYVFdG0EI0IO\n7F+Y1uiuCaTRN0q23ErseTR0cM05KEaS+W1+sTtwGI9m9QqxcoKcM0hQs5hv\ndAnZE89lDA8sgO/vS+CrnIoG+rJ6n/RASMGr5NbMT716bxSfUNC+AreUWEKW\ncx1bm2pKpR749Q8XIpvLkEiBEmT+ktqnwz8TcuB615Ovz+qdPK1/4CTFgF9Q\nuKnu\r\n=CaUc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2_1605101962590_0.6155861993174401","host":"s3://npm-registry-packages"}},"2.0.2-beta.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-beta.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-beta.2","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"51472214464cb1457e2acf8c272156e34109de8e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-beta.2.tgz","fileCount":309,"integrity":"sha512-DjcIk8ON4LNLrMPAa76e3K3tNMzAcBi5Y9sfLR+S+Ew6wpUehhBMYK2bRb1gplF/nNTw2PPBiE3XsIu/0cywfA==","signatures":[{"sig":"MEUCIDNSZVt39MtVIP+1PgbNSZuHBASAbI64+Y49c+IPqNVTAiEAzWfimu1SHU5w9mhbS3R8f9Drt+lrKHhcsrspBonj1NI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq+q5CRA9TVsSAnZWagAAvhgP/A0aWJ2bSJ0buK90saGI\nOsc4oByFDhRjHRSW5KAgzIXS+Mtbw8YcRakCNs/i0wTwmh0b7TswAOJBS2I9\napCO72i9/A1/EnbifH1P9ZyPNBg5YKCsFjKI/zfOakpX+7skWQp/yb0UVK9H\n9JYRrrF+wxDmaUJVntJyTBDSCatomZhikSQ2A4ylfjhZqP3ogTNhTOoUNARs\nVdr260N+UjfbisTq91hiUlknA/nhQkCYhoXUmetjrue1Fi5ZJDnY2DfV8uFT\npo9ys7DokK5oO4WCbutLc39H2nBQ3xfsmXInvRbBKSnScWayzR9Xv+OJJeMH\nlAeijmLiagMDdZlcvApil1bVcFXkJx9NliF49Tii+FobKjmBJi3huE3lLs3R\nh0WViNog3T5KzcTJ/S3cT7RS93M61CWraD2Rgfs8jrgs/rVXeSHbcI0msQ8m\naHO/uOKM8shO/+7BZ/EXIpkjNu2b6zsI+9g6mIGa0n1OKDgeHYDZDpGnoQnN\nKVRjsWCJUCdBWLKh7LqUhDYOEfP9PyPTXJrmArR/kKvLBXek+yEOj8XmtZVI\nVHeitHcNNgvGqluvFeNzIFPVe/wMN20l39Z9zMTit7rLHxjW0TmHjzdWTBrr\nOOVL8yScJi/qiNtgbrwo7qaFSh6viIyVPTzZyy5BwWPGyVugOe9Tkb7K4zEC\nVJMx\r\n=NkwY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-beta.2_1605102265110_0.18412780203205759","host":"s3://npm-registry-packages"}},"2.0.2-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-alpha.1","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0973f6484aed8d6a2be1d503194ae86214271935","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-alpha.1.tgz","fileCount":309,"integrity":"sha512-90grYZzLaxm/vqpcOArmEwP4LLkzUU7mZCMHjiiIQa9YEW3WQjIM99aTUSLL2F/7LTLH205X8fEcA6g/AJYtxQ==","signatures":[{"sig":"MEQCIG8wjc+RnpNEGHWlNJLK9QSSNt1zaA2VZAyR/1m62xHGAiAM1cDI1zgb1z5awadLuVw2epp12DZJBAoUOy9hS+ag5Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq+rxCRA9TVsSAnZWagAAm5gP/0FFQR+fLFS/cjvbMNIz\neNZF5jDzx/vrmwfBDTSpEBO7fJ+9rVrvmbcmFBb/WeAQLgfjNG6Q8EmiFRSQ\nL1jECofh+tE0FgAiKxi55ytHcdgTFr5IYlVWU4vuBRJ809b6DpmjmJWz/xJg\nGQqb05noq0THayjwTeNyaSBiIUSEueBa330h4m40AYo6+XcyzO4Vx0bZiIPs\n39ti56xF6yLp0amS0c3GLzLLodQQ7nEIaJEeG7BBNTNvZTm35VX3GP/7qv4v\nAbxp1MaipTpdKnERN9jBPVneZpJJoDzIA9kHwRIC5oqub+xtJoiES7V8Qlg5\nDmicbfUbeYrDYREnK3m+oOiM61xtEpQdK3wRpXVMv7ERs7blLtjTnVENGZHi\nLKexsv/SCEGHOkr8pCqLkVGIJ2aiJ1WZo3OFuHKf7a76hzohvJnofFxWW58q\nXjomEFIs0vcNZPkHTUbLlZRH6H0q41SIUwYvMXwFnf/H2an6cO2QRXTJz3Xi\nICNCgCpAv9+iLBe+rIz1yYPHwwV3xBDOH2znLb4frQPnWEAMRu40Q63XQXY4\nWesmHS/dKzNPTukCYMatarm9djPr/XNKPVtYRK8yw5buS4yt8GELlCPBLYAW\nY9sh8M8uK0Im49FjDo3VrwR7xCgDuV8g15m4vy6LEZ3OsauNKSOgix0vOxNQ\n0Y1W\r\n=MmL2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-alpha.1_1605102320677_0.9374042093396908","host":"s3://npm-registry-packages"}},"2.0.2-feature-55dc94-khgcbhen":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-55dc94-khgcbhen","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-55dc94-khgcbhen","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"454868e801976f4b552bc6da473fd2a252bdfc6c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-55dc94-khgcbhen.tgz","fileCount":309,"integrity":"sha512-t2vxtmrh3Q2E30eg/QIWWZGGHv59ScZBw0DkUkO2j93wd0fMqtQbO9DYn1xWo2dQ1ckL1Wlhqyrq7exwe4xw2A==","signatures":[{"sig":"MEUCIQDZdmpcZbWkHm19dRBfgUgFiaarDQaN/y3hc14MlxEumwIga/Lgje+5MM4WmPhwczEPqTEQqvnU3mjazyD0ZRmwTMg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1514190,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrpRWCRA9TVsSAnZWagAAjpYP/iqqKCdEC80FD2txgN//\nhTzLGd4bCnz3OTEFKscz1ojYiU3Tu84K1hvW4AGBz+YRFxuhXG6PjqZTq2HS\nsnPyRtNwiiIWjpwco3bBnAB2UvBrFpdpIgvFito5Av0aYlfT672Kjesfygbp\nQX+eFckS9y/SA9EVjAWz+wtlUXROfwyzfJNw/fP5bK6uQ4sFkfgafjIcrW/J\nhXKUMYekJ4hy/qrhLAx/c7HZSQcujPK6vGllZdjtfxKppX9t2Z4P2LmSRlpr\nez3YQbZMaSYNeIQgp3RzQX503fIAD9QgoMRP6n2VjZ3BHcMLafGo2tCNTWo6\novtu7jowr2ED+pZ/qFmqZS0TjgTE76IX6LmLDj5b1MUuv+/4XV1OMD40K0by\n5p636zOYeugFbBP8fP3yXcgzHtVQI7zshE50wGaSdO9UR6CJFV8uSqnfjRZF\no2GTQjrDcsu9LK8ty69eVORs/Vvsqy+IRlQTGa6SWQVujET0HT/86ZbL3O2r\neVxhnThAMQWbkIkROKQ9hZrM5UIipjXBtNDlJsCKWPtT99W3hzdBV+4/b2x1\nPfWeE2vELKYtrL3uYnPPD/lt7JiiCCoyAuQqOVwkTHczaEOCJtAk+Fya8yCw\naf+eckrQPz4waObLykSVM8xFmnM0PN/fPFi/vzZgkxuxF+mq+lW0p9+G2SFa\n7F6g\r\n=283S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-55dc94-khgcbhen_1605276758112_0.3753215366979894","host":"s3://npm-registry-packages"}},"2.0.2-feature-eed40f-khkmevhr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-eed40f-khkmevhr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-eed40f-khkmevhr","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"52cffb9632f0f83524f6285913547b5076e89a7e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-eed40f-khkmevhr.tgz","fileCount":309,"integrity":"sha512-Phqn3rd19ZowJRtKmnma3hpNWmJ9Yvyu8wMNxi4VFwXo/v4mmbo371R1eihN+S6GnfzUwchE+HN1ODYOaFRAfA==","signatures":[{"sig":"MEUCIQD9kreXZy9K2ykxsUS8rymJ4EsB1gZLO9Or5bQqS1+aTQIgJKdsmPzwFOfMpPuz9L2DYLiAUjHbOZcgHazxQZ+XzC0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1515083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsodVCRA9TVsSAnZWagAAl6AP/1Wo9T2cJwJas9mnENrL\niGPCTbSlOCliq52XKYLNwW6NH4KrdP/PzF1X47PTsTYySs+/OiqMerTJnszL\nFffB+rCi7dnK1/Fw/lpnnvGFKvqAmCRN5KGl11etl9AROH21UNrwgNn+ckWG\nGLTaqDJmF2IG3af/gIfjtk2J+b9Wz0PasVORQ5OYp/oVJVQDZ3e21unbh8ni\nAGNyUm5hIJfiWYlRlysNxeySYMUf1hJnPFTd3X5MthFUINUoGkAHJNzM1JKY\n/gumkvwX/LL+86H46ScxlYYZrr8X+y3JfNVlJ66nbZy8B9ngGia4ow0EVn0F\nWnnJQPALduBTevH7DVJsy/2fyrRqtR68Ormi7YTh1HfTgobuezAvq0OAbiuK\nwFwNmtEMF1JI3ji1dOhRDxz8hpV3FxwKysdrUgd/V8+K0DdvXA9mMVqNVHHa\niTzXOKqq07/W1GkrcMHoAUK922ndPxbnrR2qjNicS1qm4bod05/VstAHVL/R\n9v30VudYspOKRD/JCVo/bUdHn6ZNlsDj3AefYYdxnQpOLXgiADim/0dxOxmT\nD+aJ+O4e5Ssb0AjT1foSazadMhCFAcXOSiZnTUUzHpk5dW0oEiZAjlpbPlnX\nrhX0DMkgAlnsPCgO74hSZybvsf77AgN09vNkkrMHz7T7XMeDp0DJk3AvzhF0\nPCtS\r\n=19Uu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-eed40f-khkmevhr_1605535572437_0.18655178231944336","host":"s3://npm-registry-packages"}},"2.0.2-feature-92e388-khkn0j42":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-92e388-khkn0j42","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-92e388-khkn0j42","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ef5bfa075658c2cae24210df78588194214eee1d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-92e388-khkn0j42.tgz","fileCount":309,"integrity":"sha512-Avmy5NxpcHWMAG42BCAkwwR3aapkfTVsXGzW28PNcyS3YO/6LedRAh0clq9LUE6hhd8YNwaB9z+YqjXuH2Uc8A==","signatures":[{"sig":"MEUCIQC3d0rPsfKpoXwEbprRiHO5v/cG0sewYeXVaB9XuZWJ3QIgRbmMqxcxPcdvqbD6InoRjWTbdxRKvfNEPTYmIxrs0YE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1515083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsotICRA9TVsSAnZWagAAG58P/3ABaYHyEtotfy1mHPdr\ncm6DYp+x4idPE6iTe+40GC0NDgPxDX6SuvjTUUODCp+ON8/I1RwgXYXb06cJ\nnQjo+lP8IBwTVFBZAU1vyuIFUQiQ7GOsPEtk10DwnHYUUUC9ZCMPllag1B7l\n/n5YwxjnEfbznO81AXCf+ogCrcsD1k+QJYWSJpx9NJUli2ffJ8qKNPdDKdhh\nxEnolI2Xa5SnKhuR/7YPnSm3HIIg5TO3TqeDbje0Tgsb8RlYwpIAWjSXsOkh\nAN0BM+hSnOtqbrwUjv/5a7lIgBXgvhFaYwvU9N2drhspxB5s1Sc7pqlVkkrb\n9vh0U21+P+KkdToWeH9M2sGKZU3WcsPBXQcRWcQPpAiVq/cDirqfghb+qVt1\nOQS6WVf6HuDGVcw/J7dNTFi/hl3ZztEWtQDl02JoThYeB2CEMMxJbFL0LImn\nVMgNDrhnZtYWGL2+pbYUs8tQj3iCmdBX+/67CdXdATb1gYLKSgJATTTvWKNv\nKcePjdyFqzDypX27tuvckjxwo4otFqmUJ6B9uX/UnZcKOZyq1XswhHQWHdRX\nWsjU5a5wVk6jpMmosOhOSalfDXXU5gttM6oAFoXKEwjkqaKyr8lIETn0EtEN\nlZRtG2+/O72pVd2Co5gCl/lNimQd+di/yqd41g1QJ3DoGLfG19W+2mpUXFEv\nD/3P\r\n=ZpYR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-92e388-khkn0j42_1605536583945_0.06765137086011941","host":"s3://npm-registry-packages"}},"2.0.2-feature-7e698c-khko172c":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-7e698c-khko172c","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-7e698c-khko172c","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"05f31f9327e74fc439f2dfde8f1cb51f6b969a73","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-7e698c-khko172c.tgz","fileCount":309,"integrity":"sha512-3YIIwR3lfBKbeBZkT1j99nUh1Tx0/zNBxgD2yFFVXlqM5nFKs30rsvl+YpnpekP+yKLAXPaD/hPYpFs7GGHEnQ==","signatures":[{"sig":"MEUCIESkYHMDIvbr3O0r8bE21h2DMfVQLOEi+kxeaeFCOwgjAiEAkeZrcLH/0C0uFbGa/gAsI7k5pbJvW5i5dUghX3BQBzE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1516799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfspH1CRA9TVsSAnZWagAAY2AP/12eU1sf8ghF7ml5Ik1F\n/EAoy2m+kHOfo517twEXcXn0afRQHwvhCVWqp14z1fFxAZ+d79BvDVswjW+L\nI6alPJZNX9wGl1l3lFRjre8f8oO8+wg/Dlf3uK4YsWmMrh3NQ6uWB3qH2hrd\nLuEhxjO9S5hX3bfnqCLK93b6tnKo1jF9hEvEl9sW9a80csxGRQRpex+/+XRt\nFwzNelTnUE3rBPrjqABrERO6FBcbO7HK2TqXv4rV/3o4NFl54aPjKgtzOhcK\nOkQR/sIcOF5Xke44eUkpju4+XOP+k9mruZz2L5D7g2ULCJeGP/4PxkhHAHJg\nAERCIdoplA6juS9GItygur7qAYX2dKY68n/Al+FzePXUhJtMvKwumN+Cod8m\n7dpAy7AH8Pn/ZOYl+UUpSnqYbVuWC4GBU/xdFGvAlfszhPqIDIWafPJ4UHYO\n0NmqCojQLH6K1lyN4WC44mw79G1knS9Lt6YmvFbYZDRRt2e4yhLVkIHo7qmQ\nhDmWR/F4vunf/QOkO4NNt30GB7CR/yMri6Muoxit+eDiEkxegltoWFMuitGP\n/bIhYneBxQyJq5mQ5jjoBll/NfOpxgGI2Y+Fl5K2pL9ir0tk2FpjdBfJAs+W\ncCzstrRojRamu+Yj4+cT8HM8Bd7stYVh2mhtOPJ2s3wfqa9FcAKoMoDZ2cbh\nb+85\r\n=Zkvj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-7e698c-khko172c_1605538293344_0.8290877782601178","host":"s3://npm-registry-packages"}},"2.0.2-feature-131f56-khlsp90w":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-131f56-khlsp90w","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-131f56-khlsp90w","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dc1cbc1f5b602ae5bb5195c729d18d1c5da52826","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-131f56-khlsp90w.tgz","fileCount":309,"integrity":"sha512-Da2XnX2IXPyhAcO2Y7wvICfBtrXHu0QyWwJcS9PNGa1RriHv61pSMP3e+4kQHgd6ScS+te0TLvR8SS/jCAqk5A==","signatures":[{"sig":"MEUCIEYmY4GT9oLVpQiATj42o2BrYKnz6c03iT33gjYXaaVfAiEAkALTDThV2pUPC2fzuxJvPl/bPMSudRHgdJ9l1DBg6tg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs5zKCRA9TVsSAnZWagAA8ukP/32KIChKltncZwmuk2uk\nZGhlBgaM3aPqsfQ0+HLB1d8L0mE4cIt0C94os/VRG3Y5fsRzWAnEaAqpabIv\nwXPHWSG4f17uIjnk2AXMUgd36l6oucla0nvFE4RxP7Fl2FWqFjGJIecB7hQi\ncz8iVz1R7KCF4TJ4rECnZkQkeasabf1rX78ZWep5j2sA0wb+s9ZTqZmN2bFW\nIPUiZDD542F1OlGUObDFLIDcSVzBtVjpUcCXgAPen+TWNYdWVZz5gJg4nlaO\nitE9goyHz6TBp9LmpNgu4s1VHcVMH4D/6ywrHnZnHNWmsC1lITTVUxfkeXvS\nTJeGj0DUKrfoJWBWIPsgHawF3PblHwF3NNdi2MM33uf2Ve1qRSiAkrrxmejs\n5Bo8xIHJl3axFPdmkAVMkuJA1V+mKcswsql05eS7VAR4deOtgiFAxcIt8Xb6\nUSfahdo0OefF05jD4MO3szz0EqxDKHIJ5M7sFovZdyqSKXF77iKi5daq02rl\nK8Opk3lFKVYJfzyDA2xDQbpmuN5P2EqIhANaykrtZBb9gxqnMa0dkljhxL7T\nSf96mEqV9uBXceoYTJQht3HLvZdFyBsS1+4yKAh/VctlcXtUtFFNaUxlHWN7\naNqFwDeqo/Z+5g/nBF4icaegOx0YNu1uzdQycxaFxEkdrh/9njp4n+kDuTgy\nWzOo\r\n=sFQD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-131f56-khlsp90w_1605606601331_0.9192554187692921","host":"s3://npm-registry-packages"}},"2.0.2-feature-35cb00-khlthn3w":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-35cb00-khlthn3w","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-35cb00-khlthn3w","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c720b1b84884123a251d7eff531a4a03a3b66f56","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-35cb00-khlthn3w.tgz","fileCount":309,"integrity":"sha512-IIhi0mpJwE2AF7+Zj8BA/KqM9MaNDC2EM600DQPG2xJKqdsR+nfzBjreXoBufrR4AQkIsDuAjSFUExoA4Ur8mw==","signatures":[{"sig":"MEQCIHwGVqSZv1vQzvx1zF+fz+Po3hymLBQ2lWJOtkSpIXTbAiBU8Pr/j6f7P5QjiJP3Rt5Wb0XSDQsgxgucH3idNwk23g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs6H2CRA9TVsSAnZWagAAXFsQAKJarOrRy2OdWb3c2Xx5\njWb12ndEG8EOZsMdfl4WGuWYZb3U+uSDZYLLv6eHLnAMZ2KTCrwD/t17HO7Z\no75cFZGezwkY9l8wygTnjHtccUKUywPDLxT5L8vNXB3wUZ1/gynaKkwKipLS\n+ty7ELi0Ak3U9CnB7fa01yU01qf3eq9wojAvlfz0ey8okBpabwr2eHViHeig\ng0TsHqlT4+Xqh7TEMgISLSWJyk74KuSFL8SsGvnubWHkUNl5dtOwdYbR79OP\nwqL2VBovmMXQPpAp9S8bXtpI8S/+ji8wujr6Tsql7kdrnVnmMzeq4fv/xfRp\n8YI4TsAJYgztiFqJO64GFkQUIXNjpeVYWzR6sUp+eUMHTuCjoiS0mlnUJdaA\noa8I8qwUfQQyrh+tpOVxKYX4Ar/ka9/9bxQ3IEaRSrbpgLrHc49ABpXlfgxP\nQTaoLjAeTE+SK482NMCbieayHVmWBm0CzqI9ZvfUxbiNyurxJbfz1jLdvuZ4\nTZbfG/ouynaeWgvIfUz9gPJPLPBbNT7rYXxXCEIjiNEAkuDP9wY7F+8ZjCGR\n5icP4TB9S589z31I02JpvNVx/7QFqk1n3V2fvXbAljV9XSjxiZh3QkCyHclm\nI8MiSNDnMg8NzA2kO9F3pd/6eExNTTnqbwJ9t61EkfLF19pv7kE08sXfm+3q\n09zu\r\n=lWq9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-35cb00-khlthn3w_1605607925697_0.41928299976090333","host":"s3://npm-registry-packages"}},"2.0.2-feature-6bd21f-khlz0j8n":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-6bd21f-khlz0j8n","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-6bd21f-khlz0j8n","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7809b735a7cb0e91511a7d250592672f7fa5e0bc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-6bd21f-khlz0j8n.tgz","fileCount":309,"integrity":"sha512-CMOuyRnSOuPI48YZfxg7GFfhhNhqGGeWNi4AwNpcx4DJsL/mC/8CeSl0aUD9Rb+Rwdokdjp+G4is7EuAUInA3g==","signatures":[{"sig":"MEUCIHaKDEJaLm+2Is1Nuhw1K2DLFAdY3vXQI9b6kNej44yoAiEAuEziuDqhWBTemQbA4RBClCmRDcNL4mEEEkhiO28S5M8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs8Y4CRA9TVsSAnZWagAArJkP/izagbBJKGmIEPedGnFL\nqysU9Xx+K+MBLLUzztpoW3uDi7bfpJ8CL2D+bXpOl8GFnZSbYGmWogzCIdkf\nlpTNike1rmMWZIpKFwDnNtU39+omEGs2VIV5IZtjb4uqT1qb8Fuf9znDVI0Q\nGbxaQ1dptH02kxHZ4f63Gu41PwiUbbFd50YswLd5xPNBFcj/I8fMoZLf3xF/\n+RKvwDMy+ZerTQ29b2MAK6wdUCFBnxuStxwLahw1cbitDh17RxZo7BLfHjMU\nF1oDm7/J7nLZEdgvnIoRIdgPUhpi05N6pgyZqT86+t3qskaY1ssQw3vjDBq4\n4yFR/RjfQkHORGTikY2FuKf7tstLKNsG6SPFyeYz7w9M5HatqD1k+rPmjbn3\nuZdNQNlPHm5GhxjcYp2lQn2YTgq33npHdEuy7HNuNQTTgvOoQQ4mT4C8/FXK\nYa1OOEqgqw2tBkoHqYPHX52EpJIXaWXnwv7JgO0jq7ww5tgA2l+zVv4ung+3\nvSC9tApAJyoxR3v632Ep82pYgjSavftdxHlZgJkiQ5+91OLSxe9/q/hjpuy/\nFlFWQ3etqp8e4eSAXeId6u5y5I677/7K50E32LAWkb4wBjZ14uoer9XLqwtE\n75DVJkOalqbEWOFZHwZ/MCUeyGeTDpCkJ1dEiYfAGVUKMUoGu7nqRgYJDx2r\ny5eQ\r\n=8eG4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-6bd21f-khlz0j8n_1605617207788_0.6380493972329078","host":"s3://npm-registry-packages"}},"2.0.2-feature-e10344-khlz7a6b":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-e10344-khlz7a6b","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-e10344-khlz7a6b","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4c80604cb4de2baaa87b313c0908bbbe058b17c6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-e10344-khlz7a6b.tgz","fileCount":309,"integrity":"sha512-WCFkiOandywD2MB+2T0ZWl7tNdkxH6xB7GEAZio5tWL48Wleczm8lo0T86ITpjdJ3ry1VHUYVjvAWBMXU565zw==","signatures":[{"sig":"MEUCIQDuyTIfQzU5cBTeO4/guLl5wjEzH2LDhn+tQxrPU+NWYgIgBx+qyLAx6OV2aCYBGVKc2xmNnbpGBPhuCz7lA8Mcydg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs8dwCRA9TVsSAnZWagAAVbYP/00ZL2twdse85iBv8fgJ\naILVhG54H9vY2V8HEoxe27COwWdtSoqmIoJbB42qOOa/38FniISe6fq0y3xY\nemNupmlJ/JzdzObqOR+wd3hFOq0+hsfTW/mU/I8weCdCqxbeG1qMgzyaoKUM\nU4tgswH6EuJDtWw1tfA5P3JWfufp8Nfs0NpZr1aYCrUMYqPP2X48Emz/em92\n8Ekhtt+ljSBJZUMpR+H+HmmoC2R5kotsDsYpjZtM+qQHHxeg1NG3CJyf0YSP\nuZtXMG81BjqUuFAyb+ERGLl9uQNrK5Tuhdy1JBO3UOAop2faG4eExGGeuTkI\nq+bN8ap/P/dJoWWT+Jbtqao4nbpIB0KlPEYZd2Kw/jixVdcFlOn37spyC/TP\nwdRHAYvUrAKzmW9/pv9VRNZgFT4MrTCgnzLbBekp0+hc61Rj3vcAjPOVsfH0\nMhYtjTPDrUmJo5GcQ03ElxILYiolGc+im/NPjWAG6S1ox/CImalkyxivvDdy\njFeq0aEyDeCxFerPU49kNbk7T8880xh++wZaqjT0rXmPxTlPw4lAvQEaEzzu\niwzwI9PwIk5+0VY4qyZ/pnICn1IKcchO95wWpdzuhaqZnrsucYHcITRoJOnm\nW0Ymh5AmeEn+x5coTBHm/0MaYDOKAPPlogjHArDooL8J3Y1TzqmqXNSDUQW6\n67hA\r\n=YcOi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-e10344-khlz7a6b_1605617520281_0.27035097183169987","host":"s3://npm-registry-packages"}},"2.0.2-feature-f57783-khn8p0ai":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-f57783-khn8p0ai","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-f57783-khn8p0ai","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7c808d963e20c33c444303447fddfc416f50691e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-f57783-khn8p0ai.tgz","fileCount":309,"integrity":"sha512-+pKRTYusQYi0T3I3RnN0TBo/USJrt+zVulRZP6IDY3WR3Jk804g6NiPjrOpExNMoLgTF29EfV0s2VF04YRwVdg==","signatures":[{"sig":"MEUCIQDmts6ck4M/kqjYH0rjt9Mj5y45X4bFlNsGQwEawGt0SwIgIeCpmD9p4SZIboH1LTZ7if6NJzlKfH7S8YiVqodQ324=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftPHuCRA9TVsSAnZWagAAyXcP/1Pnq3dNNopkSdoC4cux\nRKhIXieItTJsIughMX/gdam2nM35bxInEGbvJnmzI1stz7TPOjdqfhWy5yYO\nI92j/nkpZyMevas9Nc23Bo2GjRtemRP9WTzKRTM56Hck4FMDpYkG89N8ERcR\nLt4UNtePcrJ0JS1cKB3mJxtXYxqd4Epq4iz2QOBC39mU51m+YTzfxdahKE8r\nrd9dtbwJcIgQNJHHm2G/qwdvdOv044eooXo6rK5yX+jJ/zX+PV0rUUd1YB59\ncxSel5WdSK13LFLGpnIFOdLmJxFWo35asVy4ZZ+lH/jHGHbNcUwLpAuQGQ4c\nHYUc9qwArlIISFn1KDqVZKZo45QXp2NIMl5eU7BC6RNG95zJm7XFcm2bxUY2\npumeHhmNNWdfN7kVUxKVMBuWMocP+oZaKQxhVH3xWlga1u9Ju0oBoECcKCG4\n1b0KxQUCjWhR40a4FzwPD5xnsYb/I7qeuM6jUQeamOT6HoAGJFi0xuJRblX/\ni/4/zJXnhb1NiHluoq66+EvCJEGAPmDdyb6k/Z0w/oWiqLcLDarrnV4Cfqul\nGE4sLFMrmQFsEFGv+FT0oqAjm17BsDjw5bKCQ4Xog0s6RxjktDHzVFMLqEMQ\n2WBoYuLQ75GzkXSenW2/aWDcS8Zo8tEGMquxxc6HDQ+a+w8YMly/a/yKVpKE\ntnWN\r\n=astS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-f57783-khn8p0ai_1605693933242_0.012132985254844852","host":"s3://npm-registry-packages"}},"2.0.2-feature-3aa80f-khn8t5co":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-3aa80f-khn8t5co","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-3aa80f-khn8t5co","maintainers":[{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b72d496c6a37ea451781db873ba64f78817ee461","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-3aa80f-khn8t5co.tgz","fileCount":309,"integrity":"sha512-FLkhE8e14tdbytK1UwTsigIWQAiIqfz7fULhWNYa/aVlvp0VIZcOoqlOIdsNysQAj/btmWzt7qHryz81fgrGGQ==","signatures":[{"sig":"MEQCIE0N+FLnKhQCUYuYoF7ndBi1s6Ab50shcORdLrEwmVQNAiArtbBuZ3Bmn7yll5StcucimJgDOp+0IYYnZXsBtYfMrQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftPKuCRA9TVsSAnZWagAAzwUP/1y3Dt5i2+5k/8Ll8In8\nV3C8UhKlq9deR985/6jFjtpNE7T+7o4vmalqNKMY3FRNCZr6Gx3/3UeQV0hd\nLgo9gFkPamaakv5BHJnYt55yqkxCCtpHhK9Qau6sxlKvb3dVWQlii4nqSyKp\nYq8C/TrxbNtmbZII4l0u2f5Pw5+OGYhJXJXzjnWE3mc7uGqkP63lEXxZAx2T\nl3+MiXXz8Tl/iiqqADqZQNdXUYWhzUe5et8eD0frfOEA4MOVAHkBppYMdb7z\nH8jZ88/iUm6UT5MD8VL5jY9/Cuo663HfMyq96CHeeaVUaVuscdLHVo/IzbM3\n9sDrpecptNxukwEAZFivXI8RtbiIZEmin/mlm+6Lhs+Xm3S8hpBaCjpst2a4\nSuZLOBOG/U8KiU1ngIiy70nq6jC0rMyDVv2Hdj16Pr1Xn1nJPShde3GnE0xS\nlS9abhCAMic4xkXiajku9MulNknZPYk13gr+1FPDk1cy6GOl35/Y9cy3idxQ\neLnpSMchfAHq8qQ0QyTzVaBFMv8KfBi+Yj+pswmuGwXMFEmwf15wQ2/58Tx8\nG5BB6kGN74Ogtmj9FIDRENDnmpveBrNEVpkVk3WVtjZ/fWQEvufbdgXsIVie\ng41buDgkOJbWoun5KxJ6WB+bIV7xxGoGj8DY83XMaYXPXnc41CXh4pfNVbEn\nPeaf\r\n=nZgk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-3aa80f-khn8t5co_1605694126269_0.854632318261459","host":"s3://npm-registry-packages"}},"2.0.2-feature-b9c6ec-khub9e23":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-b9c6ec-khub9e23","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-b9c6ec-khub9e23","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"22be09cc811466b52092d52313d09aeeba7ce11f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-b9c6ec-khub9e23.tgz","fileCount":309,"integrity":"sha512-hoGYigodEOnm3IV+bD0wfu6EHX5VimlX9koSVy07TgPs9NYhA7HPHUTikjLNk3bW1PIIkJqWubrch2RRlhSFpA==","signatures":[{"sig":"MEUCIQCeNgOHk7nNT0uIaY5gYM/dfovIfLkM6/BvlkzVxZlcdAIgcX6gP7GOo29OkYYpuED+ePRJt+LhpSLyFIgdRON7rZQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1519483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu3glCRA9TVsSAnZWagAALHAP/0UkkUS2dMxW5XxymzyT\nLyGyYW3iJhL9z4cBu+Sf9CElVa0+2Ja3EPc2TTqqHrh8x6HyzDBNKRsNsu8p\n4h0wN6FfKHdWj6Cc8Rfpce19g8a/vIG1lLdI5qlChl+Af0g8E+L+WlFfdjGQ\nor68QJf4zhGb/p1S7KhfTALe29mQMvCyuHJ2L5fUAJvjEwe6RAQ841+u5h/b\n+c9Uy2KEU5Ee49bGhiURHUgHScUd+feqCPjpj7lgUJIpypjJ5+u1AHfwruG4\n2rUCstU7ugVe7N0RxvY7NX7wtYLQuMJfxA3Zv20afDUix08llBH+d5D6FivK\n1V+BtZb/hKBiyGHi36R9uJYktL085Kqb6J5ud31hshBwFEU0RmuQrQCvClYS\nVGuSPE7LmSHy/Vmj2TNbfzWkU8FywBrKr7twjiXt513B+GXHYF58IqP19E6I\nwwyi17nJ948tFElxUZlEO3KIRF2oYg9ySbN4kRy1t8m+RYjKalvoTRvhOyKP\nODNJQ07uVR4FSIy2NP4wCBxXmmoW7cYTB0yQWj0M0UcEQfiUoRaC54xyu6gX\nQbgh5P97YA1LYPTz9M1RpEHAyk9ofxIzUqdmK8BhlMX/VILbLL43F2y5W95F\nJ3p9gG1iQI7eQgdceDKlJi3fI3dqbrKmbMdUfJFG5ZdJr0U3pF1GbFbbRt3x\n3aJu\r\n=QrbK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-b9c6ec-khub9e23_1606121508464_0.31162523025774025","host":"s3://npm-registry-packages"}},"2.0.2-feature-2ca286-khudwhb0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-2ca286-khudwhb0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-2ca286-khudwhb0","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1deb915238d862caf611cd781d247645bb7ba667","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-2ca286-khudwhb0.tgz","fileCount":309,"integrity":"sha512-7KGfMTlAVCfqYD6Aroh+abyXMMFKP06HCrcnQ9enDwjrJEmp+HZwIdetLkYsm21jsneMtZpmGgu0DT14p5N/CA==","signatures":[{"sig":"MEYCIQDQhJ3j3kL6qvE/nfFFDakQ40U/MWsKhaI+mYvQDUBEeAIhAJAUzVLoWjz1sIR6PiLxJcpByjkQfQTCX+dNqzv2qhKB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1519981,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu4l2CRA9TVsSAnZWagAAMVkP/3ZMmS6D5I7hEPBeyXJC\nwSMBJLoffqowv8tx0Nhots7METqBT0b5gIs8IwAifSL5KfjbVjsWWreSGblN\n/abfZOl1m2bmMhgholVqeLCwo0uNjGryOWf/io7JnZKLm6OcuXlyhunsmJNB\nkZp5N75Ywbzz+uGKxKHtAB8ujANMjwg1IPYQXUFjWUr/Uan3M+H9MvUxbFZQ\nXzdlC2siMPrgFFD5Oa25UBEZd+AffKFDAnoqENO1NkNmxnFHra5Txn3XMLvj\n0JNxg8L60H+tlX0fEfwMD2S7dbXrtjRS/ZUmG15RnZ0vQBn0nsLrT5/YwaYV\npbvfJG2U8D5wdJNJA8o5CfLyeRBn8SysWPAK6xaDkz6fUelZJYrGZLv41yus\ncyDqIuGzPtILFKZaVp5pRTHU/6gqlOUbnycUBulKd3MJ5QQ0tC++Izuo5yZb\nFWG+oX5bavj4rElI1SagkJb4ITFY00+AXIdRB1VCz6l4ZnjGi7l+0PULhmnl\nScLT76gg/GcEx/BzuyPILmbfe417JavIBuS5SitepIrBFvmUgcGsT3r90WQ+\nekg7GvPDsszMMtjDD+FqIcqTDgbaTv6Hwf8U18ySm0lswTjYR7SO1OkMawm+\nbInK/JC9FA/0g/sfAs77pyhf0+I8CMtgU+X0OPP7hyPTCXT7oOv0gnIqOZQM\nX2f3\r\n=QkpZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-2ca286-khudwhb0_1606125941341_0.29366549554602495","host":"s3://npm-registry-packages"}},"2.0.2-feature-8520c8-khvpnv3l":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-8520c8-khvpnv3l","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-8520c8-khvpnv3l","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"003a8a6b83762737b2984703646da646314d8648","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-8520c8-khvpnv3l.tgz","fileCount":309,"integrity":"sha512-WLWAThhcvN/t+R8v0pF2HPt0eYFglhWid3sP8oViUGquNiXihlZ9v4sUITu0A7l6N5JzZuocv7LrjYOdGpbzsA==","signatures":[{"sig":"MEYCIQDYki6OtxXfaZP1tM1GxCGUy9uinHmkNIs4DL8cOvlKRgIhALiPu2Z/v0+uf1wTpGVfBWa4Xh1rQ7zVlVSVYmt8jad+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvMLPCRA9TVsSAnZWagAA3Q8P/2Exln5+YosYGTniud8g\n7cekIiJOxiCNYX7f69yvhXK5uVvJNcCNKbQY5/icRMZCA0IoPtgoqVhBwkNj\nH2RGw2nQ2vDZ/fFIUpI2HOtam6Wh0iZBILVhD8BkVreI2XOjf6CG6p/gu33M\n7VGJBs30V5FvUYf87k4y4oY/8aYGcajzQKB6ifN6TxwdUKLEyPL2naYMt2Nv\nLUwTzOpFuv5EGMl1OvFNVaKcnplme4kO4FgT0W1ERMUJfqoUDAnwdJamA9jF\nWTdpNzlM4iOlbbbxwKeTPdhv2KvMzTdk+IXSUG+XpH8dSG+X+uJ7NQ21EmRS\nK8J+xsipa4zMDx284DJn8Tk7T7ZDrEKAWsgYSRRqhYXADcuIRT9Nv4uVn/8a\n3ah21xdtztRzROtSP0zeElLvArtxzZN95jntqfYLxjBLFgxypabY+xM3EL07\nJHjMsUMyadwEBCEM3nJ2oid+8Mw4/57BpJoZhiTfYTqcyKlH7+JobvWAg6X/\nTjIZG5sReZIDHr1h5fkdkairzuZUxljjO7fMQUaKSfkl1efJa3G6CMc6PMaA\nDq5ftyjwNzyDjR8lwb1oMFxT1UZex8K4DSlHd6cvjKOq+J6Yl20UFDP2GtsG\nLfMMiOO1igt3oIoiSc8Dq4NgAUogEgWD2Aph7LtUTUCQMTfkwSWp+IjcPgGU\nHkz0\r\n=+5t2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-8520c8-khvpnv3l_1606206159414_0.11720055659658923","host":"s3://npm-registry-packages"}},"2.0.2-feature-02c991-khw49qea":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-02c991-khw49qea","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-02c991-khw49qea","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"21078b0865a01e4a908842b0782bbf6d212d055f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-02c991-khw49qea.tgz","fileCount":309,"integrity":"sha512-W0cXXC5ZgTnNtp8+69gDfVPIl3IjGd1EBAkYkA57OuILj5qerCn8W+2VjbytvOfJPPIAwlqp48JUtDeBkIL95A==","signatures":[{"sig":"MEQCICoguPfONUkpg4Gi/kBbWFILwvyqK0wxUGZBxoWHpStFAiAEpn8a/vm/maQ+FSezFBeQmDUOVzstcYUtpUartTC3Aw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvSKlCRA9TVsSAnZWagAAk5oP/iH+FbQlUtDX+bqU/cAY\nuz5DePwXP/jl3yQKGJHCL1p6witvtoe2T9vBXXXolAm8McsZW+RBgCtuaydh\nN7r468YBGFhwDS/GJWouHnS1SERiVTWgjInvliOMKfnaE76/g+rGXE0RTFr2\nkq9u6pQTibE+ZoN1u28OiBSaY2L5vInJ/s7hW59/f5P1S1eEiu5dJ4Cph7yy\nAQjc7BH6LpZT3keQjBxYFvejD3/U7EmnNGJT41EPiBxm/YOTVb0Gmvw1Ax2Q\nC0XtI0JjU98uU/w7LkFkHm2U93WHPyiEGaXC0092SoX8Xiu6n4M6h+DoZEb2\nSl6jHNnRHiobyly1xdUrn96FxS5ZWGGg6njP1pwsxC0dH2LjeZeYCPm6uTkD\nOvjs0LOquD9Kf9uoVQLV1AyH5SGzDiuVq3bXXjg8NTHPkF8jI9H5b8/haffH\n62ia+5oMJIGqkJvP6lvrnK5+x2Pa+cPzpTBrAnDkPkghnjvxjdNMu8H74cFH\nVukEJzxLW2bnCU4D27VCRtTiBO4zPREREfcCl0ZjMwF+zafhJ5kXCP38K/Y1\n7x9fOahrhcHdgyaNu9JGF+2KG0uks+wz762x+a8Yqm2kcWblwMHeEetXeujn\n4u8p48BacbCtdeisVxaWjWYVy9VHxGENIixR4W+rSve/GmPA94o7WPFiGf9g\npv+F\r\n=GZ8Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-02c991-khw49qea_1606230692932_0.2999282507454164","host":"s3://npm-registry-packages"}},"2.0.2-feature-d1a13c-khw72u1y":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-d1a13c-khw72u1y","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-d1a13c-khw72u1y","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1b9c0b5150a1b1888a61d16ecefadbb968e71cca","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-d1a13c-khw72u1y.tgz","fileCount":309,"integrity":"sha512-ZahDBxs1WTH/3GuAzVuFaQfDuJlnpsaNkz8KhXUuh8gVW3bcNBA1gUIwTr+Pfe8hi5GEXNz2+HllrdbXQz51Xg==","signatures":[{"sig":"MEUCIFNQ7GCdQSRuU059k/rNaaLNDrqGSiVGHuml1Ep3aOlHAiEAnqHmxxlHxNjdtl7n8Yg/hdd5bU+O2lIY/1gjbfBtYPM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1521114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvTUSCRA9TVsSAnZWagAA2gQQAJ6gY6PlPhF2SYXH5INN\nfuVdw16D32ntKEgfnQ2LvNG105MIqTLZrExRPLfsm/6lEveYzuaQRos3FUcj\nLXveRyeDnRbsa9ZfUbc6gu2itPZgQdWgLLcswhWeqEr3YQK4GDx9gNstJ6mR\nweEszXCaOJXCu4BFAUD51jxUX068kFb0CZluh4xsyeetA4M9rQ3Z1B4fIEcJ\nJF3RtfX3GKRpa1vp34t+hSZF/3DEHWbKc1GbyFy2zWWZo6vb7plUR0Ijygo3\nDLQqySxjS6WTc25+3BsfbmSOsXN7v1bGekzJE5mQafOJZm0Q7GttJjuFIalQ\nIUdPQe54sVabh5NfaNUPYT+tYhNkIwf9QyrnXy8dXD5bzV1HdWkul3HPV3bo\nrZZYjfhI6NrDrAeuJvRu0kYNf6kAkYXCZERqwMPCkl0sq1ZhTt0g4xvA6Rlb\nqVcs1bETorLXu6TRyESIH19i7shEDLpQKd2IyOJhh7OKWfmtJVj6t0OzY6tn\nRGDf0UsDcghX3GsphEsPGkj+nPa0wPCLuA4WdjCswkj3L/GuL8KXsAJBP4qP\nprAdWGn5WlKb0/T5xaJGS7NLHJpweA/y7VOulkOJChI7ABSm3G+uR+6GmsqN\nYoe3plsNHhd48bHZ+aYznDZ4GAM9wSqxWVN2XNBDGobdSQ+cKYWJazsprqzn\nYBUO\r\n=FHo5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-d1a13c-khw72u1y_1606235410260_0.5290672817151363","host":"s3://npm-registry-packages"}},"2.0.2-feature-685cf9-khwg262r":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.0.2-feature-685cf9-khwg262r","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.0.2-feature-685cf9-khwg262r","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cfb54413ba0b9a0b6a2702a17b33a17c0ad12876","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.0.2-feature-685cf9-khwg262r.tgz","fileCount":309,"integrity":"sha512-+Wm+PbDVn2R7tfbk4VnrC1h0q+smMU6BFoeSVUv9cozekO357uuYWvuDCpS7Q4ObdOrG5eQgjeWB99XrmamJeQ==","signatures":[{"sig":"MEUCIQD6vvEvTp+sy5GLF2WdKGUuL+H3/wRSVQh+UJsoILcolAIgJyDTk9n1IoyqT66PLHowf6XDCiRU8rKhVUpxb9lkgc8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1521268,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvXAACRA9TVsSAnZWagAA+tkP/3x6ZTClrTjjOYfdeSOA\nTZyWqnGnu25aojZEo1chMpoKKzjr61NSV2VVSndpLgOs7lmEvvsuhW2H3447\neFzLchRigkRAbshZ64j7NiODZ8WOB2MGCRQeNhWWeSIX95Hkghp/wylxBZaY\nJm6rGf0HIAevTz+/7cBwbJyJffE0hFSObRb7K+osP9IETZDvnQz9yMVYbd/a\nSUgZbyNQlih7zUbs5IQvJrVVIQltDA7D6511bFLWSiJZIAA5zq2izY2jPqnf\nWsXhGm0qkQNt7V9atL1LcC/WtSsTCFtmyNYY5u9hQdMA/DApZW1tVCm1UMkR\ncUtaHA6WhzhW9NhplMva8niOztKL8nSWBmJp7InMTy4LfBsdlTp+vs51eU7E\nj340T1cgWeUNRYsaFfTGBi8fB7NcpxAYCo5GAvxkgaqAsAEaHCaT/sNXF5Y7\n8XdvM7v9kGBC/2okSjD7VorDk8wImpSG6sjZ8Xq81GB4NwqGFo6SkaT/aPOy\nv1/dgpnnQ0AcKPrqx+J+deMIUNOKl8UyKjz+BN/d4WjLMcfq9J0el5+uIab1\nCezRgZDAFEBudIJumIn9807icNUxDPlXZpislnBS2jfNPVF+PWJyPyzCyxcV\nO8ut+9ssZJnLB9Q/nHzgZ6CHc/Gz3zn+qJV+B4o942jd75xvK8Itwo6lEUgD\nDHlW\r\n=ZWfv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~update_token-payload_via_middleware_return_value"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.0.2-feature-685cf9-khwg262r_1606250496334_0.6621152007471784","host":"s3://npm-registry-packages"}},"2.1.0-feature-a20699-khx629d3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-feature-a20699-khx629d3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-feature-a20699-khx629d3","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"faa632019f79cee65a781dd5395fea3ca85b9c85","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-feature-a20699-khx629d3.tgz","fileCount":309,"integrity":"sha512-cHjCgpgoBYvJzLq5lNkeSipZYJY3gKjCcnrtH6Pa7QaxaEHXXo5B+MYehemJjXKVitanVKrc4u0OxkB6N4FGSQ==","signatures":[{"sig":"MEYCIQCTDGZ+kefVGr/WANZQWpaDIjDIA+VrOgfO/K+cMrgYFQIhAPh55Qu3IyY1bbQg/EluD5JPY8DewL/MSgG7SOYeTdNN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1521225,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvhqaCRA9TVsSAnZWagAARnEP/3A6mYMZi4V8/nqz3NLo\ntXeZMz7TL4slJ7EGbBjPUIvcNj6QuNqdQtEHR/nqgBASYlknv9edYybSgxW/\nl+E0/vZUwMoOaMFln7DfvZAQkT279mRYjWC3Ol5WZuTmVsFKLfli7JVY7rhO\nt0q8071KzcLBaLTzEgzaUdsSIBTITuyBydicTEa/jNswM5neegu9BjFHjfI2\nDNANMLfqx/cIYqPvqkDmgu7Zwr+Ry/1iFOAyuMvINw104CUhEiEEtcokrSGg\nWtGaidY+ysivBPo5n/Wkpqdg9fjom2UVL5pqWh7i/i1S7l13ifPyFKsRksKF\n07/vFGDQR5tuxz7IZ3eG9qfMyWf4K5IqX/5XG4VkeUkvZXPqxViCbJAwALaa\njhqa2u3yMWfENPrjlTTmCLTgRDLSxz4/0Wsg5LpX5or1Pfr2GLjmBcak2vOc\n+7UtHvyE7/tk+2SjbLEeE3gQCe+jcIOGtuO4VDN9FiCDIAMtArxNj4L66+ZX\nbLwpjKROGR8asrflwblP6Knkz3jk3dNw0CS3iA/5kPzO50702+WvX629xIQo\nx1i85gzdONPNfWU1YmPrBaB+ITFFs1Lzv3bORa2adJZRRKjonA8hb5pZ4UhI\nRO+3s2/l6dq7fJ3b4m8xlprm2WCoceQW4zdqsdTGJ+bXZcqqABRz03vA89cR\nDUS+\r\n=Siln\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-feature-a20699-khx629d3_1606294169594_0.012112605341327187","host":"s3://npm-registry-packages"}},"2.1.0-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-alpha.1","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"864144d3c6f99d53b398fb645b8fc0972d2b62b0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-alpha.1.tgz","fileCount":309,"integrity":"sha512-JI9NI7myJK17pW/t0rO1LA4GAEwKGHMHHS5K8VQquLsDHqcQlVvd5H7SFpfD7K2I/Fd7WkVjvYDanNrR5617gw==","signatures":[{"sig":"MEUCIBvUmqvPctPFEij0xySkoC9zr/mcxoNgfYriw/6rly9VAiEA/eCnz0kkKqeQewkDBXMaRJWUc7c0PN+YOjvhO9GDo4Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1521209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvhuwCRA9TVsSAnZWagAAqL0P/RivlIBGZLnD7WO88QuR\nBa9TCWaIBlB3gMfaABgCU3+RAFdBYLlMPrNLs3HEobqaalLpCxdn16LixROR\nnZzNwVEOygL0Lhx0mX7KnWgJZCtOeVFy+9eHCWie/xzt+tfKaR2nOKTODUm3\n63HFwSMbg3KUW30pMlBgI+tYP7Ttv7QlCsRFhJICFAv3e9QeXFvWWho5EN9X\ni2OwxtWyz7xdyJByfNGZuVabtP5a1Vy38x/zVEqVIGl4kjdtDwoOnD1wHPP4\n0jqyiqyFJIYrTMh+cjeWXTKHkkjZYp3RliCdpdQ+8rwdrySJWHKjcpH50l0K\noJdX43aUED5fPLLtOhyzUDuEuhGbcqKBW6Xaeh6Zjyiray6xz4963Fo+w58g\nS24z+Rv/z+/1SnoP27UyEFjSMHlh9P8EpS8ePDH+aB2opwj7uTqFUDc+hg4Z\n9cLvYPK4BbFKMNh3vIbbkcmlorWR6/Lg1GKwpzEUYHGTX2NuoaG35dA9trOl\ns3vgiCoFgN2zawwMh7mAQQYlv7OtjmMKiNIGDfB6zVIvQqfqaBknasEWyCxv\n58/wPDxlZYw9Hko93fkE5uZWI0nwaDE+hbYD4e9Uc6Vkoq/OrmOGipGJ171f\nlhBdPec4VsfdPh9WeRqV/eUcDdUi9/clNS0+83r6NXvDksG1bnv/clJjYRtJ\ns1bR\r\n=cmwu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-alpha.1_1606294448238_0.7450470603974937","host":"s3://npm-registry-packages"}},"2.1.0-feature-04fd4a-khx9ey7x":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-feature-04fd4a-khx9ey7x","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-feature-04fd4a-khx9ey7x","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3e9640f7331ebedf27baf41d6e05b6609929b0bb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-feature-04fd4a-khx9ey7x.tgz","fileCount":309,"integrity":"sha512-tFda+BMNOTk7u+iNTuErhHI+H79nbZNCW2AcBw85kG/0FPi9EuGsq38L2y0QqysuNG34wIy8GgkkAZmwrHkoxw==","signatures":[{"sig":"MEQCICL2r5M57ePNlji8A+1xtYuxEYmb3s6KkqVkqKbM0ozkAiBxco2os44W+wFeLEpl54dFGDbfoPlxVABaBub8bBTSUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvjCZCRA9TVsSAnZWagAAYJcP/3AZsg1n6nKfYth1b9JG\nhEV69Pi0bl0GKXh7iHWrRFtCQhXilLsTJsZtfYT79M6OI97hlKqxFH6znlpJ\nC4Qk8ksOZe2pYm2yopxLdipBoKN6sEMrEo780xlQR8HqdJlXKrXlqfDYN935\nYxChNjUDvTw2Er198xjJDGEu8K0vELMrpMXDRQDSjD5JHIwgHGlPhqfHWMsX\neTXNIrJmQQyMYFKH5IXkXYoB99PNvEwQECoZENjKqfgeONKl/H+8jpA22Iqs\nUj7GvbfsX4eFIOaWOBzvx3kuriGqbK52OlBLl+hdaLvdIi+Enp2b/a+LLSYW\nd4ksimRA5AePd9V6i6uriHsvXIM21jtAEgTBcNvgFR4Bp3pAJoT2Z9d2meMr\nxTauk2nRBRmW/7r2Zvf2z6sZcutFb5KCzyWl4SZBkC8xD0OgsyC/AD7IKD1U\nOwJLhDvNS043T8qA92Iz0zAJnlJ6C+v+CE2FxSJuTAylFl4xjVXgjSXg6EB/\npXS8xMYb+0LBlkhx9tiovEkJixTR+F2pYGgI0U+5h0mOrCD/p2o9KBjN41r3\nWgOJTorOmAagpmK7ovUU9HUa6tSHOmY/di1IQMJ21OFPAI8kQpM8p/TqxhBq\ngeQ04vXDBQwxQaiPFGTSoSGC+05r9csnIGmZDrykzWnHOAss0WXOKU3jD30X\nLwSR\r\n=rpL8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-feature-04fd4a-khx9ey7x_1606299801054_0.7908251536799691","host":"s3://npm-registry-packages"}},"2.1.0-feature-3fe539-khxa1re7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-feature-3fe539-khxa1re7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-feature-3fe539-khxa1re7","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1ecbd01151ece6ca507c1af336e1ffc14a2c80a7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-feature-3fe539-khxa1re7.tgz","fileCount":309,"integrity":"sha512-3z/6zIi4QdEDDNKc2cGWtFP9/Ix3YG9bm1L6q8dwpYMgdT20l90Dzm2lMqS0vu9WU4xdLD6oJjun8w1bCLvmiw==","signatures":[{"sig":"MEUCIQD/2e4rlUCH2TuaXDOqIv6bSd4KGz+QIjJNB27jN9V3tQIgNA5aHSakx9epDb+TepmjuJ16Y94YblIEYmOaWAsaTvU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvjTCCRA9TVsSAnZWagAA7ZQQAIKpFvDpn+vimOdh5KVo\nprY5ybSMnY/jj3QLk6OIYmZonuScJWbrmysAU+Rk0X5G9sIqHYBIpnABLd1q\nDag7989PxpDr2ulgZqI+YZo5a7plgBTZhZKfAtSXmxCsPfWmtOdkmeZe7faX\n5oX3rTbwwWuB41Q9J6Vt5jdGLUqfU4qAi9MyqSPSshT9LmdU5BAbopGDt+tB\neEQztVUYsJSmfAtW7jaK4hOUxPkWyrQJWCwfqTyxyrIF4F24KDAnj91RkAwn\nsrCnukkTJ9CS0GPv9/6hKtrYa6cKN6KqXFr8lulwvIv1E4Jzhr9YHeqsUZwV\ncqOeSBmvF0mthOc0yP/UurVhWpQQVotvYztC9GQJimFOibIErRFMs0Hcwg7k\ngdIzIHh7IUN7pIJgFDAPCHznkKxxnVR17YbXuwbGeo0XiEWnkLYenxwg1bI6\nDJ2SVpkUFiSIgq8f99RMlIdNWfbfARblcIM9ygu2xWjSsa41bqUcUed1Nc1o\nu2INdm+o+xTa5hey4DWU5YGr1+UfKORm4TUQY9PbZGhoPEqCaovzVlrmBMth\n2pUSBxGMv18+SRi2NlGpTnuEuHFDLy1f9mHKnGL7hKIU7KBfgE/v44FjHrSV\nk9GvFrIzvOxOZiAkGsWdw+D/KJWUP2nOWxYhRZTFSDeXSXRdf/9VVyCZwmRQ\neuQT\r\n=xXim\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-feature-3fe539-khxa1re7_1606300865824_0.09861603214641934","host":"s3://npm-registry-packages"}},"2.1.0-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-beta.1","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"20687d10e26d4e60e4b7eac167ebdebf7426fef2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-beta.1.tgz","fileCount":309,"integrity":"sha512-7pahGBTmIjW3vviSQLSSN7U/hZ5h40ElAjQVYFDitnz5MjrRpQcQgR3eFvkJSsAA5lmVgMEAhfI4aY+bS8HwnA==","signatures":[{"sig":"MEUCIBgTb5N95p4liRFa0WjmSwDjKAliKwAcVbA59wv4Bv7jAiEAl0vIYUvRRd26oc3ijOniwoIHRxqXILQdr7xdezMN9U8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1521207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvlWjCRA9TVsSAnZWagAA6K8P/Axl+1YKqDwQdnB+hcpi\nhL5y4ShJitKPDPIkFUhSbnOaVuPwTP0qrfZKjHSR+4xZJiqpxtW7ePjGXIWO\nVaACi9Kch0+EuXnw4KKtEolOCsHHMr2vQo3kOUfGWRMhZQKS1MiOhqM6cndS\nHrVMW2DU6KDQMax38Op6ylMf9XZLignBmQw8vgMWT5NKafLlcu3qieNvd2oz\nA2jGMaa+Cf5KTXCbMfjrOnSKZI14MRs9vMVip5HVPrmeiK3NEY98b4HUrhTB\n1qNLoxwxrxUIYsiJpW9RNJW4WRlcIhZVbJ2s5Ho96SPMjT6FTPJKeJqOX7D9\nvoPUjbkbPCYeEx96f1hTA29M/COtrEmKpKNZwD+PxLM109dKPzM30um2bBso\nj715NIjTOYeW7IMWzKfHefqnZl0nc2+3/R0Wd2lacI3DGZ41D1ltVr2d5ODS\nLghagPX4cQxHcQV5iubaxIybBirGGkrjhEO5GqsbOCBIbVYsecMlR7ewFag1\nMSfQUKnto8hrnando2prfPz6n17cMwDllxjxAKAPlf71+UJ1AYLPG3HqqXYH\ni+TMu1E/4dP75JwhB6is4z9f0mBHxdsm9NceiOQVZXhGs1zwB1R4vmsZnanL\nPStLgVA8MB2EZai9L1KYeb/MPQCuYjyFJVQ0Epzkl0sunfNAXcgx4ayhk6rB\ngBqB\r\n=VypO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-beta.1_1606309282241_0.37437180869358455","host":"s3://npm-registry-packages"}},"2.1.0-alpha.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-alpha.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-alpha.2","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2a5f450bfe0e31dbb4696533f1c59d04aa69700e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-alpha.2.tgz","fileCount":309,"integrity":"sha512-vHwSrM5nKWUgeWePkiD3LdCzobr+dY7wpkJ7ChI8arZj1eSg9gtDz4G4suc6WJt348lcogWJwpxCRKDXSxVegg==","signatures":[{"sig":"MEQCIFy/lMfddPHjFygpErdBGeQ1eZbspcAEakwlaW4+8Rm8AiAj3k5j7+3gQWPCrDD+JSjBgA0kc3P44gqF2uygzzuPlg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1521208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvlWtCRA9TVsSAnZWagAA+0cP/jGiVsgQgCmImNHi8s7m\nUKrpcAmwhCbAsFZ22rIE9Yn1T0459eCdU2GN6Mry1wb7gh6kMxtoBmFuF6dS\n4KQJ/cVUmoz7pGvKIFklUgSdpeBtIoYy3zOw3shdYlZRYxHhOhizgMAckxZJ\noFWSKaAJwGPrYUqGx+m4/cQIm/1P4PVRDmkJ0qU0cP9sj7mrIzx7lLaxjyvO\nSq0xuNWvrnggbX9Ot/4tnLBwCVoHo5UAIIFO2k87/Qg0Y8anfriA5ip7ogKi\ntP5fjEsHkWejLMpFdNqnotWNYfxJDAEgSeFfd9n0I5lFNMJMF2NwQNtPzFgL\n2tZhV0B7gsGmWGqBNehdYv4SO6w2oa9bH5ntDamdIB8nadCABn2/QEZw4LC1\nd5rzo3aAVGjrs3GHA7BszwQgWgRKDCZLOlMe1m7FsVIvmqebdpO5EgoyRO+K\nLgueq3nbRKc+HQtHhQDESd/TesHyWnhGv+/SE5bdBCTjfS8E71klqtmFJ6ms\nCsnlwQwdrYESXtfGTCpWzS8Ad+RpsxP2nCJ143XgY19KvEsgBt7lnOnLCsec\n29hxj3NIV39VhcgI2PAf4pcLJcaNcWoezFVaiNqgqlXI1lG4tiSqfpB6RxE+\nw0qxL3yjhEcueRBZs4RGjkzLSz3GIIsZghWftMhShUeQK2fCkw+yxe74cgZe\nM0yv\r\n=dQdF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-alpha.2_1606309292783_0.11151599058353323","host":"s3://npm-registry-packages"}},"2.2.0-feature-4af71f-khyosimt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-4af71f-khyosimt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-4af71f-khyosimt","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"be3942cccd8fba77ce746412e06f365e07d1d3d0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-4af71f-khyosimt.tgz","fileCount":309,"integrity":"sha512-A9Z/R1hojNfp+bORuRHmhSrdAQev4IkMsqpJgv0dLPrqJICzP3MiDWstUe7hwhdqjiUftb7elGDHLiNL0b1ImA==","signatures":[{"sig":"MEUCIQDdoeZDxbf8WtkxdN5hp5ot0OfhdBKDyf16EhVhzI9+pwIgMbGzDoPS3WgbeHE+PUQwyJyJl8esvmlkrJLiy3n6uDo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523830,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv4GvCRA9TVsSAnZWagAAYFUP/0OCtvz/uEdO9w+HbYuu\nzIiEke2b75fLEec4QQ9erd791RrqBt8HGNq5dCWkAvLHsoetKK4QXHyQR5Tt\nbDY2Ep4q+MRXSEIruVzkb9KKg4Re0IVzKEdGdZ+JNnjhHacx1fKOWMKuAUNL\n7BYnmamWjMkmc7grIhmzKOT0FWqLFZYtR/+F+/iyltysorLQv5zW2RXOq/c8\nRi4P6/kLmaaynrNveBR2u8ULYmdp6fpZzu7oZ/MUu73g+I4nxQD1z/15noL/\n/g7kw3XXrzWthAVGvuZfWMbVLvpbWc31vsKRtroNxPwB8rBIubyOLpXVu/n6\nx6N0jlUJpl5KsBPXidNiAMRWYRKz2fa6FT5dVYw/lot9+J1C9wfQn1WfIU+s\nxadbytLYkDe146mtIAVcsRWgtge7ylyZ4o1zEvk+NPd6+iYRA6Fm/jGzlixx\nJB2KzCNu2gF/U+3GOETHK0qos5j9o1cAlX+BnfHGMBHqL+ABHTIsW5zdAX6x\n7DlmsISir9BmuUu2ZDSr6bGhnYkjPyp87SLvtHW590R5lmEA6vyrRDT/5KEr\nsilf8CK6pTyieKQgP2wDp0ygQ/ChatAZ12mxssYoKYdYul4kwSZ9JX14jVnW\nfzvhfucIOS3pQJFuitkxICp6GK8wlOysKZMUbTTdqINGDP36YcQplTA8nO+Z\n1BwX\r\n=P2rx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-4af71f-khyosimt_1606386094606_0.9042190245895314","host":"s3://npm-registry-packages"}},"2.2.0-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.1","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"71530cf38192251c0eb07fb5d871cffb152929f5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.1.tgz","fileCount":309,"integrity":"sha512-IiMnMOgdNfdlef/SZ+fWaz5x5N3LsyRBFPlASZhGmWmIqdwBmDWWjFm/2Z05Jg7p0cbqC1QIdYoFcMB9wAWagg==","signatures":[{"sig":"MEUCIF5YuwaMzKb0zy2h3jOElQ30pETL8IYeEyBLE5jQ3yJWAiEAwzQWeHYBztDyJUzEVPnZ40peHdeKQ3UnDZzOqmBSQ5g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv4MeCRA9TVsSAnZWagAAMOoP/0P4rVm9SZDct7RA8kIr\nVLNklzV2yMaPz1SlR6jZx01yMMX0YQ9U+ibuev3b4ThdJhRJMn1ilhq7h04/\nM4yJYKszN6Dj2tV5x9iD2eU4tTJNiHFg9sWSVKNYbbgAGWLF0bi2AwVXnYRO\nrUbNk3VUNSoqRz4xgzHAy3gdv3dM+0LT1SC9lleddOKhFqxe8P+kAhyreyJJ\nWapsA7SV9MwTFBpVgxOrRVE8djRaptuBbuPyLFa/C0ybxbVVOmM5yT/Qa8uZ\n5wUDW+i5ZCzYN9yW92dqeD3WFshq5a7kcntHgeG62ijJMSXcz5lTOw3Fg43k\nROriUK5iSJuindPNbJ1jB+eksRgmA/k5pAHmC/efzYfAvz19JMU9e2UjNPG4\nMI0ff4+Ixlk3IvJ3xsKdJ+wLmZdZv3bRKuXZIEGjqgm2mVYXLAu17StS5hVn\ndhSOHDyQbfQLh5LUlACKcBW+jeTilrGWAcozy4DuYEwIqVsn88Lq2YO1fAyZ\nd70o7cQ5rfaqwcWL2dC0IZkvo0dDCwZmnHwnOQMDvNb2yjsu7vsSyYErFcEP\ngNSW4O4JXCx3+d+jUCicQ3TMV0vjdbJbvGlJuqWpdV1jep0Jv8+k/N83/KD/\nY+bO7unTeMBgTA+Mww6aaYXPasOG12W4qBjcqFulk6J5ESYPBe1uVfsPDxDW\ndrtk\r\n=9Lp+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.1_1606386462117_0.821653682853229","host":"s3://npm-registry-packages"}},"2.1.0-beta.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-beta.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-beta.2","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ff15fbc67b6f3ed5126e1ddfb08cc70f33ba8faf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-beta.2.tgz","fileCount":309,"integrity":"sha512-MgjQrnH8EtHERRlqgVTS4EX8kl1NBrEpn+xba6TjWyFQ62MaXhf9xEWYAzuleHcaySvJDALmepkpEkSFiHK1pQ==","signatures":[{"sig":"MEQCIBdjMD5MPpKoZAWWSLaAQ1B6PtpLouNUm7wT2xZ+88KHAiB0lDGY8jTLTbgcD2iz32CRUcnasjdGZKen6dqb5G1UaA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv4q8CRA9TVsSAnZWagAAH7MP/0D7Tk0ztFR0EoOHOiRK\n7N3oboYmAwH56eoStGLgTuX31CP19VWazocAo13XBskN4qKLeMQEl5bhdGVz\n+SwrKWV3U8hwLi0WSp3C+EJCY9IIm+8oKvTuhMqIRilL/NvFsA8whl/cXzYK\n48ANi0eUJZpV1AKX/TNwUYH3PJqP0vZgNEUHzZ55UjUkdFwRJ8TaeqWZ+kNU\n+rcfXVGAY9Htno+uBu3wtTECQdaf9LiM36Mb1EBAOeBLwezo8MmTT0LfyPRf\nY75ZPXUWyPvXtZBSOVkXJWGl5L5BW3xGsBvZTqS6cNTPIgcvT5Aa/qzgtjfi\njKRxn5d1cAlghrijXms8LcGSRfITS3EmSSdg/c9MaN0yLWbRuvQlHPhg5X7e\n7u8Ht/pqK5XvK791GyoKyLaeYgi0yyCsTkMPi7AG/3JyCfWJE+1CQ/ukjjMF\nJJnuLZt5WAI4xQki4vXEZoh797pn5tzUBbut4LuLSKog0AmK+NiuYwmwcvSw\n+q4qwgqsYaurxx8P3fcDbitXn0Zh5p325JOq+s1Tn4X+o4VHyrb4C9asVYRE\nVtXZ9yuTEv7MUbl/ilLENatY/uRAG2dQI/avGBwNPdyT99xjf1Yjgm8C+4eE\ni7SlMiCywnKqRvyJrbcTR2MKP0PBqnH8oNjH6K5k1wwCyRbRzFYCT2zfafOn\na3s+\r\n=BQN9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-beta.2_1606388412107_0.3588894626741592","host":"s3://npm-registry-packages"}},"2.1.0-feature-35ca37-khzy96uw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-feature-35ca37-khzy96uw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-feature-35ca37-khzy96uw","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"556ce31439bb146d11081a0299f4dea95ad4ff29","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-feature-35ca37-khzy96uw.tgz","fileCount":309,"integrity":"sha512-560+RZsTU0bczgpwihzPbqKtHCzPpgxUg1O85BBNEr+e+/eTLvKrQYh8b0inzA/EjTdANo2g9GOBO54Lm8WJ2Q==","signatures":[{"sig":"MEUCIQDVQYGEtSCsn6y1ia/TlKvC2858TBt41BiHwWFQE+zDfAIgZiB/CIR6BtCBUodihMDjJdfopsjj5r6OxuO9v0pCG8A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwKv1CRA9TVsSAnZWagAAOIAP/3xXkfvblXu08us0kwUc\ni/wCKSIHJFugyLtb7eI5ajrePGZiM80gxl8TKxPmB7eK9XloI7t20Tiior/G\nBaaUWmGz3Wp+XU68PI4HLaICifSBlaCs/IWs6FsHCErNthY0QtBjcrDeKHJr\nh+MQSxSz1Ly2R7sYwP1MQBONe6+JeVS0DRmm7HWdF2GQxflhnh68OtThu/LR\nnhPBpiFQE/0ySl27XHoWf4HZaPYeHLrHyB8bCNhDphEWgavNWh+WK2IRgj7q\ntsopi1Z1ELurI6NzWQE1BS1KSBU/tyX3P/n0TPArLG1j8ssx95/DoNypksq2\ntTrbrXzAoQuqWfZLmT0GWNsRbchUqaw0G2PysRtcFSUTRXQUnCWlsl89deMz\n6QAt74zCiM+t6chqlV6PnS9fl7CQpHE/Ztord+mgAHvx9ZJeDUWbgC0EHvTh\nDz9VeYvZtYh1S8mWgE+bVUaDJyYMFvpsyi9/BCuOi/whwiqdCrOMBLXyX573\nvDgx8E7ML0IooU1W+Gu+4MjCr5XsjIPA3AI/VN1OaTpIO8o9WSUcoIVRArt3\nase7GAdgE8DXIm6hT0gX1slKacXqF4DN9Hb9d5CLfa4V6MoyebUCQE5R7SS0\nh1c+9FSXuuIRdGLlaKw7QyWD5M0c6z7wCD+6atNWBF7Sj472vPMnR8g1TUKE\ni+p9\r\n=ZyHW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-feature-35ca37-khzy96uw_1606462453217_0.2650633201388597","host":"s3://npm-registry-packages"}},"2.1.0-feature-fd1373-khzz8vnk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-feature-fd1373-khzz8vnk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-feature-fd1373-khzz8vnk","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6380ab72fa14020d97c2efa7bb784ece87411ba4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-feature-fd1373-khzz8vnk.tgz","fileCount":309,"integrity":"sha512-tvkxlMWsKxUopgeUVDllv2StIvc1fu76Cvx2K2qTAosUnSnvYv9jAXcEy64BJFUE51M1OD2exRTHRuYjI+56zA==","signatures":[{"sig":"MEUCICeBdOrQ3N6eBCng2py4QGOik7EvPeJbWD4/lqlK7AE0AiEAyxRdRbZOnVoNxhOQUQb61BDMefQ+C8Y/vcH4KemzZfA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwLJ5CRA9TVsSAnZWagAAXQYP/3AiHaM9DNCdp8oZMxWw\npfnxzZX07x+wHnknIfVL+yiglUiVDQyK/axtIznBytZhmpLB9TP4DST+HAQ2\no3rVWEoAPInX4+yg7hmJru26VzEQykvz7nXppoVUZHDHCd2b0u2k8id7vmgH\n6ieQ7NT6bXaK3xRbcFJaRb26lPJHgR5DGG9eE+hqJ1T8ogSFIxuyco+TPKMu\nVPS43Nwp6j2/qv/1VlSY3fjojtjE5A6fxLdszEQU1loMKKuThAO99BagDkx4\nD5W4HTgBlpz+4K5iCYI1gAldwfwd+GkTQAtIFxqFxJJe7XHlWypwu8yCmAwJ\nfBHI9ihQ5D+jnddVXa7y5E4Zektvl4JjIsr8x2tm8rpf1J3JnsHKfNFyJUBs\nQf2YI3q0QrF1QtH6ta/GiQef7/Kx/Xd8PCAZV3OsUQPx85A5GAgeYc94knyH\n9vjUNKvRvquCLSPEX/aGzLZQ376nMDwFUzub4qSu6kR0OpMX0ZkcFWQXC7jv\n/1jT1DfiHs7zsaiMMf0ES649LlnS2GdsWZD0gyNtQD6HHQ3nCZl3TnaPMVTe\nEuQAzlEw2Crprrv8CNyeLksRV3e75lvJ7EFAv4AJGsPupwndU6Ez7T4nSpqP\nrxEeynAuziVmBGJfNHCsnQvYdMyqKpZIYcJVYKfeQFfcWow2BJ4KN/djEdJC\nA2JR\r\n=qvQM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-feature-fd1373-khzz8vnk_1606464121388_0.5662206305676478","host":"s3://npm-registry-packages"}},"2.2.0-feature-ab3478-khzz93bq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-ab3478-khzz93bq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-ab3478-khzz93bq","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a009e60c109f59487b92f8dcbb968a4faf5017de","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-ab3478-khzz93bq.tgz","fileCount":309,"integrity":"sha512-bOU6ODHOLVXYxP+4Q0dTVkkS28OP21YEbx1KFsg8nsV5ob+PFkxstRx/YY8rqo/S5VGzok6nOKeAyvX7dNFOGg==","signatures":[{"sig":"MEUCIFpVdqe/QcOonIK2BDtbLJb2YahKZqTuNBXsfaYjI1lbAiEA61h/+Z1RXfuIcv+BbvDnSYCiRvPr6cxSjIMnkbLJSZ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwLKACRA9TVsSAnZWagAAH4IQAJBrio51d2FCgRNMG9kj\n14NGc2/g1vRX+AhWSm/Dxi9NoJEET8yXFPGlEgR74zV6IgE974pjYATIFQpR\nG2TIBXJ12iwLRIIO7sMd8RUZwtSkb/J9kPFVKh6WT3iWckz1kiIXUl0CKdGs\nkZenSTji8enBkIE2xDBDc0ieOSV963sAM9At9NC3dzxVrYCcA80undMTcMxM\nXBBI1/atCFuXBBGvm6Kr0NNtKGkeduSCEEXtcBupZsVV3rndREYkpx6j7CmS\nRRLQUt60LbuK7WbX+M7LFq3lxW9Fw2XqERjg7Ru09V5e36imV0GUOrxKtFuS\n+RsJKrIQf0COQ2D0bgQrqzj6ZGwLTrOsVAdMnWAOoZuiNc5yrscsvw2nLdAx\nqoHhgy0AHrMTCW3F2niftT2VShQkDlb84No25kVC40T1qCJV4qoAIT8O92RT\ndISvfQ7Tiv3RaCjU3eYSAlVvlZU1GYtLV79xnYZTN/UF6hQ0nSh05MHZ0rKE\nnxIwbAlPPruNZersREc8JKKwNYauBHJ+Mt7cIVmgN/ywta0hU9r/rf9H1OKm\nttqi3dLttbfj3oANM7SzJRff+deNSQI5G2eaP+dTm1gqiJVbQ+TRG2xqgxqv\n5KqTD1gJlFkkcX6S+mVqh8boIUK+fyfV/DtuI/lbfWLXjGRWKWFsXveoKl76\n6ikD\r\n=pTYe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-ab3478-khzz93bq_1606464128318_0.8093335854772747","host":"s3://npm-registry-packages"}},"2.2.0-feature-bdcf70-ki0147vf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-bdcf70-ki0147vf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-bdcf70-ki0147vf","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"85e67fccbcf291a1e441e05056af85fc1459dc84","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-bdcf70-ki0147vf.tgz","fileCount":309,"integrity":"sha512-8gFyNpG55CeeMPxEK8IB6MYJr3S6eAB3WEkP7V1RFVmc+Y99jFxvQihseS3LtCKv23uY+KhBdv1HdcJzL3O+sw==","signatures":[{"sig":"MEUCIHd3top3HYSmGHBecHeLEkx9uoorsdvuL7XmnuVIOuIfAiEA2QiwGIVf+PIsaY3WjrPGM32sdUSTQviPxG2JtKx9QqM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwL6/CRA9TVsSAnZWagAABvQP/AkNoAOg8R0ID3p8jVj6\nz+KVwiMdKZepaWI6HAaVzp3RfthdCh4OPMOYch5C2zJfYsPWHrN7nQaL0E7C\nnk03BTUipicJK+Kv4c9wuugrGVemPInrJor3fiCyA9azNUn7t04g7hTPSMYC\nRS6+eZ6IsmbaGFHVVsrj/CJuvDbaOwoxRPvqf8T3hh06lUWe+mBpjdQT9j56\noccbfP/7lkqjjpRUBqdzg8h4dxu8A5hRKTOT69BejM0sweZ73N0kbs9oyBUj\nUMhk62jRbDT1qYBjcJ/IhW1qAm0FIDy2kc9iS9TsbwbCzppfBp3QDTq0JS1w\nKGZEaTQLGmDJksuyEzDnQsav8dkOP9estC9rUkW4arql2CkJu9KTgeluLVX1\nf5XKR3mNgS/8PnSwbIfQGa55JSKlqidzmhODUz7VnZ/PLySvwOFwuHRMhIHE\nLPfTnl/M2BJRzsH2GLgtM+zv+Fhhs+QR4enhscROiUaHr31cvr00EpEnxJd5\nWp+sSfBkqReZhS8sdcye+rdwkTNfA6lzJ8lHjkJk1GE+0IegBfb63zHPs8RN\narrixUEt4kQr7lgE6F+7B9tOV+CE23bz15SWfh0brcJtS++0335cMoj7lFM6\ndEU9CWp9sB0peH7SWi7OHC9RE/JjlAvDCMNCLPiShkG+STU4K45Qaqx+gwII\nZj+E\r\n=WbOH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-bdcf70-ki0147vf_1606467262546_0.18787117709674583","host":"s3://npm-registry-packages"}},"2.2.0-feature-dfd73a-ki0280c5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-dfd73a-ki0280c5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-dfd73a-ki0280c5","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"657e8db23d9566d7477e1f91d7b0641bfc0d4afb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-dfd73a-ki0280c5.tgz","fileCount":309,"integrity":"sha512-02Zp63oMrf1x7eND+rMDVF0k7jtj9Ib5ONzhJbDbmVMmKJCGn2DCz0t/xdRKKk+i+8+LzqLlIg8l4Vaybna0Dw==","signatures":[{"sig":"MEYCIQCjoRUl198JJHD+EHIHPVUjz1PxCfnPeF+i30cbuZZdsQIhAM/24/daKNE+BXjMy7nO7EKxc4H28d3wadtnoWiWL/Rg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwMX9CRA9TVsSAnZWagAA2osP/2VJTV7SWR6Dv8bDP/4Q\negYGcppZz2PryJqxaIhreFhTXU1ljlakyasvQ+A+xiKqfssBq5cI5WHvlq+v\n0Sd5s4jVYXiMvZHdjrF/XaAlr/nqr/ZlQ1xK9IuFZziKx3QRF1tzbkA5w9hL\n/SgMrt+rAGEM9Wj+uJBheLGFdoPqZskK5SpLJx9E8BsDPNAVZTMM05iCMUmt\n313qHT4wthvUbFCG73dZwk+iEPiTVLffKV/V7YH1Bk0j3X8cSs/h9wIAglNv\nQcL9+rTcuobwTxNfneTq5NfvKj5jLKjMcNzckjmqbmHcAJ/KzCfVK2NM9Ga2\nChKDtHVpbXBHGb2r+w73+wGf5fAnwOq/hjou1/zneY/1OtUj7PXFIvJnsZvh\nXFtCEeVj9Xf9krjKQzOupzx5zyGIdeBPjZ2jAzbQLZdrxK8gGRZzSg/YW0hf\nWSZl1f3V3qyN2PYekC40F1dvTl6pZt3nM8ilXEUzJH/0MF0TikeudJONBjaY\njnVkAigYS8Tl5Pq1hlQrkI5rlYWqWJbjzYWMzlmmQFQacfUxlxZH+TJUThCG\nvCk4//0129H+0GE0tVR9PJ2ic0fVwTrWWxL7ckmYtAGPpAiYltKISnQtSNC4\n2QYTPtQ90tUZ3sHcRWZnwMOVTJT7yfLrFV/o5AtAEftQBbtPfnxIILAFVz1E\nis3D\r\n=HAsK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-dfd73a-ki0280c5_1606469117263_0.8175651108713162","host":"s3://npm-registry-packages"}},"2.2.0-feature-d9ba1d-ki4ani73":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-d9ba1d-ki4ani73","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-d9ba1d-ki4ani73","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"63efa80d438dbd6e797ff6cc4c11efda16a05ed2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-d9ba1d-ki4ani73.tgz","fileCount":309,"integrity":"sha512-mwObo+T67PCwRuePALTeIIgHeQ2Hao6f0240fd+zYGI/q9ZnWbQ4aSpIlqQA352H/LhdnB8y5OFWEd00+GSsgw==","signatures":[{"sig":"MEUCIQCzXlhFEGmxJpkoQciKoY3QrSPPCPxx2NhVdUdPFLjCZgIgQiuCS0p6yETGHvQXA+dDHzOLchSjnbZmU6+4SQ0F/TQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxK4ZCRA9TVsSAnZWagAAgB0P/RS0IKY6pfDcwZGqS88e\nA12oB+P073QONfVhenEoj9Y9QDyqlx6zPPTZlD/FIRhMQPC4bLi7BkiTn3fe\nrBUFTx0uNzyfngOGn5LTXCU7CJf1rYvcVDpqWSDcKp9AJaoJ2QcGj6VO+qYK\nFg+6Nq6axep6+A++USYqWn2c3rWMjxyBYcMaRNKY03dTrbJTvE0B7z0EAJ0K\nX1Lg3wgo7uRTopibNWuxz6lj/e8MFkP1s8iyA7W0sjR2mPwIadNpLiPW0HB2\n6HuwYDWKa/zBWYp42zG4z2SRc6X3iSQHEu/DdOb7j+pWvkEEMtc+Gr1BmBFe\nVdqR2fJmeLbt02ga5SE+17cqGTT48tB7Oqez/xCfoR9y2Ieap7SpUujlShpH\n8i+FcVYlxohkxMB3TXkk1ajURWUFeW5BWOalWfWKgy66ctw5dFZ/E0CGDiBc\n5i+wH631H9HlftZ9CpxyTn44lORcecyUybg8pJt+FJz2pTa3xU2bNKAy/AyA\n12Tu8lh64Gb6hL+Z316YZsvOs71s28X4YyOvE/JzU4PaVygixFg0HlSmTzCg\nfwC+a7Glan4OdOYsbB2TKvKLu+Dco18w9wevTIV3wXmPmm5wN+iosjZTckL+\n/VnrNOhH5hiIzj5+PVibM1pRWeR9s1o/BBUGcyvrtFhFc2cKPEA30Zx85XQw\nrZ++\r\n=M4Bz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-d9ba1d-ki4ani73_1606725144700_0.7589680247045578","host":"s3://npm-registry-packages"}},"2.2.0-feature-42bce8-ki4dk0n7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-42bce8-ki4dk0n7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-42bce8-ki4dk0n7","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3d95da3ea3232cd9c69d5d24d6a3cb8f0828d996","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-42bce8-ki4dk0n7.tgz","fileCount":309,"integrity":"sha512-2urYTVbPvrLFqZvpxAwcNUpwbqzrqA3MipC7ghI8+dgMyFn6bbnNIkhEHBUmHMNMbDFgfXXNXLOIPtlrW5jJ4A==","signatures":[{"sig":"MEUCICLiPPnO6M0VDFUqsVwBwP+bn/fYOJbjB4AzKmNCi+xsAiEAgKSlYhq30TC+xralmdtKp5RGnH+ZI4DunWSG+Bek9+U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532062,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxMEjCRA9TVsSAnZWagAA6jUP/AqmzOc1F7/UZhON0I6W\nE0FIDc2xzOWAAec3sAl8/GkjGSFdLEz03wMZ4yPL6VH5l3bCmJuYYO5BncrI\nChIu57oNZBALqEzCPuPz17WrTLika3BRp5gIsJiF39/R5cIXlSlrH38j8Z03\nLh1X+UcHJhUz6WBz+yFWcpXMvp+v/xGD05FZRkd90s5mOZOCBsEyaZL5/+fi\ngsgyGCqJz0Ctcyv1x2tzsPlY9QftcIkAdmzRJRIxZXDZ5QVLtRmbPG830tCD\nzzIVFoMgcwwnWmD5f0SlLwD4CUf4ckax1Bah1jnszxfsZyp3OgPxlcsC2HtW\n2a7cLVdbvNyzVDVH49KktWPXBAHBWOGc1MYxdp7z4oOWTozfa2XOlhF0i827\nbcG6uxQuCdRJa1H96qWJrZ6tWyWg5yGyTa3OGTbbSNvpwZv4B2QDSKnP3alo\n8iQo7YRCGL9n7zHSJRufRepDFq+UfKSFLsTSVt7dK4Dy4zzMO4WScrDG9a6l\nrgWX8cpaNValU//2t8w+xgq7CiJCwBXHkIUiQITfUK3xFGWsDbN0vXL/jhxQ\n10XDI8ck/3YJ49ICfP5LmmhGlyyBIseclXi2kcOS+Wp90WXMnCklMK2i73LO\nG+STKFKtLJXGcmEKbFurt0YVd8HmoZPpp6nF40obenVpY03YlrMHy/Wi8fol\nNRwp\r\n=I7/m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-42bce8-ki4dk0n7_1606730018686_0.6280803169060616","host":"s3://npm-registry-packages"}},"2.2.0-feature-b05a93-ki4eicu3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-b05a93-ki4eicu3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-b05a93-ki4eicu3","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"191a062e3511b54d9a9d5fb40a53ea1354300d12","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-b05a93-ki4eicu3.tgz","fileCount":309,"integrity":"sha512-LTFoegidFbLN25iuPfHhfuHY5KQ97wkUSYiCU8VS5H89STqUy0rGycygF0J+F8e9D+6Sjp3fdHjeo6B0RuFkfg==","signatures":[{"sig":"MEUCIQD+nsYd+pe7Hc0PPDQP+u4YsakD1wYIfWf+TdLJLA8BfwIgO3/HlwVrTiq3T+LkomUhrgiCjL07NDh4slFUAJ8lzYc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxMdlCRA9TVsSAnZWagAAts4P/jd5r0vgz9ygn8jE4/Zv\n0ffFy+JztqTpba4ZJscTxWLpPpv/4d9NZukCtphwZVkr/3i1glpHhm4SNyH5\nDVk/VeYhdB4Dc0QYsh1LXU67Ep8lvOAMgMx9HnYoWzqM7/LZVtemirrgQ0c5\nnNjCgdQ9oDlgcabhKjo8xAQ9ahiJEMcTd/jVlRdbgInJTILV99ZHaIcpiLO8\nbT2HbXMix45MqgWpUtGAQAAqv8cIhKSEx/W4z9Po30irSeNaCv5w6pqvAixt\nb57xQjreAgVsBddyd/qZTZcMJ8WYH459ERSkQDk3tFD7xrFOjtnYUTHH7TZD\nEZJbwvdcpcnKJ0s6VO/VTuRNXBByBwRyXG/AicI8eSMUrdozQeEiuNRrSz9r\nEAjEtKHdBBlJvUnRvqfTQepSXh96k4kw/yBt0kXTrOpyv1n7bOqjG+/RQ065\nbZYKB9KsDXkm7ewdoKEYhJec6gWXN6gDFHYIMCEwg6Ry729ZARWFflCOOclq\nkh4d7sAjL5Qg9abY35vxHPpalauhvtpaFqpCauHH6el4eU2d/U/F4IXERjpk\nmj5L47AavAKtktuc1RUuqZ/ADvxTxQuPa+SyRweyyVjrzGUsN57t4qXsnTH/\njRn/LGJoeT+FtFlZO1X4cFufMmFXNI36qJwFBF3kJl4X5zXxMXAIxkVKEoKl\nGqVf\r\n=HCbN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-b05a93-ki4eicu3_1606731621334_0.7305254592330277","host":"s3://npm-registry-packages"}},"2.2.0-feature-d6e5ef-ki4f7fs9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-d6e5ef-ki4f7fs9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-d6e5ef-ki4f7fs9","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fb7765186a778b0d5c24f06d5141972ac89ff8d9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-d6e5ef-ki4f7fs9.tgz","fileCount":309,"integrity":"sha512-4jWLuEFujhWPiACOHKS+1pv2NYtol57SlqAnsFXR2YykTMXVzilYZVTnk6CdW67+bq9UnkgihwvVMFGyqFxWrQ==","signatures":[{"sig":"MEYCIQDIKuizcotNeJHfzbFmIEKFAmswIwkOmdEw7dn53sot2AIhALDf3Qa7ouZZNm8ZO9tmGR2fxgkwU5Ug7B6ywftaXM6/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxMv4CRA9TVsSAnZWagAAtrMQAJFSqpGPY7C6gT0LL78M\nbPKwap3SAiNiOxfLhqA1UNmje+oFxjFuy7kGsgZwiJ5X2x6kTZojN3XvJdSR\n/gYT9xVPLWUDpmqqNxJyKIJ+H50AWPZl2/xvW/V6oelTEFHyyzNrv9eFkt9p\nwYmbOP8au4VhwBSAh7Gt+Ls4TifMWv2xSoX1NzrrNIMslejgj9esC8LJs3xw\nzhA6Tv+PNNRFxH7sRjwLTwHkTjHgrg52AtH4ZHDtyD9y2VVa2KkTn0SpGUI8\ngt1By2+1MUACAkyhsaxP2eQ7gg4Cs0JZ1VMTWeah6Ucd0lNK65vBRC2N3P+F\nFU1zMWfK9fC2RrnJ6Wvo2snX4/oAIgRzcfDPdQhoPC9N5K+J+LoSTsToYRJV\nFlzRMQGXIzP/m+yOi/GPEFfcvySBy+6Mx1G/O50Y+qAZIol/0ALDWPjtXN/C\nQX2o+OypxKK6TjmoL+Uj/Dcakaduajg4bRkLgM6FmMHZ+ZpkRydWzhgPV3Rs\nUdl/cryOqWlEeDroblNJVbyzbkRzF0W+4LvsQsvYWWpc+fMkKCYg/V/ncHNJ\ndnTj8KpvfMMUroxnDPjathJ0OkJf5W3PbOT22c017eRl20oZ+l9KoVmGF2db\nsmUCAXpi6Y6BXOc45moJtcvl865JFqek1SeesRbZsybROJdDjz7rU0BLYt0H\nlznA\r\n=W8ed\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~make_data-object_globally_readable"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-d6e5ef-ki4f7fs9_1606732791580_0.17945161122108888","host":"s3://npm-registry-packages"}},"2.2.0-feature-60ad88-ki4l3k6d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-60ad88-ki4l3k6d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-60ad88-ki4l3k6d","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5b28c57e97a857600505770683c9f2ec04d5ae53","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-60ad88-ki4l3k6d.tgz","fileCount":309,"integrity":"sha512-ZgUlCT1QT1eWctgjiUloakP51SAaMhuPqvaWk8pVaIG/zaHTiKl6W53tW6r4gsw7GeIDwpjGygyJ4Jj5M4B5qg==","signatures":[{"sig":"MEYCIQCcksQ8Pn/fGvecM9wdl8e7gJu6/uBdea9A2l1mliNGNwIhAMD/JfKTDki8m7JSuwnTfoliiVBvkFQrePdoOm5VoSH2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1520710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxPKpCRA9TVsSAnZWagAAyTEP/1uNTPD7e/ruHVmFH+i0\ncEkv7vwJX+QTOz6zJYsaLJ+fveCPuKHCNTIewu84aDNgOhzQZicvV6nc4VtR\n1Q29uaBa6bOgGGf4vppe3Sm1MSHbOaetNhFjD50OOk3Y7bD6kCw2Vy9ZOzfy\nThJdwaS/ZhycRm0LC3DZ0RHqvz0vgeUIWeli4wjqPZphLBkPYqhx3Y0Ixowf\nwUZMzlm+QNRl4OTY0H5+n4anMi8LJIeT+kM5q+mN0q4XCuc1vwui0ZH+F7OY\nK2RDpJHTsuKZlFgyY608nU4CBmK+JaeDbGIUGZe2wUPPtQuPaZ8AfCCMwfgr\noYWITCEbide7RlX+y703403S1Ij2bNG4ZjjeOH3ln8FpqKVRbMRSR8fx6Zvb\nJVthuwi2Z4759qQPrJjZvrjvFEePy4Y+iMbzrU/BMgbORlXkhgG4Tk21tDVY\nA42RuDFqAizpS4/GWT+l++vQY0/rd+B2hNy80jCQOUvHtt1Ino4fNSh/JnXF\nky6nlzX2+IUfrUTDAmlFelfj7oJ+MdbO/RAb/Z8rtYO6DrxBOo1xwma1/mvI\nhR21FrCn5kPMpSEVX34bWdnivZoj5lqG+QKlIpS2xWNBZeK+fNQ1sj29Of9L\nuSIglEF6krB3Hp4cT5UBReRcbKZfcu6c1r58Jn/BFu25/cxwmqjSbnSgzve/\nrK23\r\n=KjuU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~make_data-object_globally_readable"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-60ad88-ki4l3k6d_1606742697233_0.960591870494595","host":"s3://npm-registry-packages"}},"2.2.0-feature-d04d5b-ki4ndx61":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-d04d5b-ki4ndx61","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-d04d5b-ki4ndx61","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7e059a846a330f3759ea94490111e9be000c6420","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-d04d5b-ki4ndx61.tgz","fileCount":309,"integrity":"sha512-b1c9Z5pT0gR+vk3mmJb3QdAyUDCCfyqhWSlUWYT+bZ96ryFlhnWtzxvh3VTy0Ok1DYpGcWXraH7DHlPT9D6QPw==","signatures":[{"sig":"MEUCIBsNjKOiYDu4j7Gvzeyim9rmFKCN9IP1kvnBI6Gvh90MAiEAtyQ1wQsbdj5bvQcSPeF586crejHvncrxco0kiC/K1u8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxQGlCRA9TVsSAnZWagAAVeoP/jeupucXj6SJnP/YUV1y\nK/uB7DtjCm62NcUBapZ4tpdTr+qE4dQNqrdNL20uiTZVGPcJWFMTOdX/70QT\niW0P/EH5/0/bR1rMh7HPABNr88xrBlINZXxtI5vN10Iz6Wa/Wen8sbGDsD99\nyI+odHm5UpYB1LDQYiMPYmTu/qPnuOZGlRbnpG5BbecsK5ZT+NWs0U+fHEEB\naKgsihsoVJs9MElWMe/UA4Kjc4hfrPNf650I+DLi3YIirBIZcQKLmgE6O0/k\na9Qqm2tVrZ9dBCo4HWyNpdGHekDn3IGnw6cfUHhMzMZuqwopXyrb00gmH28I\nn2PHKWEY1NZoaRl+EvoFJe2iz2fGBAf1DxWoPeWyoJxM/0I6CmiXwAVnUXpI\nQku2cLFuu0kAYvje6x7PjXc7NGnMq/cWlSmNiJbiL6ki2k665ls9vkMZ5nQc\naktaApFUc6r9jA12yKTl8nQSY2lptz4DA/Gz2FHV5qU7N0CGhLQMWBw2hYtU\nGj4QP9KfEDYph108qRp/39N4MSXetstAoFE/jWse2yMpMqGa8wKZUiiv6Lq8\nVK/hxuUJHP+Myp39KY1RLPvSeCxnWOLcS7zsTgm8CU1HHj/fDGEFj1ETyCuj\nl3TEWEotG3r7JkcklHIw/HGlNri8j1wPRX/19ACxk6O73bMWD0qbbulTVExv\nI9d7\r\n=6Sgo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~make_data-object_globally_readable"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-d04d5b-ki4ndx61_1606746532894_0.12817511435062157","host":"s3://npm-registry-packages"}},"2.2.0-feature-205479-ki5q4twa":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-205479-ki5q4twa","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-205479-ki5q4twa","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7810051145fc0dcc14dbc7cfb5c1ed0a1d7b3869","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-205479-ki5q4twa.tgz","fileCount":309,"integrity":"sha512-lOJlJuqEI2caBDoPL+HaGLa2oPLHcL15wvi3ddBiNSJH6OM+MwSe3iOD0d5ZEgXoeF62bkNBLedbkp4Dd/HqQg==","signatures":[{"sig":"MEUCIFvFpyZt5sFg78tBoOwJhjtayyk8NYS9/F78t4FcOi7XAiEAqYku7Al35HYx59kzs3dUAfQcb10pGEt4csQLi6DNW+c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517609,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxf/cCRA9TVsSAnZWagAAkRwP+wV3gA/cAc1fKcNTaEHQ\nmVpgcK9qyIDxPH/X3aKtFR+is5Es9GzEHuDCE+5Nn5sr6D/56Zp6Nq6Eyyqg\n0jVqaMVy7BwF8uTGjtDdBktVsWn1p/i6ZoUcVaRnL32mGPOTmzB4SI8TPn43\nZcMPDU2hxWJpToP4K2ardR33QRpZNE+hpvcMnddi4zBBUA7ETv0KEH8jHXVA\nlC5UgVqjAXZDllLLhhg38HqsbeQTzO59X27OZsWea/Ry+BTgB6s0vjDwOjSp\na8hdp9sGuSaZUimqXADZq4pP63r0zZKmBRFqs12S3ALbehM4M3QjkpuQ47yN\nRcVa6hMlVRF2vqrIMHBtwTVnybi0WkPbfDtzaRlwWRGIcCBZjzb17y+wBnjx\nSe5QsTPhUlxDVvG5WGPS/WnMp7zofxqYmmg0bLjubfXWUu+KJiMq+VBTyRxl\nR9EQ0M3CumXKX7LAtn8cemVcRPSGc9So/1I+VsqfdmnTzbuPdSygwUYzKShd\nPZzEO2WS/KGu2JNwpJ9+qI1s6Cbe4khnR43Vt6wsbI+WrpW+tST2B5jJQWbA\nDSdhjqgHpYNphB4vVCaTTYxviVCIL1VMmwL13LffysDW01UTrDXve2m2gNK5\nfeXFCK/oK4Ju3baS9spghJButSDheU3mUoJCccho1UDXRUPu9W8L0YjdvBNe\nfV4Y\r\n=fJyD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-205479-ki5q4twa_1606811612065_0.6777235298163169","host":"s3://npm-registry-packages"}},"2.2.0-alpha.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.2","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cc0c47b92151a43a2018f4741a196fb14feae896","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.2.tgz","fileCount":309,"integrity":"sha512-lMH9GnYc/Vpq+rCozB2IWg9QL+pJV0S48l8AJ5VFRiLJt4jA12OGJ7dAZF0Yl4+NPwSZWPawCh7lHeIk37b9gw==","signatures":[{"sig":"MEUCIExX5R+fTq0+2bmDCkD9WjcfjCNUoEQUbTfLgVjw4pbrAiEA/Sq4eFaA7CQt5FEjjdxouvTrSWpgxGFaC4GXkbfzccM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517593,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxgGRCRA9TVsSAnZWagAA/CAP/2JJKrnlO20/9UFFl57n\nSt4P0kyrC267YnoWS0E1JJV5dyPbjRUjxoxG+lRl5tfFGn2rmOpmQTOCx5ua\nkpZ6MbDXsGwq3gLmapx09F5yW5H/tT8+VD06qtI56W0LStxcBDir8IXAKhm2\nsipHePmH/LWROFzgavANPOaCapiUerWHBtWO/ewmlq+NdZUdW9Bln6Bfaila\nHl2BWRdoGV4qtkPvaqld2Okbai6U78pUGqd0igHMrPIOUjDFB/SYV2VRyJOG\ngB+BePihk7A9PioWP1UukhzMbnmLv+VPtwsJCsN5TBf/SttcHpXVXBA58nko\nYfcflIfTdaCFgpLRl2BYrx9NXkkzjL1Rrtbgww9XCcjpQqfsrRK7//WZLwut\nMz4WNL/gN1iEmrPVt1cNAYYKVUDzEZImdIz+0OoHIiJ6weIr8NuGfkZpbuSZ\nhHA4sZaNfCa1mzWBii6S7LAn1SB0GwXG1NqQwkv9xoAdYj6Z2aaW8ow8bhQU\nlMScbPEArVQd6EhoQUjy/s0M/uRi8XNSZYneHRSasTFX304zFmnmJ+zZD3Im\nMiekC9MN+sC5bonAa22WKPFfm1rFX6HeMOfcakhsKQME3KuS4oV/ISUOeE20\nvieDvfKn4+3rHF86E69uTvvRgasY2t2MLkHXI6sWThZYIEIJe/5v8osPAgl2\nFL1w\r\n=A6b+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.19.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.2_1606812048655_0.34417685280787413","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"50b3474824e0c704e0444f1108288a1c83016cfa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0.tgz","fileCount":309,"integrity":"sha512-suPS6mKl1ACPer1XJN0jJTgAHVTEccQb8k6knJ+6Sc3GtB3Iffyr/Yi0ef/P7PVDUqVMs8eFIrz9g2NxAGkUeA==","signatures":[{"sig":"MEUCIQC09P29/trkqdVnxYSstKQxICKgmX96bIVgCVGmEKMAzAIgUXdo0Y0z+qdJQ5Ac2Tj5qeNVkSuS/JF0AZIfbfIS0kU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx19qCRA9TVsSAnZWagAAIMkQAIcq3eYhnaMZ4u+xiJ70\nc42i2bKe4yGBqVIBy8/wJd6jCq5BLK4BvqAE7PslLz4OuXzKFmFbr/+bRSVE\nUQ7CiIl3acRt6gplnb8lLXPJtYRfWa82sI17Db3b0l5mOyQ+qEixgssKxozT\nN9A3+NdOfzbyBVkAB8CEZKyBJcszbf9d3nPJ5mXvyN8kPjYP8WMXjamZvKP/\n3HloAh10FTOeJnWG9DejjropSnwVh4iQ14OedkgdOQNnfqKrhI7Y8XlRqaGV\n3w68sbGryOxYzR+7i4Mgl11Ed8mLzW/8rN8HhGwS3qmYgbPXZTALHB6c607Q\nHBPL3GUX56oE97DoEKbRuxq2hCmHNLsnC+yvsNw2944fgRcW9Y5ik7AS/IXc\nj4qrKgPUBCtj/AWC4Nr8A6f5KQkqFUjdwuihxd1AzRqKti6mH+CHnmZCHlUe\n+nXy2jiXza7B2Jq1SF/jBpF0/ZutNZ3vqlppOYqWPTxlOTz0F2r4Ku+K+Gxs\n9Zha6qLdZLvDHihBV/s2P/b0akw3mf/QcdcuWzr1eJS2JRMz+fwtjOZzJLl5\nXTDrpcWMpdL09E+Th4hRNYobJ0Tb8Snqzs9CcHGlxvUKwgcom5eqRU39aKIR\nQQrwLp0xy+38wKOcfarzBw0BB9N/rY5MOmdAVtwaoXItVUsozf7JlUBRklbS\nbqo0\r\n=1Ob4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0_1606901609961_0.11252600074005215","host":"s3://npm-registry-packages"}},"2.1.0-beta.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-beta.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-beta.3","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e5e21127ba576562a27c90e4126be3d0df0817c4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-beta.3.tgz","fileCount":309,"integrity":"sha512-f07bQbtFMOOfY5V4IxwLoCX8dDAqOTQoyzh4BqXvYoAvqv5bjAv5vNPkFOQ5vLCxSFeBUw+MGMnATSscGbVKmQ==","signatures":[{"sig":"MEUCIBzjcYgn6hhPKZ7Qy00j/oTzxKbauErq4BXv99M27YgLAiEA8PUhM7w2lWCq9Bf8KDvaqRz9Qv2DBkzIC44gpBlJSLA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx2CuCRA9TVsSAnZWagAATyMQAJzoL3MfcLPFb+rI9ZG5\nYcgACsHXknZIDZfsnQGd42EsDklki+SvPUs13cjAagZ4kFmEcO+jSPA79lAg\nfqBKB1c8x4bhbntxlCjUGL06bmNADPqZKD3y5j6LGn+lkP3moHgV7NrXg+vK\nM4fxcoB7VAUGMWJU6xVV7ker+wKyBJB5dGKD6jcuK39XWWtpYtD975/F4AUC\nefRynf4eIS7gwvvpkeRHYROOJCQQ0BBdDFILtyXdPOXmlz8lQMuFr5MQ7R58\nhioyoIKU+QZ3JZSW6KKWKAOVWGGFQsb/ovBn9ElnSoChzx6EJoyy3Q4kGbsw\nw3a0OYgsiXAv/9HvOA+F/SlTZT0I4pDMQnadOrcZmkVMeq981QSj53s1aRY0\nSztM/AyhBVbX10B8ANheL9nY6owTAVfge7WtNuvhoxqZBGTagYSaKiazeWJR\nJBn4Uzt+2sIQPJ9OV47PPzcdN0aLQjM4au9W9Q064C0euEOHbiUV0u+ISzol\n+lYBXXPEV5yU6Jj+GAZ0BmLb8oBE3ycjyTn1/3BcmhvjfwUUEWHGzh95FYTW\nvLdOKvATcaJtUlStgULt1VGf/5fTNc9sciG3u3TTRrZuV8qJ5781G9r/0+WI\nd56L6PizPFbQ4VBmtSXBEcx05qlxfx595HgSxsAGlVGyAJ1n1/oc6oCiFxT/\nggak\r\n=Ieal\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-beta.3_1606901933828_0.5261377882068536","host":"s3://npm-registry-packages"}},"2.2.0-alpha.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.3","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3d6e9734ec25b4d8f8ec8de0ea8c5e9a58ef2249","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.3.tgz","fileCount":309,"integrity":"sha512-wiOnbM5jWxeIzEZgNqs87ema0HIjyDAU03x4n/qSFB1gSBxRl2S7zIFoF+/0Q3VN7DKW1HYPHtYRSbE7HE/NNw==","signatures":[{"sig":"MEQCIDiXRc6l9PUUxz3UOmq764Ssm0xpE/2ztaVO9kd4Jp4hAiAbdsEuxqhuSfLRSxgxXQnknoyhXFzjnLFBeawptTnq+Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517593,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx2KDCRA9TVsSAnZWagAAE34QAJJRrp+l3jDPfX757dNp\nKfVDGHCWTM1TG49JtdeL+BDs257tJZBq4Ca6rjHVhyzklJ8e5HeMMMi5CfwO\nr5HVMfVSbZBw1zP1bGjZh7UTslH5H5AlBJxLmbcrFJhgmT/RIIJPWP6kVk6y\nFbF1pTidLg1FivnQwbVqktPOQ8FIW3dLmckxRyO3SJJ4MZwjFpZ6tWKw2SsQ\neIsZjqFPbz7yUCMMidUCtu36wOaH4GKX79KbD6ZJlvFW4qdTd11rE6xtrvs5\n+79tZvjfHnwcZuaLPylgRqPitB09jl17QZ9zj7je4m87J+jsI9GUUKgdNJ1R\nU2Cw0UnDrQZsb6Toi6l7rDOCiGVBA0KNDqBsRi94uK5vTtS0jLPh7zJ8q74R\nRquA1r8ZbkJ8+w6WNwtmD7uAXYfJZqR4wFXGR44AqwXK8xuRY0QLOzc5mG/F\nrIVDJehgmmSDgMUbjyQnbwifaedPhhNPHRMJ0jphfal98pYIH9VLDy3yId5/\nZMmliqgZRZFkrFpcK4J0+f9uAGuAMVKpMsTLuSxneYKZj8XVPNLZMT0tRb2z\nkVFRewgCtmBWAHWNdzlgxlYKLmVpYzz+SVLOw64TAKqlxmX3ZwVz29eQjE7H\nhJ2QECLQZPO6p9MDeqMZCpD8NJe0/aYieyO0Rll9agnh7umyCD91tSnGqHg0\nujvm\r\n=+wuR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.3_1606902402729_0.9717710616658071","host":"s3://npm-registry-packages"}},"2.2.0-feature-a9ca58-kieexwa1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-a9ca58-kieexwa1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-a9ca58-kieexwa1","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2badeaf56b81da99b0bed27d5f5cca354be870d8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-a9ca58-kieexwa1.tgz","fileCount":309,"integrity":"sha512-u1pQkW5r9IDy6RiB5z4VGsShzbEuB4iFBMkiZpRIAxWH8zp3sv38vTw2upNSHSgMkO7rApgoUGSUQsDCUuS7vg==","signatures":[{"sig":"MEYCIQDmb+d1FFXlYzMLPQ/dGYDkacQGXn4BZ7JtCL/NMnMp3QIhAOv8stQE3SZsQGx8T9tfYWT4j6v1jhJffMyrhedRrum6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzgQtCRA9TVsSAnZWagAAKFMP/ij+oFiYwemMBNu0+e11\nyHeC0/GoOkJmyr0qmIpAWFqxiAEq/1XRCWI91opGRdkBvgTD6FNCBdLvjkYN\noH/BhaGLFQz1VT5qKkd5cMgxj0m02vtnZBn0AIDffYAaQif4lzmT7gWk71h6\ncBBr8BFlE9NCFJz/38Jp/k0m7XQtvfmW++g+f1uOXP5LOQfhcyRpFkBZ6E3Z\nkKntNBMpB9Pf3AT6pUAbJYwNcgyK5QFS8hOh1exz/liYiE6eCr0XKycqavhA\n4ob3UJFihUlenoyR/ppUuREUsEw5ou3aM4HxuGcbwRU0yXhQX6iEkb8iy+j6\nT8FPu9wrygWI1eDEUOJqj0kIRjKaftL3Y0hmDvQNnAwtKuoaJJycwUe/LNW7\nweV5pGh0r64Kabr6YzZNahUwDUrawkyp1IGU0/XjJK7RYj2gXk6erDvTIITT\nfOHmxpvZIMtE0quq16aflReZrDFATOeadDlJMDR7nC1UveyvowJkZCSiqz8w\nJmWNzA7Wky8u6akFALp/QZHAKkLem6czWHqMX64+P7eDcVxCCBX7offFCVKr\nvKoJecPv+XNQGYqcDDjVV4pZiEyVFV25NPJulLs9+64wDyKv8iuvmkVQk0bn\nugTHoxH7lEPQIEq4SFHQqlhFkjmxiT4X53p5FUzNSiZyO0AHevm9QoS4eNzW\n3OM2\r\n=E3db\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-a9ca58-kieexwa1_1607337005086_0.8528017106315899","host":"s3://npm-registry-packages"}},"2.2.0-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-beta.1","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"867fb0ba993f3ae28023c99a00368aba1d3e52cb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-beta.1.tgz","fileCount":309,"integrity":"sha512-Lq4i+IYpdo1mzPv3J3WMfx3IimuPwLfOTM10AutksCn05HY/og9zOv214E/6g+oY/P7qC9JmSss2Q8N2cSVSqQ==","signatures":[{"sig":"MEQCIF3tJEcjWlh1BJYTiLJHjmUe+kYW5b7lkUaCKj99y7W+AiAfecgeczkHRFLGR/QSKuOcxuofAppAdgvIsCcP79nnVw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0JBsCRA9TVsSAnZWagAAQdQQAJysyh1rxMvIFcA1PxRF\nVaF48USBDbJb2Fo49NgahJJboixE82vu1b38ynnYCxU91pIdA5TWTxpsbPjp\n8c3IJQE8r72DQOqLtL2eyhCZ9tP08SYKeBoXrL/cUi5sPouWpS+Rg/VtxvB0\nSrfti/U9FfbrS2LfEr3K8k0T8tEoIWxdA2dQiIq9ARmqsmSZp4QwaDPmEaYN\nWC1xpi893olk9WfnrbtnODbBZu/TuEzpCqciaCJmNyKrAZh7WO6MqhZUqyPg\nWH24Utbty2uvfNmfgoNXn/VzfTcDiGzdZkbIhG6K6FZd/WLEhpTC+vbodgp1\nLP2i3i0bdeLkGephiFdgyVSxNV7MvOM+a9Oi6oq0jL+kfi5aaUHnwVy/g2HK\nJ/3uZBk6O/++REFk9EYIO25syrhcxxanFdG4oiagUf/OtWMA7ezqAwsobeUj\ni9M9GHe0UoKvYwLTb957bTrD7XNqH59AVuq1ubfcyketQbdLHz2mLE3qYiSX\nKVc4HRDtWI4kvcVgpl+iKMhTB8nVXEG0AlBirg/TrWdMsL9wjfNA5F6Trios\nq76iCUkPsnLKPgJhzulzUVEnzCc5ea1L/3fcgldUz8sWfmLXEIH29teYubcK\nyVNzdDWHr6VM2DGmpP7bHqhaWGeCggHmUlH8bpU6XlNPhzSUFYCdfQL4Ga0O\nC4A1\r\n=bktg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-beta.1_1607503980310_0.5176676596183727","host":"s3://npm-registry-packages"}},"2.2.0-feature-759b1c-kih6xe0d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-759b1c-kih6xe0d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-759b1c-kih6xe0d","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fd6bd4011694c021403831ad1a92c18daf73d74d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-759b1c-kih6xe0d.tgz","fileCount":309,"integrity":"sha512-8s2n9m/M8tfJYVptzfcXmtd6EnAE9Q7ErO5iHZMFJupIYxYkWwY+dxjwFPNZ+KTFWTNYD2uNbpbivBfAb1qAMw==","signatures":[{"sig":"MEUCIHJnPybOFfbAZ7q3B33i2jOv3VNPP2MrL6xePUvKxTU1AiEA2HyKyYaNJhXODDKQ24uqGyysJnGBIoDJmVy+z+OK984=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0JQyCRA9TVsSAnZWagAAJ0MP/2ToTPji/6BnqX6HO4fn\nr57nBNwF4Sj7niG0FDdWWnhJmuLl+cgEEaUgWTvaMJtlUOoQGOkgmVH3Zgvm\nJgefgt6/yBPiwVrC5cJnzzh7563IdL2f0KAUIn0XuotEJm7rHkff9AZTziFB\nWZv+iQpUrHPwEUVREN3Jhs950qURVNm2lwDxFpFa1THWUzenyx4PwHSz1VrC\nnjcEmEmFMA34BzOEB694YxrCZyvxdT8zOUOyw2+xqwOLuKGsj20D3J7/8UZ3\nvYOedFEhldx4CautbfQZdsZXxjRjSffAkl9rq3Td0p5H9R6hHDMvbVh7nvVs\n/4MWGXM2wbfT7Pl3T4gNya5JEaX+QY69TA6BY3GUnjaC1WEDI3G1nfLLDjst\nY1oRh8LbXQi0uDtU3uEMQQpsyJvrv0SgjlarA57JCvJdXdGqHLwJqEi986sr\n4fZuAaSxliZLKStDnL09IfNXUFgpybP7v9foyAg/x3r/O89x1uVplkD5OVYe\ns1jtjo3ROmwOsv3drp20WjyHi5Lt2/03BZCY3+f2CGGy5nQxBy4yA7yXhNx5\nmfYnRAKjLqaATauY1q9tRdmZjOV+AbJ17OVXHRz1BJ0VRipkLMybJvleyHWi\nvvW8Awe65Xp4NGBDQ26ldRGZDM+bbS7jEHqHayMAfn5N4DRs9nsPE07rmftx\npc+u\r\n=3HFI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-759b1c-kih6xe0d_1607504945650_0.5435327257778704","host":"s3://npm-registry-packages"}},"2.2.0-feature-c151c5-kih8e2h5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-c151c5-kih8e2h5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-c151c5-kih8e2h5","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"20f17fa1c8e29e38aedc48a6d4fbeb40f55afc2a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-c151c5-kih8e2h5.tgz","fileCount":309,"integrity":"sha512-rgglRfcN9wWo5BWBNr2qSC6f1kYVKltCdClnpBIF9LdV84c5FqUkiUXdXFaGNLoBfvhGd9xfJ1VTeHh2mlUUeg==","signatures":[{"sig":"MEUCIQDIu9UQ3J3nktccfwskOWsLNms7RE3sWOuYsrPeIJ6SgQIgfrVEeO5pX+lwSGzHt5eXjKvVjw9BTca7HewFky/flV4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0J3RCRA9TVsSAnZWagAAktQP/01kWlDryOhZs0DWLUV3\ngdsuDgsfaep5M1XMVi8NeV1F2uwnZCd81k+KBQzfe4jJTy7zn+DLB8vLvA05\nO5QaIqh+cZgqLp4ZzzEyxpZmsmdLnAidZ+B7rN/1Rp9AVojpcAMwPIEhdn5d\nflmtKkGCnWg78/PovlGcVPDy/5HzFY8WsGvcFJWkManzl81rWEHsOaqRzpQx\nHFZahFytbzNIbvt8IaJ0m8gbN5ztSmD1mlQwDANU+MkWFNolAuNYvzWYayAW\nq30rowwBigM45CoBAOhDOlOffAWLyAQtHhjJ3k/EOHdzziLoR4itP75KSsqN\n0Sshc17vgnOriZ19GNlpNGYaQqXo7dIFAUjNZx2SFWSc06kN0nVScNsiTf8E\ng8AbVQasshvlk8+faNHycFaRT9FSg620Xfd9VhEDcUTm7hefCAXE5ahxzpbW\nmbSqO0v+xg5vmH5M/eZ7LSaE7T/g94xmM3i+0NlOrXpD0GgFrRaoAHCBoPK7\ntYOpwmU3BM2zGz2YiP0IvzumRJFUumbfsu4vD3rbNaz//zHTOSX2hhXLxIzJ\n0UYjvbuBzw8HRyh4FHgDElhpF5PMbbmdfW4wG/TmvZ0x+eBPcdyYW2X9mLiS\n3OcYgjdq2zLOHGmECUEvDQHihJSDaoOkdlZ1fW5hQp9rtuKrGIhQifpMxO0w\neUiy\r\n=DFsZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-c151c5-kih8e2h5_1607507409078_0.1488817811711527","host":"s3://npm-registry-packages"}},"2.2.0-feature-7c6cd2-kih8km9j":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-7c6cd2-kih8km9j","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-7c6cd2-kih8km9j","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cbfefda934cae8002229a70a798e6f50dd0e2bb0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-7c6cd2-kih8km9j.tgz","fileCount":309,"integrity":"sha512-g3SrSJ0VZ4xCyi8RHNe3C9L8uWTfQhVSB7MkV2h0CXTGR8yQK8stSMD0guoJUPbgq/bDyo1LLKURt3jkEqIXfQ==","signatures":[{"sig":"MEUCICxdN0jwEdHWSCxkLgGTUIp2oPsA7e9WGTC7dbIAz/QRAiEAtoGXuR4W0wvjKvHn2CUb3h6AYWOme3OmyhSXC499vn8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526052,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0J7/CRA9TVsSAnZWagAAwWMP/3eRYOLvsjDv++jilS7R\nFnZ66r581DWCJ7gNuFrw4E5maTDR2lOOGIypq2nuzViMubEL2bQgW6Jc5es5\nM4bf1fImUeg4Tn5pk9LeHFKy4k7bNzfRxXsW5CY7SBQLpDQ9duvwXbKt0/nY\npWN6tEaKBiT/K6uqoXCpWXJY+M+AJ4Y/J8YPvw7ooFEpm6e257J1ev6A7aBo\nlmKbT1MeufslJImTkoRoVRiSLuGjRSOAtSyhoE8N7JX01lp3skFVZ5T/oIHL\ngrqtN6BM+o88XA0Qz/mjTvmXcZohGflBbzetob/FjAZnrSUjqV6+k8goQqkq\nFORoD7wGp+zCTEPQDU0d7EAuRX6A0nxyCbyc7lX1chgG+uINEKmmLDiH34Hx\nWfhsJpVI4bwIjsa9W7tATYQJhsX1staB57Aa1JFLzEtnyVWR5BIobu5mdq4G\nO4C9ZN9FW8nXaGsyS1LO1ayS1kFiWMHkN/4mxu/xKgpWHkS4/zGA+HVwRBEs\nZCrUzsdanjjXCX2ufQ7FfaTeedg49HPWtLRDGEq14kVik0v3HO4ZgBSfcFYm\ndde+GAxKAt4DX9l+u5H6eqnhgoiiwsxpTRsLp2SOQQMqyLe2o6DybT8qD11E\nojkdJPACY/4KyPivWBwI7d+dVkfpSEcXbmT8PbiZkDu9kPyZvCHq5yyfeA2X\nGRG/\r\n=Y6aC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-7c6cd2-kih8km9j_1607507710768_0.7388460027286299","host":"s3://npm-registry-packages"}},"2.2.0-feature-7e033e-kihbqlnq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-7e033e-kihbqlnq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-7e033e-kihbqlnq","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0a08df52ea11c928aafd34a5b325aaef4b0b7021","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-7e033e-kihbqlnq.tgz","fileCount":309,"integrity":"sha512-T2U/8LdLOKt9OUGYiFyaOcXBdZPQqSmt+kiBLAb9SlxC1glDA+XDxvxcGMsxE2P5MbPxOpHkHlVI+VkB9yTx3g==","signatures":[{"sig":"MEUCIDl/+C0bP0+cgQb0RsPQmjOLzHj841kCNaOQFE/eDHy4AiEAyVcP6kOX/LPi6R6IWgOudY/usLUHEMcGQbpQSHdsPi4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0LO/CRA9TVsSAnZWagAAJd0P/2AO5VMgZPRwIz/z+S/k\nVJiWrxqeJOjuWDwdBgy09JGuckKEaBm7DhM6qMCIsM04egaIZw/vV8Y7dqVn\nhAtOIC/xTkoKusIwfCNJ636Sb7L1QKE0q3p3ZB2koD54U3CvxoJi0c1fG6SS\nH6SJE/h7aZ/DJHXm+wwtxRMl8D7wwXSdj2sKKQkjXkg9ALyocDzae3+iYUSG\nFf40PguKgblGV8jpCGsl7yNCmjjLbmMa+Ue5EnUCsgxp2TGvEP7uyFYiXDP3\nBoR3sDCq+8vWZTW827qFzHo70aGFA34hIgXs83FCqxRogh5d4bzzJWQGB9c6\nLXNY8w5QiXVrKuAGeMfzv7E5XMY41jbkyBOB9HvhJbk09eP6FQKTi+JqUbga\nROdhigzq4N9IIPnbLx/IIV2+fZEeU2tWav/NrVJ8ce0LlUdFLadWmmSCxUtN\nBTUDKH96kKZmNc+CtGO98yOIetz0tddASRlbRMw1WVPtYEXmPMVIEm+USjRt\n0HBiSnGZHuLvKxtDXxZbefgABic1nAjxSRRe9wyS4XKC5APFKQWMlwy6Z3Gr\ndl9/EidpIbHJZbRILGbV/W0rnzAeFmL1+TCjOS+Xgz8+Oil2xss8gxZa5Y41\nE8e/C+PsM8NV58+mb4PLQU5Hk5dqCgKBkra48W9wUAAG2Vr4HJekIqVD9qXX\nopYq\r\n=lzLm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-7e033e-kihbqlnq_1607513022985_0.9861808010812931","host":"s3://npm-registry-packages"}},"2.2.0-feature-18f328-kiheffpo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-18f328-kiheffpo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-18f328-kiheffpo","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"21ac359005bacb66c0e35e131a4ce8e840863e92","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-18f328-kiheffpo.tgz","fileCount":309,"integrity":"sha512-tONEYM2EGKoePdm3d5h5dPIyHPoTTBRUVAimZx8hvFAZlOx6pp6YvK+17+TpN50EFHpxOueDSaa3KX/jaFWcHg==","signatures":[{"sig":"MEYCIQDFUDfAFxMdGgef0Wyc2GKivNR2cKKIU/ME8KGSh8VuUAIhAPlvp2RR/S7L7wk2bcInVOeSkE4o4h8fcyYiu7L09IUh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0MVsCRA9TVsSAnZWagAA8boP/jFLrXWR2cXwe8XfKGCN\nkgyLmpXXR8fj9Ivd5l+rFDd4Zi8ka/TCKLAKyVQLlP5meOd2gXtuLyOqT6Cz\n5Eutr18EokdVjeV8m4HhuZEBdScqjL7Nv1r0BrVc2/FLXbuOafzNqEhCpKp8\nvCJ+qUsrqmPsdIEPBf/8GLcPQ+qxBh6q+9WfLmtuhlMu/MghI6KVl/HU5ADd\nLe+3UcfFuNPQMsX6dKia1cHnrQYgqXNPskykdMXHMl6clLsnsvg4cc4b0y/B\nteIdBviB+O/AYB/gC9thFyV5Cpr5/EPagcugK5Aq7VMdNDV59Olc1q2xPtZM\nnlMOTHkmDh6qz3ZAbdM2hjYjezCfrKxWruQCm+u7f6hG8+Pup4+EasJdB7qW\n48Caf8g/A9vZDznEo3/xlnz7ZYkBo4FLEPWCM+zWkBc9hY5Ue6Kn8o/4t1Rj\nyiP/qoXD7pZDE7KDutA7A6g0ywXctnQNrjNHi7sjwFwwH4Gtb6hKUe5CENS0\ne+pmlqcqqDTnwb7LD5H+WGWpXCiTvnTOT2vxWo6QNGofZ6ouGSuGJKeVN2kN\nIU/IdoywmaJP25lympUozQBjSwuxRe7HIW6AFj6ludQplck09qtIEWV/c/mY\n9Oj9hDMuX/7O4pLZieUuJQi71kfOqnEK4lmknMGPOxEzADqNepDD8xAxmrjH\nD/su\r\n=iXVW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-18f328-kiheffpo_1607517547660_0.5108493173010973","host":"s3://npm-registry-packages"}},"2.2.0-feature-44d5c8-kihmniy0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-44d5c8-kihmniy0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-44d5c8-kihmniy0","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6a3ee46f3c9b89022e2dd60d982a0dfb6ccc88f7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-44d5c8-kihmniy0.tgz","fileCount":309,"integrity":"sha512-5zBVEF5nS9DPxlTaaOTAu2JyKDzjsAZHgdheFgIy2D3BbQBKLlq62Fn71XD7Uck8zXhiB61mBbQ4CSBSSSUiPQ==","signatures":[{"sig":"MEUCIBt2FVwn6t1WaV+CLFwTRQI2wCUlLx643HI6pGksiT0YAiEAvYZhIkcB32BRoxkxAoP9ONcngUz5L0CWUgWpyuO6IFs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0PtiCRA9TVsSAnZWagAAHY0QAIcW+1/2igHvEYtdqx1V\nyAZhak/rYL3eBdZlTg7QEbcpP6AkaEcO8b+EAsD71SUkYl+cwcfXzKYSem2i\nHrF0WzyZ8wOmmP7QuFFoxXDpIy1TbhKe4UYUuMqYS75idSnTtm8x94vGCM0J\n+38DtZiVnj9arh371I6QWN49I0Q6MNWmoeOJpRXKGXByWMfq3fRkk7zPXVQi\nw5jAwP8U/SmVmNScnQWGcDTxHjwp3QShrKXuvL/RQYA+pgpcXzF/NGCviDJi\nvwv1Fedrs+LRmbYuimRBWabm8Rg0pldb1baRNj5gc0mjpmEbvkNVcs0EJlMm\n0K0dK68fLeDuMQrmd0PxVba3fdt4jw20QTdqfrI8RtiqqKIerVXVDaKqVDCN\n0etViqQCJYvwKvXc1K2RIS7Va4lS36sEiCNLGJ3pfpUbbBWZ2FYh+62DqsRK\n2yN5GQITkn191j1UnrtdJdXBl70GVq+do1im9/iP6+8boMr5xffwcl0I6qoG\nGkVRuSurbsnIKmYoc+YT8OaZxE2eAcKrb0s3fEVc3fIExepGr7OtEf3XZmFW\ncHJ3mI4Ew0htM8on701NGFNfioaxankfDxvcxrnRlPqmYdEhqeHoS98Ii8qL\nrTBQtQCHIyRoWmPyAJ5dL8J9RbAAA7UegG7KsMEJ76yLEaeTPVP34zzRwKmj\n2F4h\r\n=zHnf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-44d5c8-kihmniy0_1607531361384_0.4341723646718674","host":"s3://npm-registry-packages"}},"2.2.0-feature-5ea88a-kij03abg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-5ea88a-kij03abg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-5ea88a-kij03abg","maintainers":[{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e9b8ec9fcbc1eeabd225ad818bbcc535aa54204c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-5ea88a-kij03abg.tgz","fileCount":309,"integrity":"sha512-xGrG8LQukQ+U6ZKLfxe0P2LzrCt493SDHk3cwS9qYtJ6HznVtot/qcfY9G4qv3jb9QJ+MYhBC2LkHiNStgXPog==","signatures":[{"sig":"MEUCIG7m6KPgMh3/WsuzR/yPstu9auGRqgBzztOZacnTIFT7AiEAoxLXRLfoNU0cjOHC0954RCPtKDfKqxYiaqCX1iw9wdE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0j+8CRA9TVsSAnZWagAA1Q0P/3BWaznfYO8JyKweS3rL\nIAtnCdL8Y0jyW1TcDWkSF1gLPYBvHCgsBeDBFAh19dvlkQNk7u81sEdTLR4E\n4UzhV0Ogkg0TydGEx0FzOG3dOtXNTH1yrpaBHQA56hBxxYQDEhBSizs2/D7n\nO4jlpcR4+A/q6iL1GvUcdBA+kGy6QoTZLf1iQ16SVb9/2X2ZgY2FoIeGMEWX\nJunF7BCLm1SNIZMM3wRqMYges/8YDE9UqttYocee30KXqhvIk8PxX35EEZHp\nKqydHjwZqQRRKJKktfl15bM1AaO1SGebEwNMc+QcJ8VlgnGNzuDp0CduORg+\nWem9uTTgU24t2DInHvC5iRpDf3X/JGMyNkwV25H+xd3vFw549shF8/I45P5t\neXH/dimnK3YP7GWR5uyU+KhfKDxyZAwvGHNWu4HM0xiJR7BFzoqlYIZSonPh\nPulrOtKyoZg0gXdj0m6PfYKEMQxn3774AEVCQyER1vHorRPG35siV+TNV8hD\n1UrxgOQ8msnlEgNYrlLV7MUx/ianwS4FazAoIbghfNdDZkgPeGY94yAqjEhr\nohSBpI6Pme+PAdtWfxKNg8BQBWa4BschqEax/IKnisBIEMBXx2Wj4dj/Nq2j\nfZaWlifJwmqe/4v//Q12DYn1QpGrWVDFgfVB5ph0iKdYBBn8zjlkkACxYY/U\nSZE/\r\n=P1dc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-5ea88a-kij03abg_1607614396127_0.15727036248663628","host":"s3://npm-registry-packages"}},"2.2.0-feature-65c5bd-kiobmyxk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-65c5bd-kiobmyxk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-65c5bd-kiobmyxk","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9142e3407273adb0673ab808baaad31da4bfe1cd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-65c5bd-kiobmyxk.tgz","fileCount":309,"integrity":"sha512-kFBKoi1YIWBkiC9bdcaQ2D+9KEsJvmKZHYczp3a1AwJH6UGV3aktoUv9cDLNwAJCTakL4Pll2YQeXE3JfaYxAw==","signatures":[{"sig":"MEUCIDdevPEge3UE/5WlEwiLX43+vnzHXrXwclP9HT12TQTBAiEA9ZI1gSdnn5nj1FBk2aONXz9d47QW/xtJ/alVEkfGODM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1yh6CRA9TVsSAnZWagAA9PEP/iPgkKcT0nUZPFbV4/+V\nqERNbZNhBL1bQpa9KYDk6mpTsATgHB2t0gex6Z1MNYjiop3DzHZ3z5S1IjJG\n4H3xayXnuJRVIKyQlq5RPKUmufqo9Pw73bHSoAZ1j4vnFaaT0x1efPoeWprK\n+PJ9NK5kX7lzl8AMW0oig5Rx0M4SRhg4mCzoXM4PfpzioUYwkC8eswEGti5i\nrRt4jousJaJ6YshtByS5LCT1VYmQDEhjTsnWTcqNsLCJ4hPImrMSx4Me1aLl\nJfAqF09NavW1+8bkqZrstHsg8EWiE++9kUq3nOrFHQHKGgo5nfAqm6R1+9CL\nUy1mxkYyiP4bx6jjqHHN/7RZ99WQbKITVBrOQwbr7NWawqj3ZzjkrelworsS\nSnsrnXnC+5nKqJtMhLSVt/FIen8aCU8ICKmKrmShHNdDghe/xZqGgazONHXP\nUPo3TU9XuLua3b3RQN94wgQNvqmkZRije6UqBLoWLkUbA89KAMCLWXJxk47Z\neLuxNqIKTjndQhvRFqeOmoJE/sOritl586bMUuX6SGTA4sSFwpJ1El8JGxS9\nKtbyidpv3Ksg6arC0blz5Q6K0cCyhHwWAcwoou8RT79/MUcfxFsIqRzG9G0H\nGe6IOFxcct/ga8Vatjj32uSkxhpersA7ilKQh/vRSawnGQ98Ai/ovcnZIifp\niOmS\r\n=xMAk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-65c5bd-kiobmyxk_1607936122436_0.8683289936038499","host":"s3://npm-registry-packages"}},"2.2.0-feature-c5d580-kipl6x5z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-c5d580-kipl6x5z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-c5d580-kipl6x5z","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b13633394fc711bb13083dea728d1951b2067378","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-c5d580-kipl6x5z.tgz","fileCount":309,"integrity":"sha512-cfoLWFPBQQ6+toGpVZLvFyv7rf/l9S4Wh9NWOC4WtEjFqKzL4o6MPLuCqnpoiZl6idfjCeCfgaaRLfudV71UZg==","signatures":[{"sig":"MEUCIC+RdcqGRLmMnHD3X69Hop9CSLsil5V62/+JX6JOWnuSAiEAzHxcWgsOCaKsYvfs8kbirT84UrZiyuUyeqNtmob9Buc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2FNZCRA9TVsSAnZWagAAt4AP/RHFfemqNyGUs0iUlEuY\nekLqS9iG/dVZ902kLqWwXUZWfU0V6/gCiPqfcZkw5wOgN/fGOyrDA201C3js\nsyPho0fzYeaxDhi3QjxCv8wJZ+zxwo4QESDaOfLzEZKw/MCHEgy2vNejYW9D\nO1t9Pv+gryKicmWz5yphnqvj/62jUSSJnY2KraMmvhn7Z5eSgOxhVmC72eJK\nOEv2n9eOm0PkzTd6wAODHKrzNtdmiZUiTtYBJfh8QLETZsNMwZzzqBzBp3I2\nnVg9TZfmR0aH+MCK4YNEeChP/O/YaH2UNz39SENCcJ/RCEliKE1kU3Iqooib\nXuCgUjOoJ+Q1tNm7wtvPpzG1/MIZ1uSqwn+c/1l87nNcZcvhXL1GgHicoals\n55CLzxEIXqI3S+sRKuycxGbV5Z4FNylESCAmgdho8UqsRVmIF4K+CbB7ee1k\nlxJr0xuDfjHEqofsByrlSoN+Fu2efAnWml+lUNb0qeX0Yc1U3M3X9zWfIAtM\nFxhUFvFWrLrPWf/7YpKXB63P4KHZdKKUCuHhGU1HrPzX36y/UCUXrX+j1egp\nmudZrdEL3iIcBnSbuELSyWqM/VItGZckEKYAt34Y+uyPEcQc3RudBxle3An6\n6QrJ3axeefnq2r6MXcxPXp6Q4zvcH+/Vqu4SVvBFWINTxV5oZK02NQQPP5xj\nddPP\r\n=8pVD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-c5d580-kipl6x5z_1608012633015_0.01004951211624494","host":"s3://npm-registry-packages"}},"2.2.0-feature-9a5bde-kiplrou9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-9a5bde-kiplrou9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-9a5bde-kiplrou9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c7959aed3849f1ae06b1c8483fb2d40a9c49fcc7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-9a5bde-kiplrou9.tgz","fileCount":309,"integrity":"sha512-9Ap60309+YHy9isn5qiNI62RBeNvk5FRwr9N+Bmj5m1o46FZjYhPdSBncktQifkFn8pStofzTaVsMy8MuG95hA==","signatures":[{"sig":"MEUCID/jQ1WFf45tL8GRS8Gd+vmvd573d8jMOIVsMRA/RQ7WAiEAgeksq453N0kWXD9xONRhXmy+tBJK2JJEpiA8y/bXw9A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2FcjCRA9TVsSAnZWagAA1kgP/1E+3wQxUBz+6Ybrbz0x\nY4/CBWV6ahZtViRUvQNHQaOwiGduEJ2b9yVkd7jSoMQCiVfv48UxI8c/LdvM\nMPCXjxJY/79n7p6ClOSbwESYTtpZ+HufAMc2HL+k+j1yqH/35/mXcMzdRthT\nAkqr8DC2wBjg0K29BS2hr88bayrKJF8CvTEBm9xfg7MEcLPr+kqsjRwCpHxZ\ntO4Cr616TfuSjAakTf1QsWHzM2vFWAm9tr2PAk5NxjuRTR90IbQ6Xzk434rp\nX8grdd3DCUccfVEYUWGrm2wqePRIcC/iupa6rWmP0+8MN//k1wtk/VYoJQi6\nI8h2oOvBWuA0g0n9pj/XFBg54xZXxQQSo4Kz/2aaqZoaKmWiwgJ5ItWjsN1S\nOiGQr3NBAYjShULn+HKUhg8UzD7dEcD1N7vTa/iEQlSpy5FIWpWcpfk2mzto\nspNpdNIfe4Reif9bJlPnVz6n9g3Nsz64jWLzIfHUhwvb8Ibrl8FWImw24WEk\nVODcGbl9Em/gyT0fEipDxrhMwFkky/bfrCCCY0nvOIM2s6Zq0P2opojkPZ6U\nL4C0PbFJNNEcIkdlgX6tvIiZgQrdXLVs4aysFRi6ou/LBU5TAG4tw2x+jKxS\n6h4YAsnlXRbDS3/7v/y8sNIvhTGNxjzehiBqCAbCgt/5TnqZpLJ7GT204oIR\n7Pfy\r\n=wS8d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-9a5bde-kiplrou9_1608013603347_0.7904243023571418","host":"s3://npm-registry-packages"}},"2.2.0-feature-660800-kipqzkde":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-660800-kipqzkde","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-660800-kipqzkde","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9cf23942ee02da9ce7ecbe5fc5f1f690fd9694b2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-660800-kipqzkde.tgz","fileCount":309,"integrity":"sha512-G1T+zStDjawQ8N1bSHrWwTYQpNx9YvJwJgd6hjuACg8fhooULdGDkPL/R3GHbSnSk6mI3K1V8sXY0AMHhmG12g==","signatures":[{"sig":"MEYCIQCnflr1yINRlIYpzjw6Rxt/a8l8qT59YIbpM7odMZdcTQIhAJBvKqzKhHkJfcz3vRnRCdODzEqfQCPtOoZlJd/Qm8XK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2HleCRA9TVsSAnZWagAAU2wP/AqJZ03Zu/aLJpaIEL5+\nmWkAJfwMKt8gBugnj/up08UV9WV3rhHxQvrmXgPDod0fGn5CTQPJ+eLhqNz7\n8xTB/XwJDB+YdDKdU8ya3UtbTZ1EY+KEso9uF/frTY5FAzX/nwsKXU3B8rJd\n9XsMWbR3MTEovZCJR/G75I9yVouIUNEYZ0XIrwLQmHwmoZx04rWLXZY5qut2\nwuA9pYUNXoAwZzP+KQ52ylv4f/plh4ydJNUpSjG0RMdj7yXwBbZc+egCWwB4\nORQlh+xy1kiSbyjo37DzhlhUNFAYeTLB0S8m7ZvYg8a7dO4Dr3ODwO9El7/9\ngEbKxOIekqe8RaSHqIqQYVqwekS+q+dAxzvXUjBho0gqq9WXMYbAuRKaXtnJ\nBpEV/dy77dFmPbYlA/hBHagDE2xLVVXIodBum6ZVxkO7ZBC8iN029xK1CpjS\njePJM/97QMWvkhgCIdYdNw/FzjkiO+X5aqBwciyKuwMYWM4uFtrygBA3iYU7\nMPR9k/Vz9BeO9cuszv4sxLN2tbO8ttS8Xr4FY82/mAEv37kfiLW6p8OsoxEy\n5werWC8HKsR2SNia9ERT+VSj+szhquT1EteQogpvheBMEz0Hxe60LL7d1x63\nnRcsQ+GDfsfaT3HL9prOnbsTbdrdBiBLRrKtSjDz9MDEkydQqBAu2sKr0F3I\nAWil\r\n=AIne\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-660800-kipqzkde_1608022365698_0.4196264650905157","host":"s3://npm-registry-packages"}},"2.2.0-alpha.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a7565b4cfd1938de248db2b0a89af02038250c4d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.5.tgz","fileCount":309,"integrity":"sha512-mvTxQAoIRID9KjEh//TbIon3dHEq52Ptj2j7uTS/R9LM7Ko379Hv1K+gr1BMRFH5WOUDbTK77SpbMQTRvPeVgg==","signatures":[{"sig":"MEYCIQCL1NJ+xReg/LREG/bRRS849NUQs53GEwbK/nkp2UoKsgIhANANg3cwwZxQdd3Ywdjme/+N+eGpGNzC4TrJFIAD6Hw/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2HsHCRA9TVsSAnZWagAAtEoP/3k5VNx41pkY5dAtAvAJ\n7MfuzFJ6CplDLtoKiQRfnqUw9Y8+GtreA9UVlkaLgvhwnPXP/2x7XFguTrgn\n0vjQHxwKzEpRIfNiApBHhaob935evAEI/ELXaDl6cBR36z6Q5/yfC1DhyCMb\nMXUGod5nfDRe+R4io5JNbi5FoFDTEuCjt+Rn9olVrT9BfehU+tJDFn23aVrf\nzsyYueBlKLHRUGyr54Cfz31fM6COQTU26BbTGepd+QtI47RdExmYdSq4AJll\n+H0oBFDNgA0SEUTbBzfQG8EAxPuHRASRGChdMnywhz1FQWlxwcqYRzHWB7PX\nwvZfdl6gYIY9DfAkuOQODxRdoTAi/n3CpQ4QoPh6qkMcOj+pgErvvBQ9syiv\nq9o0BBr5gi+VvWkSmXCXh7TH4fy2XZkm4t8jerRUNtAaSyI49Co6g2cfwD7C\nnZlkCLHua/2pIwXnF4K+3ixHyQ2oOvqbc8QDL3uiGy8Xunyl5kVQflH0hgR9\n25yQ7Fx+6xLBGvCqGPDJAXbUMMgbM4fa+yuuM72l6MEEVOBANW7bmT3PxpVa\nRkYu8xVPnsGDCABbzToWDEVo1Jk9n3MXQ6V/3vmVZvwZ1O6RucXTaljUHkbe\niYiMvIsXZzhzgTgOFeRYmwgkBTebD+SBj9BtUjPyA3hu1ajePmx4tRjKwgWr\nGca2\r\n=FVQ8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.5_1608022791196_0.5397753529483766","host":"s3://npm-registry-packages"}},"2.2.0-alpha.6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6862f743e441d0ac7655a7ddc6c19328cedf0ee5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.6.tgz","fileCount":309,"integrity":"sha512-C6SUoOtIgCeldzo6AEHV17TQEg97N80mBbrI0PyEwM7LW21vAp+aYHKZUnXbcu1EPFDpjJPGAsjvw5wkVvIeYw==","signatures":[{"sig":"MEYCIQCIyx7JkRV6mNx2U3RZ6FwGtmzwPfGlJLR5wKbMwgeLaQIhAP/W7+jqPGzuFBLIa8u1OQm9uc7En10usbXjIVnr35DS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2IURCRA9TVsSAnZWagAAaH4QAIneJSvD+wNJjpg+6BaA\nIf4zYC2OgbgOtOlP2b+bP5qOijJCJ5Vnh75NQfTzY2Oe2ORusfC3quWB3hsD\nEfaQSiL0vXccVgFONftQ/0ZnXCh8NyaJe6tfMKZlFNI9f/VDi8oyY/vc9122\nrqHMgx3vCMvJDUXJ9w/k6/gM7fu77jlDsJHi71seFsQ2D7ywYfxz4RQ68TYd\nSn5497YE3fK/xbfeUxEMvKV4DrBM0X/JWnNw5XPuhdA14LnwI5H22VvWdDiL\nDir+56QCM4uWeCnVJd3Ik29kipnPyIWBIuDsXF5Lo6/BqoZ8E/ou55XvM0Vw\nX/Fh8lIjU+MPwqjP0jENgxBxThkMnQxUV4nnQdr2wZWNlK7+rRL2LmNxxkl4\nl5Tb6QX2lPeQTs8Fd8O/mXoIEcYVq1ZTiYpChCDSlrJAWphUvhAZEWUUqIlN\naYytOzU5+6Vi1JdESGRkBNurnUteZio+SzPuDY5AM6BNfbXt6RCZ3XLHw1P2\ng8dZtVkm2QdZVLafgT5iIHTvFpMSlgwMWMaQy3bGrlg5PLpKIYShFJuGmkIv\nuK3Mq893ZNpGDGMY7POH3H20srgV6jb6ybkrc2HuL8tzfHiMHyr6Cwh46Mcs\nWvxCgQymirx5tY7yX6avWo4M25Y6xfxgKsXSMe3+UWtM13sAywaO+7t6Cw9P\nOvVW\r\n=a/AP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.6_1608025361385_0.5998119639866097","host":"s3://npm-registry-packages"}},"2.2.0-feature-e8f32b-kiq40c6g":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-e8f32b-kiq40c6g","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-e8f32b-kiq40c6g","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dd0f05eb04db9c716ca6caccbafe01c4d7aa05b5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-e8f32b-kiq40c6g.tgz","fileCount":309,"integrity":"sha512-ENxCcWBpBQ0WsPc51FBW1emfRee8B8iMKeuUtOkSWHeCOlZD++gjAt3cfwJ4G9I5OZjVNjiG3wB25e0HvnckNQ==","signatures":[{"sig":"MEUCIQCLq7z+b9zqlclv35BzKn/OP0/S+FsyFQPI5bl0j/3QXgIgfPYlWWuJSumLaC+NfaP6ZBSiJ0K2IUpKT0z35JqvlV4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2M7UCRA9TVsSAnZWagAA5V0P+gNOo5KPU3WeZ/H2jj+q\npeCrPKWcW2mJbcS+A4DIydXzSpWiYiGKnjxdPj2cg4SFBtinJ4XITWrO+8OZ\nOFKiFL0SZhNUXF+kDVIqaFyOxC60HpweEFsLqDY7StKdNVkxGI2W64k5tZaf\nRJ9nE7wuDMBhDCUwY9kJtpiuk1kHVH5sVVLX2sHpnBnT4dKvJcG1kxHkYIKj\nQx81ON7x315eEPS9sxzYClW5X7QagLhWnvInlqLF1AIb8vB+HUOTcKxeBdrM\ngbm+NdQf1LuzohZbMTSB/sl4s9jYicvUcEAmPqPm0GgUmqU7MZyTM+pqRQX1\nTIDm/jZt2nM5pFZp3+1lybMq3PhXwQA0UCYXD3k/Rm8csS0vqU+j5PLvibVR\npyqexChJsU4/TN8FzTEzQjM5eYmACykv0GIZn0XRe/WcAPazP1yiJW8Nn8Hk\nCzbtm7HXyGIS3UVXPAy35/iVZ9iDYDyQfh2Uyg+arTD3HqaDc05QmONX3SE6\nbA++6aJzcxvzadYH0GxGsRHKhVEEIpTSkAqRhMb8VJ4ch0u0V+qnSF/tBq9E\n9j4NSfYkL3zABPtJGMt3j7SaN/1G3YWE5B4JU+0Pyp6skDtl63O7r8FQHMzA\nfWGSvkwf6VlgjuqYAw3hg+2xKHPKNdtRqc+CRQraXvBqxiUzLK3X0q3wyMsa\nT0T1\r\n=12og\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-e8f32b-kiq40c6g_1608044243894_0.48064828643024593","host":"s3://npm-registry-packages"}},"2.2.0-feature-55f18f-kir60wfs":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-55f18f-kir60wfs","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-55f18f-kir60wfs","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"df13212680764ef74b0e1fb484db4014bc02862d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-55f18f-kir60wfs.tgz","fileCount":309,"integrity":"sha512-teVYrz9hXUbOnmqRfNj5A8pZaOfA/s4HzqSGfFkok3hhe8HTM0VZDcZmMMAa7dgm+G+I8GKboqrr490wAG+yZg==","signatures":[{"sig":"MEQCIGQnaHs7wiiOngnm7Agi3/e12y6XFQU7fSoi70WyMyTpAiAb5VXkCVK69y6lggetTcWzFnknuJo6OX24iXLVlTuWPg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2chBCRA9TVsSAnZWagAAbYkP/R5vXUma7zys6q7DGhbD\nvNhgyP47bHgMqR9ruKqLX9s7hwTEq0UigvlbXSIhHyY7tayLwS/rZ6fVDgFs\nchqA1JX49yNa8mmbNYa8cDfA9o/FcFTHLyOMfChWl0iEfs4tPlfKdicCzMni\nbAtZw91xaLIhROND7ApcDCJVCexpyQVa+G/XnvK7EkSrY2A3IcqehpkDjsPh\noH2VUz5QsBml8PT1wTKRNsfo8FfK1NneWHY7aHGay8UCloTTX2sCJpRHTv/H\nMAc6ry4JNaQRzIXuhoTVdrZr3K+PWqqYr/UY2mNs58mhIim/N7r/pZYj/jSb\nJRIlpgnM2/psRVBLDKDO8Yy/6PN37JE+9azJdL363JTcJe6VMTIekeV4amBL\nbJKv+wUE710RIMTw1p9Cpa+K2lX8NgWOi/ty3EMqEcDUOKmqKo0Ew3PS4mbk\ns4Gc4xBJDP9OvRPR2wAiORYUUAOkrVCYSDOKr/LUTBNgX0de+5IRpflhLaNE\nGYQM9sY9piWbrBBcYiB6++U0caD+b1vyHr77OXgXkIgVThBofuJevMGDHtzh\nEuMXF0wXHxf+WIwlJvwocdid9cFuvyKSopQhDf5BXLyjpkp9hdWUo1mPALN5\nBbB/uGIaHQ3qa1DmlncOcdg7nbMmSUqfb6srCVtp0WxkIIe/ALe3Tmtl7Wcr\nC4Ld\r\n=vgq3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-55f18f-kir60wfs_1608108096757_0.27944741217257474","host":"s3://npm-registry-packages"}},"2.2.0-feature-8e0b5f-kir6w6kr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-8e0b5f-kir6w6kr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-8e0b5f-kir6w6kr","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"370844c866a61563a3b912deab56e7ccda9f1dbd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-8e0b5f-kir6w6kr.tgz","fileCount":309,"integrity":"sha512-6iGFyT/rjYsZ21rCrnwGF+RuL+8VoaR7DOhsSumsyeO0YZrj+yhmhpAEOsgoEhx4l3hb6TmR7ccMngNtHPEmVA==","signatures":[{"sig":"MEYCIQDP/ej+54uir8UZdZhfIDgQTvj3i85AElKFUYri4X7ijwIhALDdY/z0E5iVqbIK8fEbEi1g2ejssVouxEE5KL+vsFni","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2c3uCRA9TVsSAnZWagAAACYQAJ2cfEadIfsVTMQrPcYx\nfgrWhOWN8fRSPb4jGQruR1oD7ek2ChwbvYjvyINe9LSiu/RAkN0U3vwW9UrK\nl4qD01qX/WydUDy8uT0RjUBLzRY3FcLfvo3EnT5LDApeqoDdil/6c5U05Fot\nvLqTF/tVO4Q4N3HJzaWVTExmu5HnsGH9HU7LMUN1YAd8JF5JwIsoKNpSa0xn\naoeM/h3DHk3yfar4iN5xMs5OiHygh31e2ULKc+ReYZiFO/fZnoCnT/AnrYz2\nxI1VUM/KJmnADQcFIFnqOTKMUx2Rl3inOZweBLSgPJg6PIsXaK9h7+399iau\nVDW6JrbAdyaD8XFe0/LkQoP2FQQ8zraNTD+ao8RlcqazLIFw5PjeUPVgrQfb\nZUjdfFb1oaAyEkttbI/g6DlY+5LtZD1B9JoTWQ2YcF267dP+tav0o2r3XGS9\nSHOmYUJbSB8krAfNuY2CiUtIjiT4Nn73J8RvUCueAjdBM/U3mhH+rffIw9KA\nOjU4PyBhffHFfqkCMUHb+mTeiqG2y66R2VtXQso7Oyu9cxGA5jdO/QPyRbtt\nObih9GHfVk8bLBWN0Iyw6T6RSpn7uUv1ixrmsGvemE21XdQCF6KrYXUglHrI\nPInEs/7s0V51PPxK2HeTk/+KQamb9glES5jLlE4MkDs0Wo75uMjSDiqbtwNB\nEAq9\r\n=32Ra\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-8e0b5f-kir6w6kr_1608109549882_0.7824067417670566","host":"s3://npm-registry-packages"}},"2.2.0-feature-1d823d-kir7e3xc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-1d823d-kir7e3xc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-1d823d-kir7e3xc","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c83a200f1789a21356966fb0d88b55b4a3cd1afe","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-1d823d-kir7e3xc.tgz","fileCount":309,"integrity":"sha512-7m1/9dnPxt6PytY3Y7cp4jQPPfDMXTcrEJQIDY4gP/K/m9B0wtcOLesNKSsG1XxAJkkICyMMAbKI+gwXteHuig==","signatures":[{"sig":"MEYCIQD1e8JXNfWilb1hzGIzn6CzhnBAqSw9iO464KDOc3i8KAIhAIbgorXMI194nrehdntIV62jaHY6Hk5Y++vgUyPfhkLw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2dE0CRA9TVsSAnZWagAANYcP/RM7FLaRbL+cghyXNm4z\nq/8mHjxajggjBVoCiWhA0eIA0XI1SC4W+GdkhaI2OWXZ4yRsJjlZSVa4Lw5g\nRBOtG67VlxXi0uJMxEp9JNo6znQ18t78qIB0B7k7+l/QPPOQT/kJe/LK6QMK\n1vMtzXCfsvr3gW5Zu5b3pWcpVFCaLxNCJs/ZgdBCt1OYihmm1Mgc6CZNwBmi\noNlkj3nW7bU4HHicY688chNNAcSUvpYsKuGl6FFbod1+rVgnIJauJ82w2JwZ\nRVSf6zzyDjLIqaQwuxmKVP2FMXEVPEXupkek1bElt67Ioziz1hWG6ceX4M/v\nLkgi8Tsv1/0KhH+qPUVoa7qa96y2xMUXUbhxySk3JTSoVdpeyleZ0u1svoAf\n58aglzhHQ5GcfoKo2M8V11VIJOWoRe6Y48S1OphuvmxC63BfoCDdAI3d85+2\nP3xxWf/iUefMSwg4VTZGye0mFbPrRuqRcA06QK9E4xHy6XlpWEM3XgYIHDZw\nGAwU9i8BI8o6K/S4aq2vxV1vkcAUligtsicxDXtUdN4VJ/kP8hLK5M8dzYyx\nxs9KUPRYoDwzcqU7jwHSJLy/GzOd493U0spW3R6Znznj/rwFfLh99CwBD8Yh\nUvnbG/FS59W19kGuGl1ZcWGxosubJ97zMJr1JvZ4LewH3FuvlCrE48OkgbeC\n72nX\r\n=tUkR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"feature~support_pre_and_post_scripts"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-1d823d-kir7e3xc_1608110388298_0.33186445672343057","host":"s3://npm-registry-packages"}},"2.2.0-alpha.7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.7","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"59ae889123ce0ac6c780aa7523c2649daa0dee36","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.7.tgz","fileCount":309,"integrity":"sha512-omxjQce5vA5rm3y3pWHxSD1iD9iNpoowxK2+Uvyh/gLCf5UM8XqjbOkpgyePcUkUdJjW8+z9mOTPl2mToWehRA==","signatures":[{"sig":"MEYCIQCg7ahz+Hm6QOFP4ZV8kbf2CR1ae7gDDJyXZBRNRT9M7gIhAMrlw0jUkLE3wUVsanJT7KIPQtU7Y4AABSuf0rJNq+8z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1517592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2e0ICRA9TVsSAnZWagAAKwAQAIuJV+D0XYfkjROgcHHi\nYMGvpQI9DOvT0LeEWrAB8/TIzlh/ugYODUinVAQN78OMKyMKKQ4Q0rKKDr+W\npVloypEw0o0pP22SeBBBDJpl54iT5MfJAcN+H2Rc4ZDKFdEA5bMq8BdPJiNJ\nsQjrMAkugoB/guWtAnmjFtRs4ePF6hKJNuSJN5te2jCbQhM+oPyi3jxJwBHy\ne8Yb40JtGyjkuZCue48JgaWnhKHDxIbrxm3yH39ZImmYVIP2XsspDwEXM/xo\nnQL0a0r8pVaJpFd+uC+0XNCi/Ic0VfuPSdVgxtxykgKMqOFqcEq7jrXUDyCj\nHaEP5nIrG+QD9Z34Eh6s3HEyF8ga1iW8+/75Vs8/1XxnAJepgV7Y4KUxRCjA\nNApEi6GqfKXOZ4WlQc68VCetxGgnkfYUlP555s4sgmuCWGo5OMHjqYGPpifG\nt1l8UxvgYHYToNm9w0X0DWb7LyTFjZ2pcBYUOY5W1DUa9RWMSITmQ24yMpUm\ncWKakhoyHY2xnLK6vrwstqqjVbahj5Z8F0N4B/IBYEGhZRWIOLb7mdRHgHN3\nD6wLuXPMZBkWHcIUmVffOcKJ0qcCFMu4T53FieXFVvYUQyniuHaLXQ1lGl54\nTN6PItpnXp51z6GkP/OQqx5DGHnWVE6tr1hkwAXZSbT0XoZ4pIVvjbWOdww2\nqQer\r\n=JkhZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.7_1608117511653_0.7509707224014606","host":"s3://npm-registry-packages"}},"2.2.0-feature-eee963-kiri7chr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-eee963-kiri7chr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-eee963-kiri7chr","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e9ba934868e651152c816cac177df4c0db6c8dc4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-eee963-kiri7chr.tgz","fileCount":309,"integrity":"sha512-A9P0+CCXx1ERmfjBNLzfz1wTMSUzlCK1QUzY5M+v+db8Tmzfph+M+iYmAKSofawaznw29/j+eE+wC0SD/d12ag==","signatures":[{"sig":"MEUCIQCx9/c4hXGZT+CVXPGEtsXeV7UiPLwBOxSvFQC6nRZR3wIgJWoGEdS4Ppe0i6KaJK0jnKAKH5V9x1OoH2VN0NOldq8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2hgkCRA9TVsSAnZWagAA2HAP/iVPTKK08rl0cZTUbRSw\nNuEKdD9tsIw5mpdjCIKUaM5gjo8QtvOUXnC8fqk0hcCqfvfHoErBtdlqjw9n\n37XNlh8gF8uv/VHD4XezFrGGJed9rEC8vNukeDT9Z3TtIG+Wg5VDvtiIST8s\nlQKoMll07QNEXJGPvKc4qr1B88GSVoCd+wDMqiYQGQ8jYMUiFxwAZjsh74Nx\nXl7XvJRSn+dMd/7i2Rai2YXtSpyYX72TFnAeDepBkiQiherWeFipJruY1zt+\nR4uMhpPRXLQyCvtvOygV3pUWqdwcgqO/mBBl0dKiIrkU48NUBvkO/CPfo54G\nB2aj0mQtT0IJOFzig/nYOAwJHhJtIUtvxVRhIlLY4Hv1spFMl9JtSOPvZj59\nWCkWO2+TjCQdWJqyBLZxr72TVb00oCcK+rNTqigbpySkqNuOJBu6hISRPqdl\nUW20PSdQEp3PmZqqbg98txm61bZkLTmkh+9W6giotBmKcvM0JdyrHtJ3VSnC\nsTs5k/A4VSFpMxw/21zibwyzTgrFuz4BGRaQr0rxDkWIu4sSbzW3kotgMHlZ\nTNBMHlFCyPApLoMLYSjZMr6/Tr4dHgU9Any6J1WT37JfSVlLbHtpIvbr4VyC\niop0ayytDdGCx8kzUzXrfNCOHEiBZGmGArTtOhigRiol5ymaJi8PE4x1FieT\nJvoQ\r\n=56k3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-eee963-kiri7chr_1608128548120_0.9279427901565906","host":"s3://npm-registry-packages"}},"2.2.0-feature-b6077f-kirk5mkr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-b6077f-kirk5mkr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-b6077f-kirk5mkr","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"869e9b0ae9b9ee0a79137a5a91b2e484cb74bad8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-b6077f-kirk5mkr.tgz","fileCount":309,"integrity":"sha512-GK4uHgTeUqO/zUuqlV+jMW5282GEpS2uxwVJd00hg2vtYh4rBoGhEndDUZu26bbusOs9k2+fqZ4frIQEwj91vA==","signatures":[{"sig":"MEQCIHNGqdYf5kqYsq1TutKILZmhCTeJvZRIuY8/rXy8aobUAiAk/5nQM1ZaYKPnlO4mP9CD8n9eLaTQnAUUs0zc3PMwSw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1518561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2iT8CRA9TVsSAnZWagAA96cP/iZ421jW2PzzsLy7HWqy\nAjGmgiBJrxZh8oOBIroDZzVMSkssG/CzFB52/mZKmTD/ovLF7OwHQYwyhXm4\n2uZxkM2kq14NASEJnw6xjjxIEXghdE3IE6gvTXHbBtAF0vfISA3ooya8zeia\n2t83zC/Q1q1m5MO31kmrqg34N86WgdhEDGcbS5cF0EgQn82xaNttoz5Nrqqx\nwOIKoVDxCTvpzO+gEASRAIjqKbtW337ZPZF1EUw0dc7bHjiC28mj/JL5sL5Z\nCSYKO7TbuoBl5pbXr2a1g4eleYCD3/W4zsCHyo/pWvBWG16Jntk+Y1GKnRzr\nE0KnyfMrcsuEMXqvMlRoivBEdnNlSE1EDsSuqYvieOof5r/1dMUkAeOX+tL0\nZM82tMbn1X6COMC0EYR43l+0HMlr80HIiR0z9Jy2xMPZD97Z3CvkA5BFHz2W\nkVkpAyC3twt25R4vOeJQ88t1FsiPVHvxQLXEGUeG3XQGqLTgT37L7zKq6wB9\npT0L1lSZrL0wu5p9pr7a9h0Q1Wg2ravOqGCdNDJWvSBhslWUOditUf2pXciv\nIM0o9jzoZAbCt4c6ACmYfWl3r+/bW8zFgJhUuGJRUFzMvTy3xyE++Umvk/6z\nVqdd8CoIe24s5OidishpiTmRBdZA+Qcsdrp8usEsYSUCuAR0NdNXcfSmDF53\n9yMC\r\n=6yLD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-b6077f-kirk5mkr_1608131836436_0.5043460559957602","host":"s3://npm-registry-packages"}},"2.2.0-feature-33f873-kirspcrr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-33f873-kirspcrr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-33f873-kirspcrr","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5de0cbde0ff40bc79f268cb5e012dc93a7d06b33","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-33f873-kirspcrr.tgz","fileCount":309,"integrity":"sha512-3fycB/2Ld7nv2aavcGMlSUs3IIqUJcuCH9LSBaembQhR8rZf7rl7nwQgQAxPqrLJMleI6A/s6VR/7L/S68WJOA==","signatures":[{"sig":"MEUCIQCnpWc5BO04V27OkpGKhJLyD6MgzPcT87yli5ljsYTAJgIgbSV3WQKpbfFOxUv4snFI/uM12msh+oH/D3Fp4hU8L64=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2l0PCRA9TVsSAnZWagAAxN4QAJffbKLtSKgbib49wiIy\nH7Ko1NCzX3rww82j7mWeQoht5gU6TQg1UFaXvnrak0pFpSeCtTwFRSF6Ofdc\nYb4ubuPjdepMUe5NumCxar4fKTSkJpmbS4bWv9klZzuOt7kA+i7cDOI9C71o\nxZu7oOwmU4BYk3G45z9fqy9NDpTgiLTWVpyqARv7zTQ4I5gihJMa95sAfYU2\nZujNFmV4TWHhX4awtxg8R6jyqPkf8BdPU47FDrMKBfsZMepATC9QKSqmyi4V\nnjQqSahMFsaVqKDEp1dB1smKPvN6jhX/7vMFO7xdom44gIhFJ83hAzsG6qB8\nGmjcsdKAQt+qYqmtdU3Prg0R6JGr8u1M5yDQl6Hf7anwxB6hhcPTw1AoM7Vy\nRbJtWIFngPif66Etk3VMtQp8SlW1ZwBIt6RX1uQ6tV1JL3QRqx0930Yt6kVB\nhhZQ6Ekf0C/lK/VQo9NAe28Sx0/g2eMKtcChTXghHAEFWW3jXqqfOOq4Aeuo\nowjSXPsyo7ACx8qak4+0AFv0ofWh9Vw9Q6J19dZM6S8WPy+poDlOrIE5qSW5\n9LwvuPkh3YLm2bTXRAwpVpdqicNxynIlUwAp5orLjai4FBHMo2pJCGDfsmgP\nxRz5p7DmqWoiLrHcF5YD2poLOwdqU2WIp31zdre+ds4kGEJFKqZxW/7HypLK\nIQHX\r\n=d6W/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-33f873-kirspcrr_1608146190973_0.8639356100837017","host":"s3://npm-registry-packages"}},"2.2.0-alpha.8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.8","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d32c1f091b4df5edc09633876dfe93e5e56ae564","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.8.tgz","fileCount":309,"integrity":"sha512-vYVwjvfF7gd+qzawXTf/90H7+JnO0tRN2NEyFxjI7I5apFsG1q+FOFwO5UfjbTZXEv8cKdsK2+2aS3B9AnLLWQ==","signatures":[{"sig":"MEUCIBc3ZwztU1NEhVus3JCTUEYTlarPkxlmlJm2xW7/9eDVAiEAiUByOdv+OId4YLF24ajJZFYoXOGxHYS7NAkFAR9zc7Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2mXqCRA9TVsSAnZWagAAVUAP/R4Ro/Oka6mSy5Tbm4EY\nbHGQ7KOw0KXkAbJFN25Vnmiq2726z22irFORp6FS/DiRqX2SemO44kAYZWLs\nBWvcbo4/XkxmTVpZf6lqjcj7HnLt0UCWtfjHLHp/QiI6qoLBXZwyQuwL7lhV\n1irLMNFkIachysmh7AlPjJlBRtY3+3bJGGx9gyhlPu0JE8Uj0hkqcgKgjaN+\nNytT8rhrPsdi1ndv62OkJ0veIj1J/1XbKt76PY2+QoWfpQW6GgIDc7u12Au3\nNA6fTP365Z5dQOtEcG9ELyTpyN90TbE5mUVLiVY540yyjE2ZcdEsM1AFNNw5\n/IAQVBAt04GBVhtzTgQSLoU6zhL192YtagdLuF1h8PyOWRGgn4vE5i1G6bSN\n/tKAUigft9kUl4oJfC/5ZwD4IhXkcXeIEj2CvwP8BpTBLyfx3ksebWEjzZEL\nKhGfvpgFp+cCm/wEEGCbh/TOTHjWC61y9ej0lbfIZZuEEmOblJBL7ph6RMT2\nMrBJcDLcsB4MRc0UfDNk5nfbFG+OFvAG3QoK8iVrEa9nD4W14TOeodKEd+Ls\nLYNBFDAoyj3wbabH6VVYuNUa4yQuY08/RCIg2xeVrDl369xCPgbN+6Bn057N\n8MjhqWLtLziuvRHlTUsCMCALqPQ4ykcLVLA/fKXFcy8J3h7f92V6a1PHR10O\ni/n3\r\n=6BT/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.8_1608148457527_0.046093753010076455","host":"s3://npm-registry-packages"}},"2.2.0-alpha.9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"94b03670dafeb01b3875b98e8d07868a0a169325","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.9.tgz","fileCount":309,"integrity":"sha512-yUulJ20XNchiQ2TeOsG22dpgROGcO3Bs3WfrwNh2jLLokIaQ1nrFmplqOek4JoW/Fwljk/QkpHpl8y5uL9bM8Q==","signatures":[{"sig":"MEYCIQC69ZXDXo+D9sIFTJZ9vB+A9Q1tli1gER8vdHuPgjU0DAIhAJvP1oD3NVpkg/ViidtbdbZpGMwTyNvNiAVCC+YlDj/O","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2xqcCRA9TVsSAnZWagAAOzcQAI3qkW2fnG9E4L17mo46\nLt8I+nNHcg2ROR6hXy+b60v3kdhiHNrIWEI868n9fkxmWW/C4e35lznJpllI\n478urOafwvbttrFzjyQO9Dy551FR3WH0maW+7BnXbmwF9X8blyhssE6GJi92\ndP6eyjdW2FpvquZM6cORTMqizh0UHPGs2AS+BpzoHXCnguzDVN7EXJybCA3w\nThnlKJOL0aafIMKVKObMMWIMJfiKCccDtj7a3m5f/oIg6Op4zY1eHnXe/b0M\n+AnjoCQKLOZv5ZNyjm3ssctikq2tq+pF3Mv+6dNjeDu4Zalw3OOxcIxZ2+P1\nANxZKWGmNhuuTrOTww94CzYCkqn6iqooEekh5mOT1HGiobvnvheUTmr0+5fi\nmjwSVT2s138YCHxtZqQaeGmiEKjaBTvPuHrhaS7kVlB6RT705qH5SPPL8nBD\nuA1nr9nNZ2adPNqPqKEKCx9QAedNXura28SsRcCc6f52HyaIfqsCWjg2FoCL\ngd/A1EzKsGhSc1LX7Yi2oy6y5ZGm/aPibCSA+kzt/dEzIaE8gnt1uZ5iOLXY\nXTezFAaqLQ1LLYRNskvwInY0Hw0wMVMXkSvZeSk697ghCRBh+K1BPCmoZAnk\n6M9XPqhd8kn/nR/5gYcZ+ga5/AmCmqWCfqQSFRpgiVz9GAE+PwS1xcrHxr3E\nwNQY\r\n=73LK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.9_1608194715798_0.8868975122906126","host":"s3://npm-registry-packages"}},"2.1.0-hotfix-a9f5c0-kisos47x":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.0-hotfix-a9f5c0-kisos47x","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.0-hotfix-a9f5c0-kisos47x","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c2fd4d1b5f38d0a2a29b95b8d8d153b80b619230","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.0-hotfix-a9f5c0-kisos47x.tgz","fileCount":309,"integrity":"sha512-miGG9zejmEwFrfTMbsrUuXsxgE5YWicX6vNfwygvTSwr/NyirU6oU8+bGmwuw0VU3wE0RfJPghwF2dtmuHqydA==","signatures":[{"sig":"MEUCIQCaNA3mP7o3ESKpF3aUt+gi6uvnwUXOsQgbN0WTy0Mb2wIgRTLT7s0QwW83+RgcpBddPX1RAHvgsa3CnfsTpIjb2Xw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2y+CCRA9TVsSAnZWagAA88QP/j/WG1A/DMhksu0y/6h/\nbqK4pCVLbSxwfS/GcNb1/wq0yPM/hJ5AOlUNsKB712KIik/coVdeKCejsoI5\nCysEi8NXGBFvYmRvCYpDLcrSjRxeAYSezt/sGS6DdTozHOH2s+09Vn7FcbFf\nm7tMBp6ZJ5pRKxIdEJIUw7oFUMQbqoB8KkigCKNqXLY8LfAjlETUuVO6lTj+\niz3GA962/hnQI9Y2L1MxZZvujzLkwYnpTbrFnDaCTBApukDTD/1puunIR6wa\n6sNp+u6mvfbw8R3L0jCmNrfd+pCxt7coEsGM6Yy1IMFVlkJAbXqZmlHCLzya\n1AjAA2SCqNhX9jo6hcijLKxZs3rnkMgoJ1afVlXg044V+n6ksqEI6C646wYd\no/5xT64wpCNs8iLhXKlLBZcswZqrVRXqEq8UQZGlvGA15NyQFhbXL1XPTU/w\nQCAYAAg68r6bSNNI7p8nnG4lbUOs1vQ6g3h/kzvjTgkUkTM6QoDrdHY8jfeZ\npH3fKnKR7ZAHnh/8fc/9nke2Yqp1uiNi/KAbmMFASdzRd1Tc7SHOTm9heSpP\neEeGmKCO7hlXQy8iyusjLlNkr3Mms0wh+C4sgKGl1efnmuudKOUfPiU7hYZc\n1DZ0GvPxRufHbBkrSH74EGDA9M1xq29E0Nv6Jih1N1IF4i7IPLG89rZwZ3Jy\nXFZc\r\n=RX4X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"hotfix~check_for_internal_token"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.0-hotfix-a9f5c0-kisos47x_1608200065994_0.7609115334315588","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1a9e86ffe1e29b57bbb1ae93b29ef822d73ce0c3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.1.tgz","fileCount":309,"integrity":"sha512-wXb1UMXZK4OMmRl2Wk+1HTIh1NR9RfHKlx6lK/jsamW+5fbYyU0vlVkrqqF7f3yTzKXE+KlPms0JmWofnIGh2w==","signatures":[{"sig":"MEUCIBqIE7kwnL891UKS852mxFJd5XT4Z8ppTv5exYULSUA3AiEAxNGpmUtFx6eeYDXk1na+/PsYMhQgS3vcRL5woud/siU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf21Q3CRA9TVsSAnZWagAAiqAP/3NwG8Et96WN4ohBKsY3\nClr58udnYykJLivD+rPJjmpYMSUJXHM7MvX5y/8mdNFKY+IlU/xQcvLHEXUW\n5BTKFZhN4rNgpl2WgaWVPNppGSgRdHmVf2fhTcf/DF814FZsjAaBvEar9A3B\nnlAAjD15y5amoh/XnWM1Icj76fj8CdBDKIyljz6BldGl/PjZUYnj73Kp7rew\neut3w0IApkYfy+zzl+Nozk+mWrbgVUpSjF+5PqGHTOmrKtxSXFEzsMp+cbZs\nwpgfL+2/z/Gy+YvBoej71m3Z03rDmyem4i6/RWVToCbIpfh5hAxL/rUP2Lih\n4HqvfIp3PHcX3rxqrf/Vj2QDFrvx/l/beMlyif4SirCJkrBo4XcoetUwxSlT\nm2bvMNxKdAnUTYU+BE+mUiBJ2HkaneOCSbE5/2LvaKohe6B0o7As26unlOUV\ntzWWQOjChWwd5xM2XCdL+kp4xpUBIGJygf/n9uo/IJlbzSVNlp9IkXdKXc4m\nW1S1hQY2ZhYj93s0oJxEFBXAElotkzSEx/h5Zx+Hk29nGZ8JEVv84WHMxMQH\n5FDTAvFl9Gl/nVCqiJqrNK5/fX4ZxuVSRQd9k1UlTe2w2RfoZWSobauC72Gw\nULOTanV7P1rD+kAx4QBbZGCVuxKAZjB/HP+wmxyGlf5g2gax2RGByAQTmt4j\n7zc7\r\n=wH9G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.1_1608209462953_0.5034456444580582","host":"s3://npm-registry-packages"}},"2.1.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.1.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.1.2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f253df614ddc37c578472b0048c0ada6006b5b69","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.1.2.tgz","fileCount":309,"integrity":"sha512-rAo/1DOoog8QbLteJa30fB7KfZ4fmDi8eCHdaquvnhmQ1C8/Pggo9cFWAu8viokLLHrZKnozKgr217tE7nlUEQ==","signatures":[{"sig":"MEYCIQDMWEl6UqJZ1/b5zTsCUzeTZdVgWmd7MkFZRynKRiK+twIhAJW6pJcYtApyXboV4bVMlml4/5xGkSp+BCeqLA9Zi+lX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1523799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf22KACRA9TVsSAnZWagAAHe8P/3cDYItPzCBA+6W4QpUP\n0LiH+zIl1ksIJjmzxD6xy6tqBCcvuNFmAmwf00iR9EH/acDUgX+7iUdb4aQZ\nAJuVnsdJTkyOrun3lUx0yuijjp/VeQJXFUX4V1sIp6Du/YpAxiTqlJJ4b7H2\n1o+MhmafAsrTOvYCJWzIS5AvdnbifmveHtjXr+1fzg2eHnRBtuNHLNLklI2l\nugEov9z6WGZgk2z7pWgYNPhX4Hlo0x11rqjKFb5vzAPjZaO0xg2sZSEs7C4F\n4QUr2d5EI7AQ0yfJlsfn+SyM6kliTqQoxPgVZLZ0rk1GvPUdOn7eaHVHqu/d\n/lKFtFCmNdePg6mny5tklDytzUy3LVxIVYxM8Dyh0b0OkngKtzSRVQYP1ndW\nFm2S3AIxl9kmedoo0VXioVP8i17n6RpeyuCVXd//8Yz/Vk1zNlOLPZI9t0gw\niMVHAqBPJEmmsZbLHSGfacKsJ2/pCg54AAQQ0+SOlkvSNI8fm3uRcer60jk4\n9ABCUyNjPGZfUTmgRQePlSCVZqfZh3bUP2DphSlTQFjOXchsOO02APje6HoD\n8yIr0mJm1sd0bWIJ9YxTYmVo3EGoKYHKtRBXVwjma4tw07UpBt6FqkGQMlWp\nEQpxmBW1izRlzXnIzc1z98fOwMwLy78MzvlXgjLTQlzdJL5FEXrkCDSFQHzm\nUHVj\r\n=6jcD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.1.2_1608213119539_0.13290018156759364","host":"s3://npm-registry-packages"}},"2.2.0-betafix-213ee6-kisx3ilf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-betafix-213ee6-kisx3ilf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-betafix-213ee6-kisx3ilf","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e287f3d2ad59f6b0f5a437eebf319b4ba3c50a1f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-betafix-213ee6-kisx3ilf.tgz","fileCount":309,"integrity":"sha512-x1/Vz+yInOgenkN4NBOK7TM34x91F14sMPNnBvqw+y+2UBVieJVeddfY1imbjAOd+q28VjOgZQeLwnjrjn8wnw==","signatures":[{"sig":"MEUCIQC551VfKm5+OXYnWBy6uAlsMyeMMMcmJn8vkeaVHqKrSQIgPlYmTE6/mPciLbJgJaLFTNduJWqmhQ62f2wsVFbr/5U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf22YMCRA9TVsSAnZWagAAkCAP/RfzObs+vIUqsUHziSDg\nWXnt876tX4c4gs1sOgm2ts1lbZC92Fig4kjE7XryHCDkV+yw9HkBsNSGzjae\nAiOsJypZbY78SkIt5zGE6mKT2ZCJ8VswHMFEC0fAtH0s/O0WrE/VOZlgpumY\nLmkmselktXcioUNLRmphg8AGx+eU2e8GwIPABawnSTENtrqkg5V7GWpVEKee\n+rMGxlOEbGHTBMSil2Vxqs5i8bqj0s5jHvDrIiKt1cEXs8yJ3rw9mdDG3Gsr\ncsyAWieTbOQp1i1JSyvUoVYhmMpU64cn6RMawzXQdbRTJuoqs7GWIDgVIEXo\ns5qxdAca+7Dr94bR5c0q37MGQ55aUpbTlQlVP95EJdPEi+Q8ZvDXRjGFc/rp\nra1VyqWVFMmCqW/7U/AKwdQ5eot4Pg6+AahAHqz1SrGlXpBxZiBdgrbOW6SP\nn97qvmV1mTOlaPGEcUadU7dG0a3ktngpLL7YsrqBoCpYJ/0ifReQFp/ZhMvj\n9RIAWFK5Bd1g3BBqogs7jR9tPdF7ZxBS59lAmHfVnPvp9wg7iZxzeAksk6fO\nYpEwAw7a+bgbxz2UPcRmtIErWGxXFofCWMeMh5HJeg8kz+njBaNLWETxnjXi\nfnCt8WBs9iMD9v8nce2+CnXZ1PjNAX7zfkDMVPBcOJQrgz4lfqKFrmXjsIQ9\ntxPI\r\n=BH28\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-betafix-213ee6-kisx3ilf_1608214028027_0.7051656679920406","host":"s3://npm-registry-packages"}},"2.2.0-alpha.10":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.10","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.10","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"716c8047c21a006b4e9900b156015545ece9f4c0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.10.tgz","fileCount":309,"integrity":"sha512-bEIO8Yzw74OFjoy9VBhffYP1NzDgM2/4Y5+rzeNmIFHPf3MWR21IgxqpuNdCCvjVA5YmLP6Xcp9Ixxk+PIYI/g==","signatures":[{"sig":"MEUCIGdnbvH203S14QJ019EIKtDZxS4NWuN9BA/XGAWHXq3IAiEAkqCG/+R1Umu000O251VbJ20PQ+2/hvhiS1egyQIxbWg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf22l/CRA9TVsSAnZWagAA0BAP/jmXidJOtyUPWeC2jghm\nEToHrg37uSp+63e4Jq6HOAb0Uincs/ZXRgIhMzgtju+D625PU0cTvA9mZGW4\nUZr3uNoWEis3h2a3PQKmnhDyG3+JYlFK3ptHl1/ZTMcts7Lg3dRWxTPbJxd8\ndvaAhugZ8Olzzeh4Wv7QVotPHF0spttKBrjEng6NeH5vA0G6HGVbj2ubVeXL\nIgYsbOezFAOj9qejgoP8Yxd/V6BxEpAcbePPofhBgOH4eRlkx1rfm1KQzZqZ\nSMHDiSj29b2AAQYk6uRHiUAD4ftSyUwzH6hhgvRtonAYtlrAoOM7RjAbUSmG\nbh9gZKYEG+0syjRAH2YgrWhRwAhIxXP9rj5DWKHuJDpcjS7n0fl1rY0fXq54\nJtgpngK9a36tR04maO1l8q+BAZmcRHi6wIV+NB/u8pekPyi2hDIYAemeoIKR\n0yHOD9vEOMJso6I5YCnZ4t9olawNZYcFlPCeGvMfd8aY6zuZftNJbEiyIfgX\n7nZaXNHiufPGtURj1dhBUnKnZXyW44bfBQVPGrs6Sm9khid0fKiYMhsfY4mF\nuGB+ZA0nGNKCyetmnf7aXBAbCrZCRbtnZ+ooAwKQAtigU8wDUVuDMxGXGkhZ\n+VN2UeXJd4PNUXfaVhcF3h8AoErMwTKqNJ5m3wPU5XDP0vgjxF2tCycKGDWf\n68Eg\r\n=1c+x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.10_1608214910908_0.5583858092506031","host":"s3://npm-registry-packages"}},"2.2.0-beta.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-beta.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-beta.2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"35b3a66f25bb194e9a3ef6fa69c3d5441978020c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-beta.2.tgz","fileCount":309,"integrity":"sha512-dEL1fObN3ivEE4WHx0fGcqoX41eHDQ02iU7feeJoSSIzmiu5LfP+2tVGuVmR0S3C9gM7gE6J4edgX17xO3bOzw==","signatures":[{"sig":"MEUCIQCAO/gj1MTjnpvMhdlqU9hvU/fjrgzjGEmPDw8cwnjlqQIgRyFXYYxTxuYYYVVDvqzBOYgLALP64Vo0xYnuOZ2ZEmk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf22wHCRA9TVsSAnZWagAAkyAQAJubcVJYgQZEGxHl9NJR\nUCfNeRP4kqQZ3AwdmZtfhspfgML9rWuzfyJ1U2fO5gFmx1+Bit24VFI5zeuQ\nWJYK3MrJTrJw4CylKRwjDDuLC5ovUIpSyXdCmS/YFa+H9SDV/7NiM+3ELTcD\nLiUG7NjmHmwWYFxrJcH02YRXMJfOd6nB5wtOC7v6Vir4VEFyVIrQGn/uD3zV\nXIqWpYJGE7RIJuuHsf5Bk2SVaf5xQADGt/4G+BLqOCCeWRRwhcaNSEP49B40\nxTJ+5ZyzGJ+7FpT9BFTPLuqJbBnGIKqX721HYFRU7PPttM5IE2/P42fsun2S\nL/oWxbL42E5BdsuFeoXrbjlFFHuLRdTatXNkhNH5IXMP4LQbAIirk6W/AThk\nxFgEoLR0MyV6/O2glPRtE2Ir8fHpZ3DOSvVUh6JN9S40++DasVhxHVCtthtJ\nwX0F8Uue53Xtw/dH+75OoQROlAqHwUMEpwvl1LBb/8mj9bPBy+4Pvvn0nn1s\nGg7Qc4RkwolKq4O+hx3mOVLGhRMdi+nc/YWHYDBH6dv0GG5mf/6YpqWzw8Wd\ngWjNHNfcIos8WYtqFaPJhP8VWMHx0ji1jojmJjZ6L76v2p6MYnSwMK2tKdj4\njFNYvIpzGhceybNx+44sCqCa4OLmKuJUCiLje4uK4v6l0VHzVBT38A4QvmUB\nh189\r\n=O10L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-beta.2_1608215559152_0.5522178814989687","host":"s3://npm-registry-packages"}},"2.2.0-betafix-ec0ade-kisys07k":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-betafix-ec0ade-kisys07k","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-betafix-ec0ade-kisys07k","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"722de7537e94ae46486c40a804d1ef6595a10d86","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-betafix-ec0ade-kisys07k.tgz","fileCount":309,"integrity":"sha512-dNj0ch+hHU6CWT1Q7KJDgDf9d9SlBZ8SV4W7RWtZzFqgDeYhNB5roeeXiLG59fjwHmAWtsUmudh+shMrViG5Tg==","signatures":[{"sig":"MEYCIQCEZsp5fCfP2zN6HoeFfRnHJeOoLJRIbXRzmMiWVOeJVgIhAMca3US5JggQVRebCB/s1V5ZDl/mupCZ6I+65oSyBc5O","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf23EZCRA9TVsSAnZWagAAKAkP/1+HWC8S+Qc9vS/ct1oZ\nVs981k5cagWFfK6egS1d629QG5f54rEaJwIdmmMk8rDd8U6lA2deMIe6Sm+6\nKtDai5wQQS9E6W42vU1ACADDY1Qz96pBO282t/efnbUVs8aFAvwE1awXvnJL\nFiZyS+dM7avUI9N3GGo27mziVZvxEC4BGBTR3H4GsnA+E013vMR21d60JvRn\n8hC53+LhNKVSIHuNza75q6Di1zxICoWELGL5cfGdQlyOWTXaa0vMrdcP7fXe\nx6UXlqJ7xosPOlnuISnT/8yKkKAHNd8Pm5cdMMkOktzHNGeuQFSEZIzGviAe\nEhaP/snQG4qs0bF3aZgd5lqUmcSXy5PesSElBuAJLioyhZa9qccakWN5zYjg\nr9eSx6r9ckxbgnHtRYkiS0SYae0t6sm9gIu1vR/wKrx434W2lSpN3WA8j8DE\nhBAIgnJkJdQEWe8gv8xGF/d6COIeag7A68DRj1cQGS4mDXHcpG6Jc/fPtlds\nJ1venh/ypOLpoNyA370FjJeqpean96CxvcBRnkc4iBghkivjBfEkSjvx7Fwj\nNS0qoHMkx4/w8vPTNM/WWV6TTwl8T+diedJEN1xQI0BEywKbXPNAyhSsRmzV\nsLx7xigXDq0EJUce3O6f3EQNACkrvBz7YOpEuXTxPqOkTrdyu2P4UmU8insd\np9NQ\r\n=MR25\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-betafix-ec0ade-kisys07k_1608216856717_0.11212774143557991","host":"s3://npm-registry-packages"}},"2.2.0-beta.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-beta.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-beta.3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d14df3a1775582b9b053a81214f8e806e6713d2b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-beta.3.tgz","fileCount":309,"integrity":"sha512-fO6uFkUnkCXevxwD1RirekwKwrDCDbE2+PB5vLXyddxdbcdfDfXC9vMJHRRVGE5cwSOo5cMQ9RmM1MCYTBxmWg==","signatures":[{"sig":"MEYCIQCRHwFvpNaDkQkRDJxshfVkrato6p0O2m4PL6G02OcuygIhAIuhghfOur0FmfqeTqQLEJsXoJg/iB6DeD07tpAUYRv2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf23+uCRA9TVsSAnZWagAAGy4P/2U7mmvdBwPAsL5moCp4\njHdm4YT9UZxDY7FbfcIQ3W/suNfN+edJl/Qr+GhJ55XVXoh2aEV0qzp7z57P\nqYUs2f408EoatU+EebFnk1f9dwlglr96AZ94aQVRIclZw4NQReynNWU+wkPC\n+5RGjqm3wOO6nu/cWuHuISggVsysXqV/csbzvvaO/3745PH8fiGEjm3zGkKI\n+F5gRKIehsnay0Kpbw+Tne7NvM/H7qsa4CXeQtChL2pF2HWNRJWOFQtsSJ0V\nFrGFXdvcWz68MaHKbwNk/zEjQ7KBcbsg+LvxJnOQDsUSbuqG7AdEboB2oGE5\nHh8PejSMVDyFr2tiWcJs3BO5H6OkGxLPzKarJvXDPnnTBhYd2NLShO4GdmbN\njDuAjAstOEEMHMyvO6IGfxd2KXxWemscFX5pRH+gz4hiJA5tJkKLn0COF+7/\nnfKZmDyroWQLtXlTzyv7R12mlpqy+lMTeiiqZedp+cGx3Tm+5gNxzR0uxlZd\nYYB5qCUiMjmuNP3ThJ62twKq4Rv1VvR07xXyRki/VVZKuPI/Zk7NAR/3JSnW\n53kU21345G44hWCQA0YgQfvudOd0pZI9DnG8GBsktGIH3+l18EkJMrVW/1i0\nJPa6ySGOZRmTUIjZS9LcrWS1cUQ/vAPduYAV+4PT/8ziBUh2qLDg7cGKdP3s\nJCZU\r\n=9WE5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-beta.3_1608220590262_0.02470354054596391","host":"s3://npm-registry-packages"}},"2.2.0-alpha.11":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.11","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.11","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f724c9879f33547ad914c6599472648f4b6651ea","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.11.tgz","fileCount":309,"integrity":"sha512-bGBklHwk5yRc2LC+9xAcPMASopK69i946eSJXRBWgJqrv4drryrM2a0dv0iR5Y45I78pvbr/XVa8tKjWBK/iuA==","signatures":[{"sig":"MEQCIEdVJBOyXZoqrEyNImNBDl1hRHOeTZwwatEQVtnOyzgwAiAFCi2P8hZSPtpzxzOLjsBq2+/gljbwNEc4QlVgBYQ9/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf24J3CRA9TVsSAnZWagAAJ5EP/3uP4ZGQIQIquvbLUb8f\nwiXgU49l7600go06Vky1aZE6ZMrGx82iS9AJujH7KXZbsLzh1Iivdti9BgNr\n2XFpEAzf7+nIJmcxr0Waq5xEBTTeOGCY/t85VAJOeD1cSqajcFi5lebUc80q\nXiu2RqGu78IQHyVSwBUdS224piwNiisoqC0X8bk9fsUy533/JS9G1NECNs4n\n94S/h5VStGsD9YUFqWQs3PUnzKLDEy/Iz3Qd5v5KI6VRFaIYrsMnM+hqXZcF\nhX9uA+SQeE9hGFZoRuAf8vzmio0BZyQi31RMYGGsEuwgTrF2M7amwc1rFXa2\n/KP3LcXqZ0/rAvxNmxpi/htDHHkEa9SRdjFCRxHbLE0ZMj6dUwCfXjs3XjRD\nm2t17rlYK9cpEyhoyMzoldBgszU6YvZvmmA/vTwuXqX0t0EWgA9FtCjvnL05\nc2/+AF8/y7/Im034BeMEd9qCC9gP89eI+TIMf7G66btamN2JUp0hjUAr3Yyk\nWp63hMWROLCcyoPtqPRa5sdzV9BbB0qboStjJ0EOV43bkIoJBrIO5/VJIHKH\nwsCnMsfTumxNawk0QvekCYMrGFHACMz4PGrt4cFU9U6LHjMrPPEKwqwB186n\nxR5U6zpW2w7OhxHTyxJ20yTAmiFZU7T6ry21psDi3FU7zKYVh8YBjzwbgWgz\nNAlk\r\n=9AUX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.11_1608221302639_0.41585762540397164","host":"s3://npm-registry-packages"}},"2.2.0-feature-241ccc-kjik3nec":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-241ccc-kjik3nec","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-241ccc-kjik3nec","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ca58beefb127d58085ea80270224d81de2eb238b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-241ccc-kjik3nec.tgz","fileCount":309,"integrity":"sha512-qOg6TNOz1GS5pjlVpkggt1sHSX9Q8dRcQNhoSkZUYF+kfjYMxKxIxtUFAiw2Hh1wTBDxed15nx8ulN4XDEF9hg==","signatures":[{"sig":"MEUCIQC+r4ih6A+xbyUzIrEkA87J1v90Y7zLBDbYXPGrQRDetgIgK5kA155u5TbcJ4apwjYb96bz1Gx1Vu9N6t4wLxKZ+yE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527264,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8w3pCRA9TVsSAnZWagAAwTUP/3PkXpdo2L0tRo3TY+b1\n3L6U+AYQiUywA1XghK7xFtd3vGbYDwbnM0BtYSH2BsTU4XyR5bxdY7Mxig4K\nJbpU3bfpONHT6gAzLiWdlbiavjsIwzmKhwi3rfOhBDe+J5ffTnl+XrJLllNR\n94bSUHR92X0rwVLjwTAqyv4tmClY5zmi1dWrOsplgz0dv0VsFDNc6r0FOWB1\no2ene5UbLAj7O9ViEFKkmIDwDo1iZGb8DiSmmcgQjdMYeCFvC7W4FHB10FSb\ncIWFS0rk9r7OvP05jg1WnRIYN+GRZitbFz20hHzNusoxzpqNVUdDIG2M4nbi\niaa+/D9M7K4JNnyy0Wg7h79bc7NhdDHiBOe3C0HP9/7JYURBGX8Rb5sxibmf\nCed3PqVgKfLCKXHhcHRh71Ca9sFqTSggeWyMRjFKr2xZ8KurM9wGp9Gy0NdA\n5tewQT7hz1yvXIrfT+9N+DSxdG7bYJ3PHppmXSeaiHdCgIrJA5Hbtk5SjBRn\n5sTqPsqMKF9urwG4fduIalw0Xa3JfY2QlYaUO2ETmyxZO/Ui8zieks2Bklqh\ny0alrkCljcY2IdnjC5FEVhV+MWNhFgpbHx5urxsZTOjaxt300w6Vh9K07XRN\nV/sUkbXLF7xp0sy7FhtZY+eFVlQs9o/gBd4US6v+93A8T6f23yW/NMQmi/ng\nTaX8\r\n=D+mJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-241ccc-kjik3nec_1609764328969_0.9085775990695564","host":"s3://npm-registry-packages"}},"2.2.0-feature-3c1671-kjiou9ju":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-3c1671-kjiou9ju","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-3c1671-kjiou9ju","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e7c3d766b7065e2d1e8bcb4b1177ff062d2a738f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-3c1671-kjiou9ju.tgz","fileCount":309,"integrity":"sha512-sslGQzDNpDrm1doWtO/XAgp6I8seIg/OVf90IcnXKioO05ebpOreHgCeuNd8tjPSfbROXZK4e9XoHDbV9dqzhA==","signatures":[{"sig":"MEYCIQD6sGq5vg05prUYEa2OjpmLFXrNPYjnyz/vc+z4NVCzHQIhAO/LUnhcRCBhwQjiYivRcEz4AhAskIvxpcJ10DqffpDL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8yz6CRA9TVsSAnZWagAA+YYP/it7uNzOdvTfumF50MrX\n+JNgM4L8W6zT21gDIbMRBquMt4KubFCSEXpH49gJGztQuEotXyTyM/SbBGtC\nL94R9UoxjTKMFZ0MSntFwDLkpGgp8VjzjGe4IiEtJGKhQR5jkPXdnQyaT1uw\nD72H+9ZIUCs3zJhlaoiHqmPZjtpDbr66MlGvbmKomlhXg85YA5Ye9bt+D5ch\nqY9/4j/gOzBk8wsBgb447KN2gl4hOfJheV9Cf0Pag4fL+Vgi+PTfW5aYFhNI\n8y5k1r+8gcD+i1510TTHmSZ2kn2uUSeFa4NJHUyitJxGCWbye9F0GJ60sYww\nHfEKM0Y02AIQPlQlF92yKmJfdx7kv/SMAmnu8L7Y3G1ibNKUKmFiZttotuLz\nEp26vSNXp5eZ1BwEBHijKcdghDTedoVJXjKQRAK39i7DoOgLhXRdT0eCrsCa\nDs60qeSqTjEH9j3uIZo205mNx9JuduP294UUfCRw7zvT+k8QKGmC6p0AAL1Q\njSgYbfaQ2vNbwpY1ETUU2zT+BpqKEy1Mi0nSr/+mdLd9W5vHlQ5Ai2xuML8e\nI1eJJjnXwtKAG9QjcENosP3Sub5rSRjMZ/VD8AMm9q6b/wl2dntg0PwycQ06\neMGwaIaWKO8D5APUEJXemDuiNaVZPoBVG9FSzilXM8IanRaeWRGK8SI0Axvm\nES6E\r\n=MBC6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-3c1671-kjiou9ju_1609772281711_0.17083407106349013","host":"s3://npm-registry-packages"}},"2.2.0-feature-508ed2-kjip1t04":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-508ed2-kjip1t04","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-508ed2-kjip1t04","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"146d7cf6bf3c4acd01240ef2dc4d0dd0c7b0e002","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-508ed2-kjip1t04.tgz","fileCount":309,"integrity":"sha512-z+QuJrJEi1rwWKQHvPIDSIwiZZJe1HPT3QSbfYcJPMfclI+a9uqfnEeTEcLcRfwyYlkbDJChazSq+bdX+L7Ucg==","signatures":[{"sig":"MEQCIHLQ5XxCwxFzEQG4v2VnEO8g6+fx7Bcoq9uDg3FHiqBcAiBvmLJ+d8hIR9CtV7TnSgzc4dXGEoCOy+R7u1h5Qx1+kQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8y5fCRA9TVsSAnZWagAA5ggQAJFstDc/rZgyfJcOT0kE\nUAE6pwJmZCsamkNkHYr4qIjbhPtQp6NpYPL0QqvNjILuIyR2QeDbo2Bbcr+N\nnr/RlzOb4CM09duYBIN9PFvbz2bDvPmHPY2h1a+t8qEJbedCvVFeeG0ARG54\nFMmWtrmJdCDPiEgx2TOzJypbKQ2jGgCuYhny+49A7mSvUn1Bsm2w3JHoh/F8\nzbuHvE+yfYyog6zlz/eEJoVMqnuk2qEIPTeGGLy2qEX1/7yjkh+1ucVO5+q7\nQKWEam7bM1McaIIf5mM5hiu40pJ/WwpjWQNvOI0d0GmIWNYNs9d3ke2p35dT\nNc6x+27YUN2GQa9efjhrWla1Z+m+6q8nYTJSBYOv9Mmla1ZlALEXIizgUvdh\nmqD1+rXmOe/W/upHDZ65HcFi+buYJULrZ2pGSH9WDvwy+tESmXwC14JMgaqv\ngmL2+4M4/U+NF4vy2PPNmghCm+dpu2ojYr3ibBqXTDZxUeeAylhcU3O8cK1G\nvKZ68ARe2an9Bn3WeaFc/K6gi+JPq+I/RFPngXVY0Ht90UkZAukvWNIw1vMI\nHE6gvelUWgJos/Yr9MN6XEUqHmR7LAEfb62NC3JvvONhM5wERCdQgyNB6ZrN\nbmtykpZ9KRYAMXyFbOfKKWfQrnkdRaCZokpB6ibgk2xXWGxT5a9houALMc96\n32Su\r\n=s9oP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-508ed2-kjip1t04_1609772638577_0.1892586812111423","host":"s3://npm-registry-packages"}},"2.2.0-feature-950c69-kjisbeky":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-950c69-kjisbeky","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-950c69-kjisbeky","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2fd2bca07b14a5b0f3962a8aa9df51e7726f25d2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-950c69-kjisbeky.tgz","fileCount":309,"integrity":"sha512-KzAu+74UwjJYE2TsoCp2sI7JY2bFASrZCGjM01ZfXQNwvY9eOt/3fbEFXaIgo3KicNlSe+8EXsGU32wp/PItmA==","signatures":[{"sig":"MEUCIHG7LGVJcZGigarqSZXSYWExknEny2HH9w16sKeXXU6XAiEAkM/KgmWG4GMFAvaSHLWcweIquwRLmmmZgqfyntdknRc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf80PNCRA9TVsSAnZWagAAvV4P/RuAs01okuSoG9d7wTwW\nu4sDpJ23XZuivcKmPZStEH2Mns3W3aLLm1txZAqarVIc4R5oZCUXDBVXnYAk\n2iz9mNMx+gWUqnmIAXKbXAL8sRqwMvtLmnL/0vyGumQfL4GgrScccR9amjfQ\ndypdvbg1nfMnZHBvaaEXle5IYljg9CdNvjPxMxqx+ABc55qQk0XXeSk6wNA3\nwTz8TRr+pa+NA4hMavaEz+KaVRgyVZMKjdB6I35Mwo8gOKMg3WxASIWx74S4\nhG4HRP0nPIVldbnidp2kFVXkumFJiSLsXefYJazfLA062OLWIHkMBVBTNZYd\nptx1eNE5NMJpaFEb89PAH85lPfzqbrn1NiizUYRpTYrY8pKdNDK8SR6nQQR6\nNhWL8p0Toud2K1auZlaiTAm0SdaJDo6RPYz7cc3PcmCpu7Ot2G4ZDqOk5YjV\nqXQ/jmwRCoVFF9ZqSrsYICljQY51tM0VXMGbqBVZJom79nmoh6bVJoFU2xNf\nxkSUU17rIAS+c+Mvy6fgQyrizxrxlDoIqTbzO5NWXVPJtxujDVwooiW3or4R\neaL+dd9htysoa7HGJIhB3avHS1kp1ycV7BlLcw3HSbANrl3zqM/vx5hg5fEw\n1CZ25qw3+BFtwdBOsQtw3N4CTQ3c/4pQRmMvE+JjR32NWxobQlgPYJH6hSfG\nllhd\r\n=ehUv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-950c69-kjisbeky_1609778124571_0.676662489089005","host":"s3://npm-registry-packages"}},"2.2.0-feature-de6dbd-kjjpsmia":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-feature-de6dbd-kjjpsmia","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-feature-de6dbd-kjjpsmia","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c7b89fc6970390ea55b634dc8397f9ada9a0a223","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-feature-de6dbd-kjjpsmia.tgz","fileCount":309,"integrity":"sha512-kb0cXHIm3irbcIhpRq60VcGYFuVF+2BrUIMLVdVgrQA6X7EORSx8x18A8j3VUd8RsmiJ/C1d93WbYtESSPyBbQ==","signatures":[{"sig":"MEUCICd7L28jMOC+ov46DEb+8gQ8lWFip4UkRNWe13ANUOAOAiEAmsaTV5c+0L4RvKKaLRQcmNXCwJOmSbIsZyDwCCWYXWQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9B92CRA9TVsSAnZWagAArSAP/3E391r7WhPYSmseKMy4\nOXJYis3pMjlDy5kA7+S4+D7cERrGm2ptxfsUuJvcs4BfFb6OO0neF7K3I+1S\n9Kfx+8Vf/7eAcq6iFmhyirjAw73kE/VVTDywI0d1QBoDCnsi7xvDUFvF564u\nK5fEarW08qROxICHFwzJ3GBdm2hsGsLZXPFC/1jtGAqXF5q8vRVHEk/d5t+/\nu33B2ctB7JoxGn1P7DtyWf+oHppSK8FkQJHPCnuez2h1lpNA5mH9hk2cXbdS\ncjn6cJ1WrYoMy7xLSLlATrJ24ar4oAqQM3SUWuWAhoI6dqpUHtbGXYA9lQLF\n7dZN3LtYPxW0HDYhLpCNsGKws+saTUjnFwHqtGMi5c2SCE9Tc4B56hDBn57V\nS/2u8pG0RJgN7k3BtqoHpIQyg2jz4haIJQfUQKylNojqYJHWFwJLe/oMbxaN\nGixwkgLUBrmvX2Uk6JGXrhuc/9bkPEfyqgKeZ4f/vcixxWeeX4TigUi9Mii7\nEC4WbWwRvXFVnfJNHJtCrPUwQrhB4aDLD4VkK2cO8XNgvlouJAsPXN8dyytq\nHIET2d4WY0nU5nuc1Whq5HkIY/7OdCy7HI0Ykubh2/x+u+2SpPpsXmGRFPZU\n0gz6hzejLpD8VleavUsiAoBVHwd1w5fN8zYEHHGhuuedl3aYOoUUj94ZYnC1\nb+t/\r\n=sc0A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-feature-de6dbd-kjjpsmia_1609834357813_0.8078172803956181","host":"s3://npm-registry-packages"}},"2.2.0-beta.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-beta.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-beta.4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0067064615f3ca686e88e65d5ebe04ea9706226b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-beta.4.tgz","fileCount":309,"integrity":"sha512-K/0feB78DQSPGeKA0sseaCfNz8bo+cPg2juFKL0IiDGJOyHF6CLCs48anS/3slwH3z8GLwE6ykaQBxFtzgVDCg==","signatures":[{"sig":"MEQCIGQ7uzeJsxQ/wTxJtstVydXJkdJji8y2681s1h8taBP4AiBNL5DX8+Eb0R+KmY78AkLc+mqETB0s7/3EDgSbTiUBEQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9CcnCRA9TVsSAnZWagAA8QUP/Rg5zOQAnDrXNayUrEtS\nObO62CYpMRaaarpFHZ9uGchJoAprkUrQ1qsS3LSxCCHtScihSoHHKOElAab1\nRlPqIzcW+Ple4i++LUj3a5mJdpolHERbSaIQDaxjXdGOyrL0mLctwKM0aM9Q\nybk86AKkaMpYHJK3Zi7GL0QAlrdTeUXtPue61OnbVon6Ta1JPGdBHFgjfKxs\n3llTFhWhkVXyeozoqSlQoROP7Pa352eHcro2xsmBACxo+64hV6geUk/oMibR\nPdrHVUxHeIFO9glMDSJydzGMZXOyE9GzOOnfTxXWJ3P3j4ADDd60gs7Uoy82\npGYiOyNtkgJy5PNhIPuBtIbZkBmJBGmCeW/OWtGAdW16kpAv5SP0g25uk5+U\nLtxozYJKOoduVkKG6mQKG/dAcXNwbKjo+4nKkcHgprn4o+rlGczfGgrM526h\nuo4T96FB5I0s3japymtVpnuWv9hQyZMHzf8gQTELKBHO2HZej6BAaQru+1ih\nDMr+uPdjDK3BxiP7k59LocleyG14dG0cV7tqrui1ewgJZv8U4gs8LLbiSE+w\nt1SvodOgL3T+8ilkhB9bkkjUv/LS7vMi/60V3enHxCVahIcICARrfBXKIMqR\nw7Mycgx0KNUePR6RkyFBemaRM96UAJtf+UWkQLqjLsGwKewy+FNOttDpJTMe\nK26e\r\n=MEG8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"1.1.0","@atlas-engine/process_model":"2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.3.0","mocha":"^8.1.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^7.0.0","typescript":"^3.9.7","@types/mocha":"^8.0.1","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-beta.4_1609836326519_0.9717217870368813","host":"s3://npm-registry-packages"}},"2.2.0-alpha.12":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-alpha.12","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-alpha.12","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1c8e8614d51a732a4857ec6979191cf1702b2be4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-alpha.12.tgz","fileCount":309,"integrity":"sha512-rrm61ePc/2nSpQCD435nGIinf2tS9lYG143cwIa+5GNJO79ystVN3wuNhZt/eFBbHBa4SSL+Dr2vxDp+LwK3jQ==","signatures":[{"sig":"MEYCIQCDxfC1WgUJSSgh8er7TjYer39pc1ZRQMhgVDYe+BF3ZwIhAK0/0xi5avJHfWRy44+IWPQvsJsuMhXVO7WTTvVfPwP3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9CdCCRA9TVsSAnZWagAADscQAIY1nMtGdbO7twcVxnHY\nxsc4G6opwahnyW69MWRNsmAQmucKVhInqWY27MbDSF8yIHk4wgRGl6YnEdNK\nUzwHXJKChPTdV8fXGDbhoOmHofOiIj62rk+UK57VS2CmtO+Hc4MnwQzL+94Z\n0KzuxL5AiJy/pKcmZS1oiQy0Nkn/01LWK+SGOcb2HC8kKsG+UAYVxYLU28v9\nTkd8XwmfyRaSPkG+byhGq0Yt1aLTZd3sakAlBfIPGFofai5u9erRYhFjVGcR\nmrWQ1zU8ZFx+E0sB+BhU2yYqzgGlrG/0olw4bdC/FLFdsppjeGIRzjkw8Hbd\nz8EqaHaU49zZv/jWkpvOyxgg6Hd0bxNT5iZ4RJp4hCR7HGLAkxKLxPMyDVbr\njLvn3dL5NJaY3Sw65SL2Cqem4TuUM5X9maRHa37+xQFI/HWrr9Sj2vMH+36S\nNlThLZ/Zbh9/GuDuaBMsaLanjItTNsbTVhEEmZekeJspAVt3MWSsgK6WS126\nTAdyAx4IcINvOCbKmUiT2udgeJkjF6njGFTNk4TDtrmCyRbYLVEaQxJXznyE\nfxKvTxne5CA6O3leyiejE6UCRWjYVpAHG7MBvuBMhl58xMXYM95MNeLlWIRw\n2D64Pv+xX3fprEiqdkv/aAx6F8QIG4Xzb8oJW82gVp9kKztyeFVgjktr8Nib\nU83j\r\n=Vidr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-alpha.12_1609836353647_0.0028460361597710815","host":"s3://npm-registry-packages"}},"2.2.0-beta.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-beta.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-beta.5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9f82e5e6a0dfc741c6d41fcb080c9c1426ec4d39","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-beta.5.tgz","fileCount":309,"integrity":"sha512-eHdBoQm4xGmL6chfIVOSUnr00Yo6RMF4U44EEsLm5p3MlUXA9dWmkXnj7WObMttmluL00aW3Edo8fvknKG5KXA==","signatures":[{"sig":"MEUCIB3safqTFZ1AD56RTLPBf9O/xU0fwwniI938IAlhEmJNAiEAo18noBRy9UFSMCwzl/ep6e++h5d4jW7CsChzW6yTmm0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9CotCRA9TVsSAnZWagAAFw0P/jAo7J4T//1ILGqXAY5z\n3yFf7Czza7eRUQKp/wFlHjx1orDAEQxXWjrUvB6JecpibDSJq4E5Vg/w61lC\nSgO1fvGyD7PaMQYnxFRfRP0wizXyUIm+a5FDmPntHtuXfshegyScLwyWeoAh\n+ra/1ayHvkkDH/pqujEiBik4j39yYRjSRhH8tDBhtMIUET5Pph0Vk5LBhvNH\norm/jLp3nJ1T/8zzViXVwwGNvcts4blyjCrVeTbdFFLkY3h4Po8JRU11w9vp\nYHo5ca4gOH5rMj/53+XbI8PPDegzuXIOkIl+AowwIUvgMw/34Lgy7h0xsMX7\nIdiYgxTLOFsj9lXmMEn2h0Y+7LcDFJnHW7Z69y0q1K60GuAlTfCsdGaZr54x\nffaIVEI/wEaa/p09mkaS9GkFlZX0ZOmFHvIZJ2R2gGvoyplMcaT0hJlNWbGg\nIXzYfySz01cGuOB4VwimlZicRmM1qPOqUE4AStH6RtJOCRFgpKD/7T552fuB\nHeRkdBn2rgYbz1SX98gYvxZGfjAVg7TnUVEX8/0/nFSLd3kamzICEou6CTvj\n1rQ2CoFx/439/M3NpbPAvNJ9PM2m1BwmfOUG8mm3RO1CkonMYWdLNTipbwuo\nmQltdEw0S2YrFr9XLhRDyJF8T9MS3W3n2xpVUvRZ/P4EBWqj3DSfuRrbJheo\n9vSZ\r\n=mQhu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/core_domain.contracts":"2.2.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-beta.5_1609837100546_0.7040181480768191","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d4e96633d836cb653d969cd9fcd0cfb3a70e0b4e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0.tgz","fileCount":309,"integrity":"sha512-9kLZO3KuSpiSbSQLqtm0aaiZSfZwk9Z2xgKoQOeRC39YlHCYRLEzuuM1ad2o7JGlrAhx+mP1cDm6pB2po6zunA==","signatures":[{"sig":"MEUCIEQ7fSSBGw/nV5ip1iJhUVe/5WjIK4ILwpdyaj/KGzsTAiEA+8r7hMlRwMtngySE3J8UpCg8JXO5F5DeM+cdZTyD5yc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527120,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9ZAmCRA9TVsSAnZWagAAUvEP/3rLBXf7SQddMGPfJ6fU\ncgjKuy+eRXhlb7DhT04LfD7p+8Ups33fFQBwZqRemmjRT5ozRXAcD4RbUVm9\nHflWOFBI5RaAMyfDwpmVbrs1xBodRIfYNPsHZechNImaszYERrBof6EBH45+\nJH1SakiI+r6ZZPt3DSjq0NoK1lSU+yvNCly3llH74BoUbiYKoK3+nnUJ8U+j\n1ZL72aObdRqPC/8OQik5SROf10MODkEE8CVPLXxCEue0Tg+2cMJY5gduM4hZ\nvFl/oKnlHYGeMLpIeicjD2D9sYCPcYjYfIH8PJwNQgZvz+0mZfL20ZOF4wJu\nrHyVMJZwtlXh2/2i/sqMclF8eKfFZIs+3Gdgs2PJnQrLAMBbFNj+a465I6TO\nP8rsgiO2QEt+03Hon4+rQPXHxv3xUsxCCo/2vM7Q+vI84DSRirL0fmc/jN7X\nZvI3GaXXG4O00hhiL2RdJY/L5tjMn8zCWAML2/M6JQqcn62hL3DXxYbWjC/a\nJTO+6t/WBowT9s6DQPTvH7lniqCo1MS1WdhXnmFessJIsYItZFRQ+BJ1GOkF\nsGyNEL20IjHgbuueWsoBsYZ6LIJP2UrJvnKmdOSPNzGskyS5EUZdCkI81Pc1\nFFfV5ZyFkH4m5wzadBzgcObdT0HIFTU7q2jnG+aaOKF+g8uwZ6gEtCjbrFQD\nuPJo\r\n=4pjS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0_1609928741874_0.905757432391538","host":"s3://npm-registry-packages"}},"2.2.0-hotfix-f081ad-kjv9058e":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-hotfix-f081ad-kjv9058e","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-hotfix-f081ad-kjv9058e","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e0947dc4af8c05c3f56e40355cdc7dfb35827a0d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-hotfix-f081ad-kjv9058e.tgz","fileCount":309,"integrity":"sha512-CMaE3Bw7mYJNh0HsfSLFXbOnY9I9DEaF4N0urQW1FDlZKCidYztdZ5EWJDfL7bfjqAjMiZMB7eB6Al6Op3EysA==","signatures":[{"sig":"MEYCIQD8uBEq5FGAoUyNs3RYV0RPQL72h+NR/rjyULPA0HJU8gIhAL9I2b/lPR2xMZbo5+CCd1UagGPYNgO1O5gdwYQD9kps","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527143,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/sOfCRA9TVsSAnZWagAAeDsQAJl5mSFRKEuszfW7waWR\nEb1FF483uES0Glf25/6aIeDfHsl2McXiSzuHiSiZOiHgR54tQbnSfAO1y4R0\nCJm8GVfhdDg5Tjv9HEhUE8z6NEvkSJbg6sFiRPnEpCSxgBzZzLUdqu7EAMhy\n6EOO26jnyd4EpzEd9QdIrop44nUxjMINY4HFmjch9nay80mfuxdB1ZEnI7jo\nmeaEPF8LaL9YKdFhb+fn9qM3bDQofAW1klrbqZH5IHtioTe9a48qkEQCWCrR\nc77ixvoI/d1g5PgCI7rxsmvJkXDg1BU8EQA7L7dPhI6PXIuGevQx2cBKlOVW\nVQgKLVHabJt20udAw7ki44KvaQusFFwVoAlX0s1fWTXni2P1XrgH8iH4HQXv\nEk1R7tnuQ4z5rTN2H40fyWITYJ2b3Xlo5RYVfILEeeixEL3vYXKnurDCRltY\nkpoDWz+xlC5TzHK1E7sWALJgZJJvewJ0EEOwKFApaa9HIFLrD1M9CILJ8fFP\n3r826oQWVQPkpEVW+2/PpEFuc6kNANnUFt0ZpTkJkSzL1j9H5eiRrmbmVQIh\nli8qzqmiqPZx7sQ3HTDQJOt5hQ8zXh39hNd4tkdP8WJoGNHcmItp1uMbbf9f\nG95juREL4TC/waUqiBSb469cSX375z850N8yXpokjbXkK+Ct3Y6WIJWNwY57\nop7j\r\n=f92v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.2","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-hotfix-f081ad-kjv9058e_1610531743364_0.1400946904907172","host":"s3://npm-registry-packages"}},"2.2.0-hotfix-a7df53-kjvfpqf3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-hotfix-a7df53-kjvfpqf3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-hotfix-a7df53-kjvfpqf3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"20f2298312789aa7face554b19f4c2fbef97f376","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-hotfix-a7df53-kjvfpqf3.tgz","fileCount":309,"integrity":"sha512-d/gCCUlBOIhwh1wG4gglHXHfIk6G9JiY3pzU6Q/dHkzlSKWQV0OhHhbYv/xfccgXs4vEx5LdQnA9tckW6egSOA==","signatures":[{"sig":"MEUCIBjt+gzDyVZK+pCvXZomx1A53dCfo70qqU7PaKaVCU/GAiEAqIXDGCW2h0Ofiw7vMwQmwI5RgGrHVZl4wUuT/jILhxE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528697,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/u+mCRA9TVsSAnZWagAACA8QAIK/vkomSd9RwZrGfelH\nwLfIm/iKrsqZ7LQWG4bmQPzfowGHskmXc24cw6yNk2WV0xTOtZhVhE/aPK5i\nLYpZ93vMhpLJeWUQuXGlcRvzGz/u4girJzXo2IrPoqAPwaFRXfnMJZWpB27V\nI9l3VGvBVmBzg50qb9UoQzxh4LxTdKavW9ZgAOEFi34+gbFc/z1LsRqsRC9G\nfr5098CY10AO9oMMUXOS6KWAVLjmmH1PTYgcvRHWGMl3wbjpoe04iNydqoND\n0Z4XSgHOy6cSr/qk4BcgebAUX/vcsTk2eJBVK/1zrhW6PyKkRQkI7RkTIkjl\nrQ3HlWs0EhXIZ9myxowL49FLi7xBKGd5fDGCHGi3e8PKgdBVeCILJKEGSz4O\nRa4SO93hphIkN5ObDUyTBPcj6vSYimBCT1ai0sJ12gIR2con0Nkp8YqvdR6z\n4nbMfBxMJrCYLZn2iZuWOIF76wqscEdSyYwoVIKOFT5wV3hvDviqa1R4jmyA\nH7tDjtUhNU11YEFrLoOPWDEhqkGc07orv4QF+Onh3dlcLDWruf3uNjK3dmpx\nKiNyD9/EE/Ao6Xve3z7NNbhkb3JjmnyDZGsMJBtmh9FDKts7fK0UrOr1bZeM\n2NSq6858+f70uH0nAbalM0XErkoPkScPWDutshEo2XjUm1Mfp6WgB4NR6f39\nA1Ih\r\n=FR1Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"hotfix~reject_unauthorized_cert_switch","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-hotfix-a7df53-kjvfpqf3_1610543014212_0.55502977157957","host":"s3://npm-registry-packages"}},"2.2.0-hotfix-ba0eda-kjvhlh18":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-hotfix-ba0eda-kjvhlh18","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-hotfix-ba0eda-kjvhlh18","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f155190285b400a93857aa84f07540413b319be0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-hotfix-ba0eda-kjvhlh18.tgz","fileCount":309,"integrity":"sha512-3AzodZnhXEjoMDOhxuGwS+FSiaC+CLlRqY/U0BOuPkWYGNnBxr/Eh0eXXYIeRtXAsXukQsg4QDZpLDL3QBreAA==","signatures":[{"sig":"MEQCIEcONPFIhoOOr60Jzd75YdHR2OPn/GetEq3d+W4qD+eIAiAYpBSLv3sqi4o49c84dasQblFkGqxO/nI8yz4MiAAbwg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/vwJCRA9TVsSAnZWagAA24cP/1Fj4J09qQMazVuTPoXT\nz85aab4qVRZTRG1vsMQOIe5p78PnS8f7Ivs6feznwc+e2WR2LYglvtrW0OIj\ndICXO+D6FZyqKG8YCH5wQS4PBYji1JxUfp/UPY7HHGhbeAa6ApofnRqzK1VQ\nQBevp6TJljP/IKYIeJvhl0o22c/IQtGzcpRmRnNITxNuer7HZSmEQDz0grEd\neSojRowM1YgO1tJAicnJR8PDy9KeIWD9XHDdzjv0rrU+UKLX85tFgju+ckAm\nmptqKt4/BTfVaAorOSITsgifbHFTj7mIvYtDaSWEBcK8odMzD6Co38/N/nFO\nO+L2NAs/4mpK2nW1sT3R+HW/RoRqoGS8U2zrtnOdeIH1J8CN5OMxKmE/GUGj\nPiAU4iTAgrCzGE4bVr78IOwGetrsOnzsrVPucbU6zAXEt820uHMpnhpiqjF7\nXYGhdbcqxZ6g/7kCMxzgnaGR/UPbcD41d3XWNfBiLLUvEXtWJ/YaQZdlEi1z\nrPQGiv4l5gK6ZCy9YrDkY3dsxJJgva8ZDm2eJWMKoRc9CvMgbqu2Or1Eqj+C\nYXmJxLdvtyE7xRIJ8DB6SFwMBK5M6WVI12oDkcbOZ0f620N0oosBIFvvEPzA\nonbFy5eRiwdkiaMQSTUzNELTKJ4xhKEuhB1GF41QEw73as0g1UpedxqwhmuT\nhjWz\r\n=sSbf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"hotfix~reject_unauthorized_cert_switch","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-hotfix-ba0eda-kjvhlh18_1610546185251_0.9851431397119832","host":"s3://npm-registry-packages"}},"2.2.0-hotfix-f3c53c-kjvi0mfx":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-hotfix-f3c53c-kjvi0mfx","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-hotfix-f3c53c-kjvi0mfx","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"654d35a15f7e37b3dafb0d92059fd66428fcd3a4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-hotfix-f3c53c-kjvi0mfx.tgz","fileCount":309,"integrity":"sha512-LJId/4BhLZKOfURQQ/RvpnrQJEr2MkgbrZxIC9XycDMg+gZmg3Y6/4sSGM7edYGG1qmsOakJKfjYGXfQT/RgUw==","signatures":[{"sig":"MEUCIQCSWwM7WMu0W9CNtAsmAK64lCJwV9lOfwoy0370wcZ6FAIgd3ZBjgYhNoYu8wsJ19J7BVGSet8qvIOl8d1G8b132d4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/v7JCRA9TVsSAnZWagAAQxIP+QDvpsMMlgM+yNaizF1J\nuxe5sUHiP6ZDhIFbU0TKnqPuy2FjHNWc32xUQnWuBLuwMSHxelDB1DdAhPvl\n5PSqHNWveEvaiGtXz7ajwlSJnCHNIVRxf+aEdcaudym6CSamhzI/0OTy1Rbg\n2HAp+jLrSHD9A+RpDO9zNEjkhrol8cauBmNkZqDX/xttVCaFeP5G1VyW/v0V\n1cwpKq7isgI8PGuKT2QFUpgb3xeTdMhVuOGMraP33bDNc87Ugs9HAFRZxIdb\n1+eQhwEJbFqC0lMu2KG1WteiSDJoZVieD1Fz37t+VuUBTsAXLc1JVOtsX5HH\nWC8MN18jUoH39Et2JP8Jp08a8JpLT+N8OpR5QfVZKKGO9ySFUzvoVA1Hd0sq\nLY566+EitJRBsgvSQZSz8uw4LdvNoAXwMy+iSNbPWnLcFCeJM07rXB7U4ah/\nrc/pO98o8P7HJJZGkOwUecX1UG9Zjr0e6+ODKOLskauAXuYOZuQ7a+B/9lL/\nmD2FN2TXelz98KVnBvh7qNrvMZSv5IOlkCslenEzPVE4PdVzYYMeL7hZKYEf\nijH4+Utz0YfouX9Pyjs6P282cREeiQaNLZeIEbnWoRKnTCo7H8Q2Mq0bnMiA\n5QbPjq46+mf4XV8z7NW19xXjfktjzq0nfNO4epziNcV+HMUml9F5eegdtk2F\nXiKT\r\n=898T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"hotfix~reject_unauthorized_cert_switch","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-hotfix-f3c53c-kjvi0mfx_1610546888777_0.7305163591267272","host":"s3://npm-registry-packages"}},"2.2.0-hotfix-fdf983-kjvj2q47":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-hotfix-fdf983-kjvj2q47","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-hotfix-fdf983-kjvj2q47","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5b9a3699b91bec7962089e3addb924e2703f0356","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-hotfix-fdf983-kjvj2q47.tgz","fileCount":309,"integrity":"sha512-EkhV/wX/O94qnjVIybp2QieDTRbKrc6wBTQndtqkhaOy+JF1OpWbdmQf5Qk9H1gJatgOutnhjz3hUF4NcswBug==","signatures":[{"sig":"MEYCIQDuE3Sj4nHH/F1fvh8I24il7A7E5S09WMH/UVRC95PRKgIhAMyp6L3fmhpExszUYNTJgs0eCQNUZUZ2E6upW0wsdNUg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/wW2CRA9TVsSAnZWagAAkyQQAI0HIO5keeXvzkYKFpIO\nCVKLC+ruQMkgSUsdNqROW30OuG/3gs5fk30orcAIfq/vt91GrP5kRyKFssnm\nN/ifxtol29vwaGFyfavPwR9Tem51S+vVmqo9W6BXA+kIEG3qxshPMbU019G+\n5ApJ/WrUQgEgpx4km3sYuZQcpL/gFbTAWNq3BSUDjsZdetJJbpGSVLZSugyK\nBTzNMnqR6Rg/BpmBYd+WOxCOAiVgmY1BG0uw4vuagPD2BD/KKSU5ZwxOBDY3\nBoPzG67mO+uwx74eL0qDxpWo/xx1vBFdwduCH4XjR2qu4j3YG4gjyqWpJbow\nfnAn9ZGygqcSpyQgaWheBHco70rYrQt97ETt3+THkYOFOO47Yntkur5gsEHc\nqE0zjGn6GYwu/ihEoktV4pIDIsrMhSKAvVnZCrYKhRe69LaFL0CzH8NFqeeJ\n2AjYn08KVyIZFiFmb/umTHzoc+tqNkaZZhlHZA8X+UD/p1IEVbsbJy4lelZG\nqzoD5IfjJEaIj1LCgEhtfmwgD6fv76xrsliq6YWB4vO/sULkZFCZstrx9X/y\n4bshsM+dUy0SqIOlI6GWe8saLXNZ2i4XwtzZtrybVztxBXu98+jCx+26bIis\nDfBhqNdmSRJ7SC5t4BFJncWhYt51L8QERgr/l55KeCK3QTKCTwRxUF1PVonk\nJte6\r\n=9qAG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"hotfix~reject_unauthorized_cert_switch","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-hotfix-fdf983-kjvj2q47_1610548661521_0.07301788298751943","host":"s3://npm-registry-packages"}},"2.2.0-hotfix-23d5b4-kjvlylbo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.0-hotfix-23d5b4-kjvlylbo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.0-hotfix-23d5b4-kjvlylbo","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"122c38d3a9b3c75b218ba17be3d1638aa589c242","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.0-hotfix-23d5b4-kjvlylbo.tgz","fileCount":309,"integrity":"sha512-//v4R3ewGwIn1DbSXLfxy7Myz2M5YZqqddkhRycJlehQ3tWuqDsc4VRnPpZeIxyxxMLcQrqWH6rf2MD9r4v+bg==","signatures":[{"sig":"MEQCIDb+B+Ob0YVwoqjY5L4Hc+El8LNs70RCA/7MoYnVnhTRAiBi60Pbks8QVlgPiCHoYU1ZWsMDadp1beHH67MAPUyElw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/xinCRA9TVsSAnZWagAAA58P/RqB456UvNQPxhvzOpPg\nrhQ3CGu2UV3osCUM2CI1n3kvC22fjjkshnoTePjx5n/vLH6up+5RIixIF9sZ\nKBuJquqF1NJVdaq35pvQtdtQCzs0mKwzrSiULRk3dypuuxglzGN1z4D3c5kE\n8VEsPfQJ8z0dj5Q+1IrS6NyYv0PumYOgAU5ZEIT9MBu3G0FALuHd2M+KVq/6\nIMnFxtoX7l4HRAqowUtBd+XsLIzHVhBC4KQLesNX60uQkUohpwzt5PIIl8uA\npAG+57Aiot8XLhJOy8Wt4SRkUkvW5A+eq3mIVsVFpH8QPL5bLA0GH098nrF2\nMk3HuQxmCAYV5JTSWlcCrkdEYiEZ9mqvrBNYsYl6RUGdpILv0oBnQKDxBE1J\nYjW2MxbfA0dJTl7bMNjJvzJWHyMZfe/4VTQzJ+/JVktLkRXnhrXCMj1/BB6f\nlyI32kPcwokIA8FLCQaECFG6e4KQJBPddCUt1nZ/OlkRoQ67eDsXluqOXdUM\nCj2eT0x7QFZU/xbvlhy0kF+XtF3kVgzWAIcDHFsBKYD43b4AFog1Boo9J0Qj\nBDt0ya3rFtpW0pk1Jh50Xwlmvj1qRkuvnPBnEcZJgdVUAC/F5JvHpooHgm2O\nxtoJ/i6VXFj6PALFmzl58U+DVlmAB9AldCrXugh6b60+VarBvXNI9TS0fVeb\nU87H\r\n=QWU7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"hotfix~reject_unauthorized_cert_switch","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.0-hotfix-23d5b4-kjvlylbo_1610553510468_0.8037144207465587","host":"s3://npm-registry-packages"}},"2.2.1-hotfix-f66a82-kjvqriqo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-hotfix-f66a82-kjvqriqo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-hotfix-f66a82-kjvqriqo","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b8a531035e0bf286187cf95d8413c9134bf047e9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-hotfix-f66a82-kjvqriqo.tgz","fileCount":309,"integrity":"sha512-vY8GXz/nk5mENDhYXs5GIHxUuTimS2mCA1Uk0xOOjyAnFCg0qGG16TqG6ewZ/D3syg9CIaxSZsrDjDf8by25YA==","signatures":[{"sig":"MEUCIQCgOA265P+00kpeXooHeRFjnY4xtB05XahbugfJdzhyHAIgK/LRvWW6nSfOCfP6N5ZdW8l4AnDsEJMogp+mHOfEC48=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528519,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/zgtCRA9TVsSAnZWagAAG0YP/0I3pqfzWGUECSOlxP2h\nP3TZKpXDc24E8xgDs8Ulmc0xwaMzl6PyL173gNKar1+gor92EAvFcevZQm3N\nHnOMzS2oZVouwr6CXjExtRF5n1aoNt5oNaOAriYttuOLm3f3Xh8uiHNNvH8D\nUQQfNPpcoAktGbB4qblwYpfmAr3tkPClDGniRdvE1L5SR33p/TBmAQT1u8iI\nnD5URmlLyzhB5nMb/zry74caVbyvklb+NUrmr81uBbpJOE9X0AfIyoGz8Mtl\na7iCam1bK97CT3/Smf4RYOXjmyc+9SQFC6VbqcL9NBcQKPSoby29Ai+xck1E\nHw/5vaSsv2Ps9fvSOMJFYg0Ia9pQLXXqhzlkUNZ6lMMJokCkAwuFqfF2fFXd\njN8G7L9Xhyhit1vH5w9ma/H1wohr5yE0yE6NkPrUMdUkX9yVOq0aMrYN4loo\nkMNOOaUJIn39QZd3P2uqYYybOcxpsvdL9piPP8XNMJ42axFPT+8m/I6U+Alz\np5aICTmiW78EjKyx+37R9b3Zc6l65utH8fxWuzpzP+HWFbTU5lq4+644HPxp\nmJ5tGTizRS1Ery3/+i7T8e+BmnJ6ENcrsK7gQJQHeRqdjhbcwYM9FRdIKOKf\nEBbgvPVAJhq+4jS9zf3RZY+mBFPfY5k4MjE/e5J5j+sp+O+yf+vWbcNVYlof\ndqmh\r\n=ZvCu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-hotfix-f66a82-kjvqriqo_1610561580621_0.8363192434553437","host":"s3://npm-registry-packages"}},"2.2.1-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"01a5b7cb312aed29137e09755acd77ea533b8dcd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-beta.1.tgz","fileCount":309,"integrity":"sha512-FoVASDmyBcueJFydeGNgDTa/GbUqzFcEvCrwye/fsc0qx26spppN4CBjpLhjy9A39jv2pJQ9GI+sJcr5VMEWlw==","signatures":[{"sig":"MEQCIAgHEKuP6lXZv6xRz8vXvLg+dGnUuWZbetse1lOsB4WtAiBaLNMSe5Nwj55KMp4EP4aVsCkS3yIofUmpDIQcPHL7oQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/zrrCRA9TVsSAnZWagAACJ4P/0yO3RZoo+wF68uxhCUE\nEgG1afl5uZjVnYNEU3TUa1ymimI1a4myrf7y9BeQOVYV20/ydMNcZWTCvAPp\nJxkf+0ORw+ZWHfQCnnYdUwFlesAAc/cIlL9BX/i+BMtqndDUMXeHA3KM9D0+\n5ahFA05XRzUXYeug640rmBZDyWUrDKjAxQZ8RLXTTR/qgE+E9+a8Y694L12Q\ny/i0GqHH/ljRSiQLUUbq1DmL+69RKPdR6UX8uhBCcaamxH4WcjatoJpF8XBf\nuGKB+bXBjl7dM1Z7YU7iP9NW/zzQoxHzPt39qq9P3YDj3bVOEYJCd9RzCDa2\nvShK+om/DB5qlfbMh09QL/tEXwHrJR4bZbiqe+NM71sEuIcG7hynh9a66C/n\nzkK8vfJFyWlEN3yxLX4bp9oVOpms2DtrDVOqIaMmXSoDRrLA4pTYJplF8cSU\nCGz93aIMJRb2SiyLdvgdomCI3o101Hkmz64iYA2cm8MXgBIXi8lnlOkZuSrX\nPNrTzjr/qICYHiV9vNMz7CEBthcf9ftQyujs4hQTu+zWUDIh8zapJ0TXxx9x\nylevR7o//cXD14uFpf5o9LgGdwEzgA3puwXL51Alx/JAOS9txQcOGZRIF+sX\npX9ntGXt5KV+svsRCGlaYP1omPDZIOev1jvFRnek3nIqb7r/3FWUqV6NmIEb\nbs4w\r\n=VHoP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-beta.1_1610562282573_0.028876471989464303","host":"s3://npm-registry-packages"}},"2.2.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ec4ee5383a7edb5fecabba6d4dc6f047f5fa158a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1.tgz","fileCount":309,"integrity":"sha512-AJ6tE3s4MUCL+QzBllOsbgg/SQXTvkzpFlKa2aLx0ibGd4eopSi7VN3ncrEnc4UF1wUjY2EjXW4gSkP5yQanog==","signatures":[{"sig":"MEUCIQCEKBiEr6CuTtCk0ZNQQpZBGv7v00ikpYlMEdjW/3alXAIgLYjxqIQZsL6ATsBQ7WgVAX+gbSuMykZIhmo3d4a4xrA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/z1lCRA9TVsSAnZWagAA5fkQAIm7JvpoVp1lLzU288r8\nNeBdfrvCUSbIdZ1xFeLnXhacvMsik2Iz91bxfs2RQYDWJjHXzEqjSvl+ILUa\nBSF6qAHirNP92GW3dJz0cnMrEYo/4vwvZkODBkBF1IY+CA3txdXG4aFD+OEq\nnmt7CjSnCg/YLtYT+mNqLaD6jOPnDT3WtAEvFLBOBJpmWB/xv6TM/AHp9b+u\nZ7XzM9tOOzPu3zTJz8S/vh83FEtyomcQXTTbGP9rpmKZBucqKMSrKbcmqasS\n8RxGSg5kTwubeppliRh/dN+rOZRae8A7hHGrWVIIv/IbxpbVdNN+X3ajFhP3\nMlhkFz+5CnZv18MtVoz4gRE8ANLdttqqe+/TuRYuE69k9RH9UY1ZxU54N5lI\nvah4zqCRI4sOvINqguITcZupG+cnAGRpJzc92Vg90BvFzme9i/MoPZXKqVxE\naRLiow5yei2i2nNzmygG6AMN5g/Ca4Dn7B+2LbELzp3o8LZ5R761lfJ4qV47\nNOu03HPwC3SJfFpkqxo9wX8ms8ndwCYFj8HE20e6q6/D41HpzeZxFBIf8AQB\nBQjIPJfu+n/k6aqu1ddoLXU5J1OR1k+daAoM/FhC7GRIZrYfHum+YYE61NRr\n5ASVpX2HIUcOxQ22H99+PixUnUxb9xFX0v9w+FMQdxpTNi6j89YOvugpDnd+\n+808\r\n=UVRO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1_1610562916990_0.8855633845270552","host":"s3://npm-registry-packages"}},"2.2.1-feature-f096b7-kjx2wm7t":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-feature-f096b7-kjx2wm7t","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-feature-f096b7-kjx2wm7t","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bb32c5b2a4bb72c772833acd6bd044eea1881a32","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-feature-f096b7-kjx2wm7t.tgz","fileCount":309,"integrity":"sha512-a0GA/eJZKfRVKMGkwfJEcSZ98ahsyPQRG5otgZj1h36G3N4pNpOyhVhOoVn8JdA3xfLf0hZRVxsVARl2U30j7w==","signatures":[{"sig":"MEYCIQC0v5bjVzLUZDLo5zmaPnToyn51BfJ2gh72fcGTw2xEjQIhAOdfrzzlfFfrrTlFfigvxYSD/QWQCTE5IZ6RO6Vi5e2k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAHQBCRA9TVsSAnZWagAAxhoP/iqSuB2iI0sceZ1KDQF2\nv/uLg1gKNSZ8voLnUrUyuFYrEeTAsGxJinof3C00sZef2CrqMNhLvj4W/XNF\nS2XonlNAGySvY1rSNMO55rZBxK/iWPczOTiNM+X4Qs67PWxI3IK1aOs6YJRW\n6LtQdfCy8zDYC/mPhSaZG7h8lfg5skIxKRQRlmtUhB04/O70xyPNXdxZcdd3\nNnTIKOdOJVJaYfJzgS6rU5QLi95Ll9euryMxjNF0QuJ1FJg6vVMwVKp6KrZ9\nklY4Ojx7m1A5xX3LvzczXbTZw2VIyxNVam3wZNxdIeI2kGt4BVZwMxFWQWn2\nEl4XLnAFQuDNY6FNt0mpKQFQCImAiRdkFjtWwjLU2Vpb4/Fi7k8z9koPWNtW\nb5wjAzOlquEZnWWWB/o2bAgoGyIDLN81c1FrvKSPczpiNrn17f9rV1DvQUoK\nZ1XTnBN1AxmYqJ3gDOTg84k5lU6iaiDOKbrHG6WEaOAbpNNvKJFpoEqOY7di\nOn4sqpvbUudl1Y1fljmhJ44okkWTbGu854aDzXlSgW3sD9pUSw3H2QXRT671\n057M/5FqMBH7k734BHZ65/BWJh85HQuNRkraq70tmJfeyqy8toDBXDEsAbxU\nE9aJv0HX1vYHmf70xH+a6oVgbRR2DiewrwZRQaz3mHreoZocrXw4SdCx5nl0\n3hRQ\r\n=UJ74\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-feature-f096b7-kjx2wm7t_1610642433006_0.6723049479377243","host":"s3://npm-registry-packages"}},"2.2.1-feature-9a9c4a-kjy27hor":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-feature-9a9c4a-kjy27hor","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-feature-9a9c4a-kjy27hor","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e8773655d03fc95e2bd7858a1a036c5a9ba1298b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-feature-9a9c4a-kjy27hor.tgz","fileCount":309,"integrity":"sha512-+R7Qdg5eCOwqGb5gAZiyJo+pWrqAgvpcjTeFo4CWXKG4b3Ckt16gZJFI8gFRT5sZXTTUclcnS4MVSUALcmAg7g==","signatures":[{"sig":"MEUCIFtpI/5Q5iEDgsj5qqULHxi/RpzfTXme73Xq/YHxOg7hAiEA+TbapM7nprjRJySg14/sl01M36HK04AazDsSTXA+PoI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAVuhCRA9TVsSAnZWagAANq0P/RZevuxfpa1m6rChulVr\neC2AHysKzisbKAcDdV11iPU3mk5gfFtutJMtBOycaJiINhOgLjPhVN6jyjSI\nF9HsAO2q43Hknkm4/R8Ln6is6XyTC3VwmVqvuHYK3BxBzRwvbD26NOYF4lZ7\ncgye0tnn4KmR7vZizEejxNZoZleF9qFyiPgQfFHkYDPcysbyPamla7OQBW/h\nd+oxX16vl0oz2sZYzm7bewTaGBvWoM0ly8Cui2NdZe5xWxhZ4+dB0G0QGzsS\nPNnZPdca+/10jyDXzCzOX3uUe8z9t/A+iv9/GxDxyj2thkHgHtvTdpNArdgr\nPQ0nqn1J1Cs4ip43tvpd8hRHX8lSbB94l9lsGiQCafS0pTmm4MjqJsZGR0fA\nBzD/B9iVvYI2W/LwxlEhwx2FTTwTPyZa8AQdLbV6ruGLa4BgB89JEoojJAMP\nrHdSAsp48DFFuj0jTT3xw6CO3ORk9kOBsj0jfvjbsOnSV4fyLTDdlNIqNdXC\n6oq2PG2yXw95jMURqSSWtWipffmPy60aWl25kYC/75qyyXA2nstBYWuZrw4W\nobR4rSzSwgLORf5/ohskI4ZAibuGUBNc4NP5ebxJIInMZcWCLV8ysO+Vvcec\n/nJN5znMOAFcWtWMk2VYbxDI90hAEzMeJTOJrNEnqaFemiiagQQj2GrjoiuD\nJF3K\r\n=inr5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-feature-9a9c4a-kjy27hor_1610701729193_0.36140478918800145","host":"s3://npm-registry-packages"}},"2.2.1-feature-c2dec4-kk2rao5h":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-feature-c2dec4-kk2rao5h","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-feature-c2dec4-kk2rao5h","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"29ffa5c9febf9373a7b3d7ffb478987f3ff43f06","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-feature-c2dec4-kk2rao5h.tgz","fileCount":309,"integrity":"sha512-qmEidqKAihKGhs6/dFO5EYKkMyNEsTPN8A0SQCQ8sLeolAYs52CGDT19bWpuRJkeJkeLmAUJrqC9CX9WVW4BwA==","signatures":[{"sig":"MEYCIQDh28n8kzI4sn3hdbXgpU7iSJJ5lESyFX+WxuQM5vjnKwIhANGASWRDq0Gk69SI19mo1A9zK0VoljHh6ldVECqjidom","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBbECCRA9TVsSAnZWagAAGegP/RbT9w7VfOANlRGA7P/s\n7zxwBvdQqjAX7tweSKN7KQ5Zn0lTDZuFRQSuVjlEuuexeC6Wbqqgo0DzbOU+\n6WiZC2+q+fO4HdZdw/Mcn4JMiJWQjJydzNiSjAdU19A7Qc1+VQf9+Rsheb1Z\n8etnZPEJYADQu/B1LSq8Nl5WOYgEHYR0M1uj5vXK3IlX6rMGAmNTPskOrlHd\nOKTC7j33e+4QmJQzkN6rs0GmRYioe6xSySlZiNRfpW1mwJPoiflwKZTv48Vi\nudUOe5ZOvneQ6sjLgrk0GXeM0Swo1E5Pl2Iu1MaOmDanM85navsorRQtQzxO\n/Yn2wTYr5OhMKloYA0wP0Du04Yu+QhpqfS7NmJqqETtt4SbB1Oz3n7VN/cbz\nUXzx61gRUR/0z7NxwNiIWFAlaXaJzz0HNxxSkc6v49vr9nHXsMeMItaRfKPQ\nzJZ2ydoVo86gQu7piGi8r+rns7tVXzzcMzSgB+eCax4iz+6Ty1XZuNXK0+ks\nWzY1gEllboSxC8iYzNtmEBSwpppPwQ3S50LEnr5uJTFeh7f0mObo5HVxdMCl\nadoonk87qNLzGW9rh2EFFbXKoMjP7q10GF5AB9AgsZeCa/808mg61lPLX2Hi\nGtPnAREX/YWKcEWLf4eHwwg2uNmIfI5tQJnozHzbaaalpwTzkDTmdTqM9jcJ\noLlC\r\n=idQy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-feature-c2dec4-kk2rao5h_1610985730118_0.23430211505930387","host":"s3://npm-registry-packages"}},"2.2.1-test-6ad9c8-kk3r5w5u":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-test-6ad9c8-kk3r5w5u","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-test-6ad9c8-kk3r5w5u","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0b8b8eddd4e6b84128b8a5d87ab403392db8be3f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-test-6ad9c8-kk3r5w5u.tgz","fileCount":309,"integrity":"sha512-FIkExD/3YaxlpGIemEatRXScDnEnApQTMzm032G+nX3As2IQuorvl6Rd1YnZr7xr7d9VTcs0wVfuWaDAHonfyQ==","signatures":[{"sig":"MEUCIQDBJrztmYmtHfoqo7+AS6jWFpQUQUxG/0C/poPRY9vhpAIgEkLdlkoxb7mViDe7321MmXdc8DiPHkj8Y28G9wPoBu8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBpxgCRA9TVsSAnZWagAAPrcP/Rz30+6e61BrCLljNd8L\nXi619cMhEi38AW0K6GCJJk1xxedYCFfkDjOTJ9Gf7wqf3/1GHfLNHZRUKjTn\noRjCr17sI/JDQ+HIsQJa3aEMI1hX8aorKoP9NwknqOA1vt+zHvfsITP3p0L5\nA9TNyxOolETNyXGzlQZP8Dv8u4nb+jbA7+JaGFZ9qTwymjyClXfLvL9t8g0W\nQJcFu7jzuXul1Myid/8aofc9sIO67yY0n5cyqABgG1RbgwNtmvAoXVkUg6lQ\nb/T5xCv3DD1VLyA7YLQ5yCJX9SUfAvDEfAn7OiUvQaHnxthPjhB8EWnzguJA\nb2CLKJjIvV6JZxxYYq7d9E90yqfyp4T0K0ChdsXVHGUcr0AFDKCELCD7Mdmg\nHd+NICHoU6JraD/XAN6zczwfCQT2MiMT1k//NpGckD/NI+01EqZg1n2LNLv7\nwdqzd3FD701CEkZ3eHIGPHde7+U86CPZtMu8BpPtvZGTpXH38CpTkR+ReEPY\nNWRzykcnu182kBkc/Kx+wkbaa+GCfkcU2OgW4WdTUzEilNwfTPaT+uEzuOVU\nIjBdk/sUbyJlMbs1XQ+ryuyjPKRaR6uYcNyEdW/XBAbm9Ow9NjjA30IxKG0c\n4acUNlnbRU72ox/+r9Qgh81NEn83P4AE7LramEV2XwpLvJJcw3KMNzROklVn\nA7L7\r\n=uyCB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-test-6ad9c8-kk3r5w5u_1611045983777_0.7460032356655248","host":"s3://npm-registry-packages"}},"2.2.1-feature-c2dec4-kk3rrqn4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-feature-c2dec4-kk3rrqn4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-feature-c2dec4-kk3rrqn4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"759ff090bb31aa2cf0aefbf8683272dcd534a693","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-feature-c2dec4-kk3rrqn4.tgz","fileCount":309,"integrity":"sha512-DytQfIIYbdCbFcRumJG08smtQsshtVn+Kk6J9AyxQHNXOOBxdRFIGl+OcX8qPT5bn9G1QXCnIQAYOJrq4lahTQ==","signatures":[{"sig":"MEUCIQC/JRZ5v7/KH+2AgeyqIqQZr28rwwZS6Wt56BJ6wNWSHQIgJb3iK/NqkoXLxMXoK8dfRuFHLdiiJDmo6r/V8HF6nBo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBqBRCRA9TVsSAnZWagAAWrQP/2pSBf75IUPkqPDF8jPE\nK9Zzw+4Y30cSUzNSpBFWoCDa4pqFagsMsZvZTnh6KEEoaVTsSsIXvSbXUhQb\n2238w3uG9+MnwKiU5jqTRXWcBrlSJKQPHFs8xebMu3DRpyNseXKLDGPRuaQL\nR4JkPccm7sc/oY7mwp05wHpeafhB2TEfNA/VcvtJGa6aR8lceScr6+utVFNf\n4rahhMBj82OZLCs5HPgDVLlGXDR7SDMhXzZPrxiRCSPo20HcDu/cEfm/YoBX\n8VzsHA8pS7qyICsiYD2Xb1g9+roJDMt/6Pz3m3st6JtY3xnqqEKZYTLfNrNk\nk9HP+5tOW7d/oP0BtpBfK+Lno/iMhRaQgu0NLsypcOiQbyZeP6jDiLrIStuV\n0ttyH6JFoW36n4bZtioHZS6lXaqVEQLZaFRKBMm3wJCaQMzBoC1jY99O/7r/\nYUB7xozxhmpc7rZOD2RyA4CoQ2Qa37lhpY8Mmk2CNvqVauchdqphzybfLcNk\n74oNa9owVS4dhbljgYjnPwetMNpuq7BhZxWX9OoDL4Zgkw0QlNHi4Dcwbk/D\nknh/DFfO5dF692EnXGDrGY4NS9uvbiJCs+ri3K7iBbV+BRxL7Denu2HsVi8X\nAPE1O5QSxSvHmtvcCOW3WeHdyzBYSy7gXSTb7+iTmpOalm7l+YBnHe46n776\ndGVq\r\n=uEyJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-feature-c2dec4-kk3rrqn4_1611046993401_0.09562948206824529","host":"s3://npm-registry-packages"}},"2.2.1-feature-c2dec4-kk3s5hrq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-feature-c2dec4-kk3s5hrq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-feature-c2dec4-kk3s5hrq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"be776b7894a01656f21c63608e4f01a60e954518","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-feature-c2dec4-kk3s5hrq.tgz","fileCount":309,"integrity":"sha512-saUZgQmhz0dJ0cH72jBHMI3Hqwh1G1q6baeDqa4HI8ohhmrEicG8e//mj/1BT/QZNo3VyQuenK6MzKk1Gqrpjg==","signatures":[{"sig":"MEUCIHTJcVeZ9owUboFcTIGfgBKpYaBPhraXuDPRZPeWNAB+AiEA2kgZ68RtMtbBi56d2mL13aUa/M+aG44zvoRObtuj8rk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBqLaCRA9TVsSAnZWagAApIkP/3PuDP3+rw10xcd9ziHg\nkJZ8JRImHXcmMWaELn4KS438KtiW70cGWepZPyHunnlHT0VJnyC1I4XLXWvG\n4bE7O5Tk95RaNINU/1p4hctt7JIEMZGpFQQCO8zc5q7H319+WM0ZnYI/BmvM\nSNXQ9zXQ4GohmsZDpnODcWr6tRNukfJ2XMiY6c2URO5f4O/9HoYnfurs9JGd\nhqhWh4AkoKtd4D301vyWvkJHL/1LBxHUHJNsdpYOLbCeGWQ1Iu4vE00cbrlg\nV+/RctzGej5W/PACQT+d34AYShDzmlaxS0FA0ILs9gic3lCwWlHK7Liy6TBg\n3svJNEzDMccHW+VR/eS4RgF+I/FRidJG7XhkR5wrFm1VqvoDHjKWm9cZlnVD\ng8s7X0qoxsBsjx0eDZ2izpAdL7pI1AURifp1McEd45k9ZVk9fslitbpgnwa3\nezw84cXeXUJgtQtOTJ0rVwYLnflh3B7HCy4B/HrzY4jz9AYFv82J5yM/XjrP\nPdEWxaK4PIeyesKaqInrtZcFUCkWqiM9wAKSx85yka5JYwn9F8AfDxDaTKMp\nZ7h/X3LzqClcmmrCJLrSHhmePPlgPu7aDD/YQeX7j4NRvpyNuC1o6WBRyGhi\nxLUEUWm8DYJU+2jX/1eFGBjWrBGOGVyjmC285DbrIsSMYODMeaxj6xJgbIdV\nKmOq\r\n=dofK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-feature-c2dec4-kk3s5hrq_1611047641810_0.43659723720821386","host":"s3://npm-registry-packages"}},"2.2.1-feature-c2dec4-kk3st928":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-feature-c2dec4-kk3st928","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-feature-c2dec4-kk3st928","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d0d063151274a9429e9298595112c39f504dd13f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-feature-c2dec4-kk3st928.tgz","fileCount":309,"integrity":"sha512-BxmlkfSy58gOAWDOHJPIwIUFzDgbnH8PP7umGj2NpKqVcfJl0lWASN1BqiWbwGqRp6uLGHBAfGB3461JaXypug==","signatures":[{"sig":"MEUCIH/A7Sg7PgBoPoSNMAoctJO0q9oUaFcOklvdhicH16isAiEA/0VZe8qYcOGJsk4kz2OGz82Ds9P4rrVBgMgtwJiAGDw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBqc3CRA9TVsSAnZWagAARU0P+gM+o9trgSD2ZFxGKNyP\nivq7RGP8dgtgF5ghx2so6j22F3XPN3B5sD5Qe+J+5k8KQLfm9eUobNqWPjY+\nCSt8lqYjG5SeiVPUntCp5VTpdF2lohftzEWsURvCHTuZm4/vxmoDMFTwx8R3\n+tKU/LCyfN0GIR8vItsHvY6IgUg1VTq2n1KRvZ2XHxCj15n4or2np/QSlpQV\no5kL3rMPxaYLoX47ITxlzaPe/7C8AUk7pUzcpGeQbVT+kUS9IuwTpnIl7ov3\nZGYHO9vfF8h1+eCwEDdP7Pr2pyb348lWQQ60c33QgMYfyQVdb2XjGNyqrtNg\nKtsTEzS070jZ+hxCy2wxl7C025OGUWmg1FaNwH0DLxC6vgkkTwqBQWpkk94Y\ntQ8tvCTIt+aAtT/uD02hAIVJ01snsfquXdogvV4anxLru8qxHdGmy3fyIrfU\ntUV8M5LPiGMtpJxLqroXbdRAcyeBfq2nwZvKyT6Ol+ZkCeDBJPI8veRV/b1h\nb/EBpTUr+7ULOdFA7Yapeg0K82CG6mY4LyOfNI+XGwqSq8Yvtc63w237JBpd\njlfMV60+nIIyYdiQw9R05ST3EDiiZXDtUgaUZNj6bh3uGVMIVZZT5NyAxDP7\nyeHofMF1zO69wLYxFj6+qSkU0sX9OkzpB7OZJYtjYDaiAWZmLUOA6j4aVzKu\nlN+G\r\n=ra4j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-feature-c2dec4-kk3st928_1611048758856_0.8690391215138267","host":"s3://npm-registry-packages"}},"2.2.1-feature-c2dec4-kk3vau1y":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-feature-c2dec4-kk3vau1y","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-feature-c2dec4-kk3vau1y","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0096bd41a55d3aa2a6c9b8bf390a3fcf89ce05a9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-feature-c2dec4-kk3vau1y.tgz","fileCount":309,"integrity":"sha512-juhK3CGJZTDE3kMVRI+zwhcR9ns7ckV/HFkNB6NXLZt/M6c4pwdpj3KeiRsC51lb1JaIGR4ryPK9WVxXNHj5Sw==","signatures":[{"sig":"MEQCIB5UeIgOXMk6jMN2/XZ3eHCnD52nkXnYJ+Pes88yRXFwAiByrcAg4mS67eg+P0tDM4aOFyD3+uGCYkgw5xZKbfloGA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBrd6CRA9TVsSAnZWagAAUSkP/jMe4vV25ktGAytOlput\nGZFgv42iZLGxHl650ktKWde6z8eGmH/sHohcvbLhoeCRuXiMxFKChJr/u1hp\nUOfZnLtCZgI7DDIfa9nzLcykyqpbGOjU5bN8OWV+3mEB7dwqxBsoFZlpKNWB\nRItvy5ECva5u9Hy9ncG7RqvYvme3KfFjqE5bEf15dBs0COLx75dw0iXoHPcn\n1NCvW8RzFun+sCBY/VWb4sLlWZb0s2qFtOu0QCXju2t0RjKm4eiRFRb6akD8\nFIetxvMLX2SN0yZ+kYKhW3rK5rMB5QShpu+9hnMiT7MDe9jNpKDoOCyqztsz\nmbqiQLHS0k0EFmOwoDwyOAzDWXjgnwYt+1WR3e88wbUNwjq/1lAfE8BE77L2\nzBjT8hJA3v9TmgwkJBOV5EKWh+Qru9fViDACSke1C6MyLlnkpz4h/DQJMj+3\noO0PJ/QupEOzikSY74lRSxKkHfxNEyJ9Zkykp3qNLODjLIyh9Z0ZwMlnI34s\nJ3o3cgTePWo6XUBACfpAPlh2SsAFPi/pj1LmsvjKknRASN2UIQXFICWJonyP\n1u2tMu0iWDdlILoae9CbRIt4qky7leQxYvJ26cswv+ESS5aX1dfobhniE0wg\nXWlbEFejFUJt1UqqyrEjdA08zU7AoMoxYyYdv0tihzgtRtGhu2vBmvGk3X5Z\nDrzJ\r\n=We8f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-feature-c2dec4-kk3vau1y_1611052922087_0.5376085987858965","host":"s3://npm-registry-packages"}},"2.2.1-feature-64b84f-kk41b3t8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-feature-64b84f-kk41b3t8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-feature-64b84f-kk41b3t8","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e308fc1c886d0e5ee8546c09069281cf91967238","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-feature-64b84f-kk41b3t8.tgz","fileCount":309,"integrity":"sha512-4bGVRp7HG97enYExAkZqQkp0GcxP6vZOx+OEqNpJX0VxyVCghlZSG5OhPXZ8nIlO4714DPcf5niC85dafTEArQ==","signatures":[{"sig":"MEUCIQCiDvI8nJ6ljPP/36qVGBVXexmAskUH9ZYWtUxc/Fa5TAIgeAcm7cavgRzsfi11lw+sySCDy1te3CcN/OSAAod0jwY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBt7mCRA9TVsSAnZWagAAhz8P/1W3EptT/Abe+mXaattY\n3hx5kSOUqptN1ScxmC0bvaSvtrtl0D5HIqlsImDuzpuYOYj23Bq/FTVKrFtg\nhJdq2b8baKBEe+iW2bNiUUBAssVxUrdCxHONvrkjEC3MvJJHy2zEJelACOJ7\nOX57Qxbx1cAJgeak8aMuYlMxPn0DjQBHi99tJ8rTpymWQxMcJWL798a9mPe+\nwLoR68xI6jwDmv9VvA1M7dWIGKXz+oo4fThvlBqHfBF+hr5TsxFgu3INCu0+\nTntM2ovHDLJwLo+wzYU+jkQxMCjMpA18cik1sC9dnu8cUFJgV7h3smtOA01l\n5ov+vc6rRFukSoJblEoreGvCPvhDhK+COwO96BkNtPOEq9Y67uaOzn2fuFYM\nr79xSgSr4rSMRPWeqhoJlA0ItXvUjRr1OIGKaKt8x1/O/w54gRfIKCaWJbfJ\nE90sYAvK1cBBiBk4c5+bIa7bHW2bSCQMGXY/Bql32eQj9nGZPaLW1X6FKxxE\nNk7ezBebrJdR0AdSRDC5QXJB5qAGkrwPjSqRt7e6xTvObBcaYolZRuYgCqqB\nYhk33kc+EYezP/RFgP1oaPq3uflLrZuo4hEHtMa3x103C8h2cE9wQLdV93+d\ng568y8aamfEUOmNpBpDOj0FnRd6EW3Rp6WsecYO4XZo7NRuuhgXQbOJLb9CV\nGOMq\r\n=8DXy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-feature-64b84f-kk41b3t8_1611063014051_0.90408219200553","host":"s3://npm-registry-packages"}},"2.2.1-feature-38812a-kk42o9z3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-feature-38812a-kk42o9z3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-feature-38812a-kk42o9z3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a5f902ab551297cdde6391afcb575d3268056510","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-feature-38812a-kk42o9z3.tgz","fileCount":309,"integrity":"sha512-tvXJ4WDR+6PtCp5YtO9q/UwSuGPpiwY0oeiwqzxUfkmVpnvHFaFvNdBWClrDevc/IwLU/FrZlY0AF/h9+zcUVw==","signatures":[{"sig":"MEUCIQCrqWV4D4+EW0E0ar8xXjy8FgTvNr2kFrWb5QapFuFPzgIgFys4YDd+KPMxFdkCCRAv8+0W3TfTOnr3L9LHX+6fqS8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBuffCRA9TVsSAnZWagAANy0P/iNTJ0V8Tkmt3xKM+ckX\njJC2q66NdR6U5YTrY3q+X1FArzEWPq7DG7Wk5gCyuJryNC5rj8iV76C4hjbp\n8RphIi10ZEXO2S7eQcLphKmPdij0b0JaTWKpbWhXunSil3pigOrYAB1BM1Sj\n07e8bHa+EM630gkCvgWPjpc/nWXM9x1pSxDzqEYPtPe8nCpsWi5t7oyzZjTn\nKkp8Zi3fVUkc29XOd/SNEEJjnY9ioErzqflEoVeQcGQzzWcodK3Q9mXrfqpT\nztyskKGiNnOjz54Mg+UxMHlcxpSioIChvmBQ2Sktw5FYnTJfxkRvHgPcq0N5\n6w0D+AE1KOoEUy2gzO3CDODy2XWi6vsGz5+mIDOZnvYVEuGh1N4MF+V7ipF/\nrXcdaTpVXOEgoMQGyRHzMp4enVE+cI8G6A5NgxBBoHrqZqGFvPg/tuwqygMF\nYRLPzOepBmChvZRiMy1eiZXqNrAS8TMd2+hiJiSYmVpQEna1gWUqmmpioGGy\nWHLvvXv8M1jIYZ5LY6UGny2IG3cDOFkN78lXwqPmsH8c3kUfFX3E/unaNErq\ng2nIaIabsGWZOVIHTwrhD+A1dhpqxK9fwY+PZE4xHzCQ13w52sACtSdydPBI\nDzZ3iZeyLTjs9Y9AljB8IHxwGXBLl7fP9ikMYEUI1xI7v90LGjXMJDtrtrLi\nONzR\r\n=4a/c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-feature-38812a-kk42o9z3_1611065310818_0.7973972023032363","host":"s3://npm-registry-packages"}},"2.2.1-feature-500c9f-kk579wye":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-feature-500c9f-kk579wye","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-feature-500c9f-kk579wye","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ca513f3b1f64fa5b14116c2226dab456ed36f10c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-feature-500c9f-kk579wye.tgz","fileCount":309,"integrity":"sha512-ETmZ+dYLmCVCBKIlRcUNrjXVBCYngh6RsH8LadOjauumpAPVx/cnyOTx4i92Aeozsbi2/r459zIUQwGqYGKsGg==","signatures":[{"sig":"MEYCIQDp++BaL+Bo87hVoU6oSe68TjELi3mDbMzFGwTw652iUAIhAI31VO9gcN241NjWIjcRNXM3kGiYxSzzm9vtm0m60Ly0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgB/I/CRA9TVsSAnZWagAAEFYP/1MDmy/9L8TfzlmbLY1Z\nfEycCBD069tpdXmfgLOkVqCmHTZ4p6zTKpL5Wf3yeaGeaKKJAyo/l5GCechP\nddixExhUmR0vzUjzKmG58Nt5T64yl7qSGfHMKEB+50K6KQq0Kb+CP2wYKxCL\n7/Xrqn2bZrZIKUotlWma/qaNZm9ADAYbeFhiPzD1pzAqmudBB13fBgfNR3mb\n2UF54M77bA21het7m+e7hp2SkLNyewGKErtYuv/z2hYF/yjIV+Bx9zLnUgOa\nAGtYfKeQ0v9m15D+4uMc/y29Q40CJLgozGtDE3yTxfYaPdHFYPWUjHX5x6ZQ\nwLWcqJ50qqblYNp7t2plI2lsD6OjgeAMeo3P+WDVxhDY7od9gdD8r00g2Q60\nE3M3P5B/md6TsfBFmFfnp3ujrapFIbtWnEI4BdJbTEibd+FVISpD/HRrb+ET\nKIcLxYAx7XZ/dps0RD0SD2ikiY5SNzT17EHqaL0t6Qqmau/oeHOoQWasge9B\nb6OscI5+LigpienSlUoDfW1niywPnUXtTheuA0gN2AY4zQAzjwC8Lbw5ofnM\n3wTUQf9WdFn7KnbZbEYb4oeS6d7YlYrRgs61JMcHYMvOG10bIFAMCFreTaxD\nRdLgSJx/T6bgjxRMrSkG9Wlqq2i7m2FAfsS8x2ykdHaMLI28KVR5LgrpRpIT\npuU9\r\n=1VkJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-feature-500c9f-kk579wye_1611133502777_0.8186850762240645","host":"s3://npm-registry-packages"}},"2.2.2-feature-628f7f-kk5aavzl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-628f7f-kk5aavzl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-628f7f-kk5aavzl","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ce70a9b4641b37dce878264139ff2a7c51e7a7e5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-628f7f-kk5aavzl.tgz","fileCount":309,"integrity":"sha512-4St5iw/U2+Qn866KuV81jtjJIvg7GAg7PU71pfoAfAA8HzgGJgA3m5BLuzmDNIbg/vKD/i+kB3ZHfn8NvGGWeQ==","signatures":[{"sig":"MEUCIQDq3imppm+dTCaNIwxhIkAwemzZyIWhn8maEz0v1upnFQIgUGm1Hl674xBrYumeNmIWlddNTRHWeOY1emrveNSv4mw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCAYlCRA9TVsSAnZWagAAqLUP/2+F7mbkjOLcSrI+6w+S\nRcyalBceF3jp62Pk3XZTwIm+riBa3jKM7SV+tl4eTAiKufkMKUWDXScAGsUd\nI8bxTjHjcVW9H39SEtOksAaocH30J0+wLYXPVnuthKKB/iF2gSqq3BKVrzXz\nc2GBznNXkQQ9uNNcWWzWSHFMJwuzSuVjCZlQS7xVDPbYTm+Vi8NuOq0dKYnJ\nzYl3RY9cqjloyocvvNEYUui7zL7thZnpKKyeREiM4LGiivkswSHeECyi6f9e\ns12m7oB9qkUf9+tVM2nKZYK1v2e4VAXWgW9PMWLYybZ52o1yOdpUc+dL9eYc\nKK7R9DQ3JvluVD+jVivokXZhUrxlKsuuefC/YRy8PVlBLcDZkvHPpobmY4s7\nKWdqAPvYSsh4EKJ/n0ck6Jmrxp+m8ZfgJ5VgAlLB533rUxvpr99RFbr2VJTC\nkqc82XAm1s/oHBz3VjkYi31rGVN7YP2GRZf3HP7SjL4AL3GSgACbz9ZjWJ0c\n/h3c6LLaLoQ/0gazxcDX2T5DP2D54px6ViS85hayOcHNIsADUIjgqnp6B6s+\nnVlVPo5CcR5RPWNxgZ3CXlH/IkjhJ1lZHRiUy0pJG9JdVpteF4DSgAwtI6Fx\nz1zRHvthntWyWM9wK+rCr4cVTcZw0hN9wbmzdgcwYoVOmOrqeqieSm+CbVvK\nH+m6\r\n=Jih+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-628f7f-kk5aavzl_1611138597094_0.5732557928413555","host":"s3://npm-registry-packages"}},"2.2.2-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0324aa16fabc6e9d16c03e3e56592d5f516296f2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-alpha.1.tgz","fileCount":309,"integrity":"sha512-r+9crLQyQqSjpmw7TWMIYElIlfNjphjuqCaoTwY+izh3rLyAiiz52LF/m0LShRqbhrZVkBrtMuMpm20igjwb3w==","signatures":[{"sig":"MEUCIQCoO7Ja0ygq0V7htdqNXCGs/DAERaQk6NVWPadd8Cm1rwIgEP67bruPMECoUIAOlSQSJKT6xDp49sdm1MzOkO+oVpY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCAvpCRA9TVsSAnZWagAA0IcP/2RtkZYFgucSVhsuIqQU\nP2AL1LCYNa++LBQrpodY7gWGknPa9Aq72/hYvRjgC528tpeSKzssuFxITrWu\nRIKvlc4jqHUYUnmY4YVY/zUNzhSdP04bp2LMg9Cb7ryJ7vPlUtNWwspuNiyh\nhDETXRe12sSAstQsN8WRIM7NZkcSXvW/GHDI+bxd0pb1T4yEtZU9zULTXrRl\na/WVFbbCHCRH6z7xu6p4aQy7WujFUf5xvKwQE9s3HO3NhBC1NLTPDQ66A+aF\nAK/5RnuMwX86sYY7KWC7o5WB0u97E6/b82TxBynGUVlvrr27MjKP1SX2r1aU\nNOshIUERdr6kXObFsvtnU0Yvoiurkj2rwLnpDH+MiXwGcb/tbSrK86B2a4Pf\nT72T5kqt7Sr2F3UeZhnorNVsXezYg8Qb4lP/jFtVVpj3MmQnMsTR0GeY0Cgw\nEP0UmvVXYcA/vXZNiCBNxWmXkCIVlns7qsgYXrYCQc+TWtPJvs19iRuG5s9T\nKMt/yjKKRoTabhrfqdY2k5+lruYCX9ZAodqm3IWfq1IadsMhopEJE07sJLTj\nfX725J/pzkVmIZu3zFG1INu4g/5KyBVVWkC2WbIbIO/iQQ9TtdthtMseJ7rj\npYmGuBDbi4iTfnDtade/ZTRjxKdTB/n79UiAvPCqTdvXOZrICg+T+LqHjhJ4\no7oj\r\n=boLm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-alpha.1_1611140073291_0.44622710550202194","host":"s3://npm-registry-packages"}},"2.2.2-feature-1498d9-kk5dxaxb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-1498d9-kk5dxaxb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-1498d9-kk5dxaxb","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a600ffebb201f482d19f1fcd1602c42e81f0bcb7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-1498d9-kk5dxaxb.tgz","fileCount":309,"integrity":"sha512-wvgOA3zjODGHP3RJJvg8EJFcvoKj2cKiywmtzzboeNBqchT/Nwg6oftxyBIO/1gOYahqY25bgao6N+dQCoFvgw==","signatures":[{"sig":"MEQCIBz9bMUHbRhqpNqVW2Vp+K1TQPAbdbOqJnCfuX7nknsnAiAb2dUDjaKgaprdOo8Ie4018VmZb6CEVQQ3qfp8rd06Yg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCB3hCRA9TVsSAnZWagAAdYEQAJp6BEmsCpwWbgG/5vnL\n3cTdrCve8wQSs+lmWHzwxk4w+xIP0NkYABk27QWXtGbgmSEQkda3oZ/m9CgB\nAEWIjyzWmJxF2SALbg4AGQSg02Z+ldZPTXFSdmHrmRxWa+Pz3f7KvuD+1xbp\nz2sLACYOQKm/5PyYeKgGjAMZVSL3zBOiHkMGpCCbtLmyo+mbQfa+2gA3iz4t\npDngRS/IUn0LpABQkmDvclH6rjueoDrzdEbHKinJVkdUYeFxb63VnUVI0L0K\nOUGR+s3A9KeOdHoilSrfDuiazg60/injnfuGVHqRMO2RDr3Cjn2ECw6ozSMW\n9Q5LHtr4n+UUrFDg2MmfSnd5o71IvFFEheNWqlvcleqpsaKBLbYL4xfRmhTK\ns2tJAt41/v33EBaiWYkI5vj4OQMOBB2jPnPdPr39hIW8k1+QMUiBskGsGHDB\nKO2Ap9aIef7MyN9Rof/IyJPwgm/ON3RezxKWyPfD76GLH4kMH+4WuvxydDPa\nMJ16t8EzxO5Vka6i3NQSVHgX13Qd2aDeht3+s8UhSxYbyd63uiT2PKyVYE5j\nrNmRLVCYFWvNIS+BK29eBuMF9eZRcbJHMNhoE3qu9PTJsLP3BcHmwX/xD9yB\nH6gxUyDhbjfB3qbxwVFBmk+kPyjPn4+7mCQwJL6YX/sWTfwIwnQ/twQ7d391\ncEjs\r\n=Ux3j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-1498d9-kk5dxaxb_1611144673085_0.6455839774340137","host":"s3://npm-registry-packages"}},"2.2.2-feature-c9f04e-kk5fuyji":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-c9f04e-kk5fuyji","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-c9f04e-kk5fuyji","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c80f500dab5789e6e3267a51052aa77a91042161","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-c9f04e-kk5fuyji.tgz","fileCount":309,"integrity":"sha512-E0apKgsva6v3QMkN5WwnlDx0xsoCVyrwD+vjjgF2LSoQewNxuwHHzveg9Aizo5OxlNeJvrrfVcBd9dEovDzBcg==","signatures":[{"sig":"MEUCIQDQMrHx7ODZz4ah8PKnEyivCBZxAd3VCqMQSGDU10xZ7QIgK5jhtg+p/JlzkV1soGauObUxifo311JxkqLbNfE/9AY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCCqQCRA9TVsSAnZWagAAAc4QAKScR9cLonj1bLea6cx8\naXlZ6h6+IyUZc5kNgaWXHrFNKCtndnBJFDDMQiB4Sff/j15BeLGvbU7lkQyn\n7hu7pOzULUsVK6Lgvw6oJa+xfd+wMVxbkLtNFexgYRfGcPz2SMfoagnksbpb\neljUhWjhcwZBTDWz4fQvYtNiV1oNDuCrhN2QqrKWQDiZF7GRKx6PmdM2aiY9\nshcFLb5ecD+MhOAU5P4cw4zwbtH1czNwvuXCRwOscvPYQ1l7a76lLe+llEzA\n8qYmA1ST6OTguwKlLL86dioYWjOlDniuhfW78imCW4yj2wvHR8UgrP7k0j7H\nZj8CjEnAmzm8JsYLoXw1uK9Yefuxut2RaoFAgg5QvlsHvh4DEW/QJ4Ombgea\ncjm2EbU05O5dNsMMObC/N7N/0oT20lUCQwdy+DKUI40/9SsrTZweG6BfbdO1\nhllCWBhkNbcKSGYwXuy5eivaTk+d+Cfpbka05dHiGl/Rg4YTI7VEJKnvCUab\nJreV33L9+jIQpYDENQiH1yhBD45zZbX8B3ECoOpjy+l+pxctMQ6AuLbaU69r\nlnbmWFB3SGGLF16Oyz4go6dAhxBMUhXJRH7VV/q+Ar1q+r9jFHqLwwoLvfZu\n8BAY4s5iWrWTqIOKIHtN4XbdLs0uThmoG1fhm+9LYAPmCX1B5qdXEJcofyGC\nBOcu\r\n=Xpo3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-c9f04e-kk5fuyji_1611147920076_0.47072704399669574","host":"s3://npm-registry-packages"}},"2.2.2-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1375e3a7300de9f982aadd44c35510c8b0294f80","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-beta.1.tgz","fileCount":309,"integrity":"sha512-lqjyOET/266tI2VzksSWj6RLMf5Xi+z8aPitR/LKIRzSP2+HBooWC7XkhNBBvGh991WFmCzoCGI+RcFfZAJiLQ==","signatures":[{"sig":"MEUCIG2etMeEj32Oep7Kyxjg4m46QLLfOOHjOhtAMINDtgXgAiEA/tiKhqAFxkAyV3evSKtSw2Lti859rhho/p448XjV54s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCCtBCRA9TVsSAnZWagAAgwwP/j97Mg6qUomvHkcd/X+G\nE4cF/vCOYNE56fJtxkgK8ZSotfjTSxLoWS7Vt4C/UQT7RxFdVd9cIl0aoVRK\nCEgxWS30SG/lUf6cQXcl/mzqbMjNLHSIlkoZlqzDAquSRuLtIAMc/ClkC8f6\neN9QoNdbhy2vqzDHvFFRfZlo3ICy2IQh36wzErsOIwxUD1rvrGS7lrf8YsO/\nfGOI8AAZ98m20PXyiMOFoHjT5/EqCdTBgcc5ngpXECHGxvOBwFiRUtzJP8d2\n3foq/tS8ac2H3JUnYm0YKky79va9+vJA36Il17G0r5kaa2ylWNBkDKsIaJ0f\nxIE5ZHG8tYLME497xiLz14yIK5xTEe2isud9j0USCIRv4pXn+oeLX0ITnUai\niFLrZdKks9c9KQRkn9enfgyO0V71sH3Q8lRjnPc0SddWh0KAMC4V0F0hqRMU\neGYAqKcPgwW39bhHtg4/LZ2ysuKYVMo6aR7GIU0mpmZqRFwyG+Y+fuAh7Ajm\nkucBxt3XQMWS0SiCsJILVek0DJASNwvmJo5lcJtQL6Wkkxbz3YQwAvnUFJKH\niDWoR4iH20E2qJuKtQYaKMiSxsqtQR4kWkZA0ybrO8v/8mDGM4XaQmB0CuEU\nP68gzHm7YZC6FHA6fKRdwbpRsp8gCyvniIQIQnEzD4bbOyvraSTB5rsk+KdB\n5H3s\r\n=KXfi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-beta.1_1611148097288_0.8098640146801404","host":"s3://npm-registry-packages"}},"2.2.2-feature-c9f04e-kk5gazgt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-c9f04e-kk5gazgt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-c9f04e-kk5gazgt","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"352f12303417a9adf98995b7a2e81758de58960e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-c9f04e-kk5gazgt.tgz","fileCount":309,"integrity":"sha512-J3nAlbhhafUNBhnfUiF0mtXCxmw7Hb5PyYAtpgu8pVr4nvHOVfSG5xZFaJ17ayiG6fDC3pixUe4ABwi3vbbdiA==","signatures":[{"sig":"MEQCICVsr9uvFJuQoJT5vhOhDHFzoSa+5n1mFArAulCWYr3tAiAQU5TFIQtT47dzPBdIapc8oSjWCZLF+xNn/VnPsR7FNA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCC2DCRA9TVsSAnZWagAAvq0P/Ai+SDQNId4w3SJfwnXP\n7ErAp+W5GB4oomYpq8AjVgOhCGSdEV9sbZTjjm2Wd2pBO2Cw42qbGwuPeZyl\nc7v7MfkHl7zLC/Zxv9zKN/eJZGIpZ8iDJY5OTVcIFORQO7o5OYYWjYgrO6vu\n3laNylF5ib3d1n92ytXo3cSp7C3IbPd9kccTnv3TD95JknEbnihmCQfVuRmg\njKVWUyk59TgQrljGX43uf/0VmtHeAkR7dwVL7FwD/260yjJApbyBizJLBkPP\nf6z0Abh6MoEzEHomZF2wDnCGfXnYyPaXGNAGv8cufXw+l3GgMCk7fklZBUzk\nauM3/46Mo7M6hg6UlWSM+FdehJB12nqqeAzy4OjrKOYAA2L2n4YgxgzVMuMn\nv6gj3GtqBRD1F4bQ1bWcBYwKdVd7rieg8mgreC9np1Bedn4DuTXIbH+gACbw\nCKGACnLmjamy46VZCPgPMLVPkt/y+nbx0KNnWOTeAKQQvdXr5r4n6wITrOD8\nI+g1wtSUxPgSNHTptsGtkwuTlg4wZ9Wr5/mrbwyQe2MDLcJR9SSia1DtMhew\nbWdG6VTHgpjkNez3glPSaCBw/Q+2YdQRGekkTKTDV8b4H60Mzu+2ERBQX2Ga\nvD+lE/WJBQPfPv22mHHInHCa2Ub71+glxTHZy8apAQ7WJHJnrLVjNmkSzGsQ\njgXh\r\n=mSz0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-c9f04e-kk5gazgt_1611148674573_0.42440655343068046","host":"s3://npm-registry-packages"}},"2.2.2-feature-c9f04e-kk5gpzb5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-c9f04e-kk5gpzb5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-c9f04e-kk5gpzb5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d51c0007de32ee1c30a1ebbef4de4f6e276c2ddf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-c9f04e-kk5gpzb5.tgz","fileCount":309,"integrity":"sha512-PXtAc/XS3tTXFdOSlo43eAjqmKb4onXo1XQOgp6Cvx6jSkQXESk8NaXIokeCWKd0UEB3tA/YbChPdUMqYtGT6Q==","signatures":[{"sig":"MEUCICzpOt0NPoKkIYomUPM+CBTLHkg5wdzkHNiXSsQLhULTAiEA8rIRap13mNQBIvtbzH1E86kpH0WtGT6fBx4npHuSPIw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCDA7CRA9TVsSAnZWagAAZagP/A3MjHrU2caQEKQ2CQZC\nm6qAIfZH14FldIdm/OsebeXWhJKaqSJYI9Z1hTQPM9HRy2ne+K0VueeF57At\nRg9nCTaGqfPn7QG51tzjCuTACzwhEyfL6GRw3wh3NFyhhzTbLZS3iqVQg80t\nRPThSwBaQYQN+QH4yWAoM9AWcOF3DeAdFJoSheoRwmyTqvRWrjJKGCPCsAAN\n7aWxVHx8tbDukfedQXpz9XBmmZVfW+WXY+sCihu3y8b5D1ssjUNp6i/da/Tf\nQeS5V8UboODt2cOWHYSr72FEQNg4690QxwFIDo55Azy5S2Zy2UfupvXUtWRw\n7H1iqcrwI4Yz53WpLVm9/zWHZ1AVV/++H0m/nAzLOZgWD6kmLlK137m2IZj2\nY3RcvdpYxlM/QWIzj/anQ6x+gma9Co7jayfhg6foaTeS+013h1RHfWvcK8Uh\njNKGo5UABq5c2XFRPE/vg/Yq+X7zTIwaqeoE81PBaea6wdLHXICO3jcqRBGE\nTVj2U/cNtb0DjjP0IZveRLFFYi3XCsBaYcosE0I5y22nro5s6HS4cDX8WXPZ\ntv8znBAsnd7EYe+WMhwniJi+GYCnKA64vJiGvQyOt/YAbuepzPWz/4gIpSRk\n9FM0BN72iSIBDm6fjCFvKAno9yAssiNCIN8YMFWoyYzjWhZuPqEn8UAwLQS8\nngNp\r\n=ExYC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-c9f04e-kk5gpzb5_1611149371198_0.7776441150200717","host":"s3://npm-registry-packages"}},"2.2.2-feature-c9f04e-kk5hzpji":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-c9f04e-kk5hzpji","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-c9f04e-kk5hzpji","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2477313365203affcee44e6e68bf46a2321bd1c8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-c9f04e-kk5hzpji.tgz","fileCount":309,"integrity":"sha512-XbBV7MEXCeig1tfzHl8yhJILDtOKVwLiQ/iLqxpJEQqyD3BLa975+CKIC9wvbMKCLDe3kOavynrVc2al69zVeA==","signatures":[{"sig":"MEUCIQDyxIQwz55kUblNiYWqeZrLNnSBXa1ru/TFw0+EskxxygIgQIYUy7wspNdcFmWgyjqVyCmv5hYoUcfdysh/Mx9B2fM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCDiSCRA9TVsSAnZWagAAC3kP/jeX2L4nczS5oLJynysa\nDZnyKqYLLjBtC4TTQNq3AV81TefANdLfU9EcHu9HbQ0klUjyVxhYTGT5BRED\nzxzXOtxREm9XGr095vdJTTmjMWKGjbLs2Ngj7AZcPAgKRlHRa7ZXOH1SboRq\n8EOl/ykI31z1fXoYZWyh99DJ5N+EZcBVyLcJwfOYi6TpnDPhBdMX/TjRpcv9\nhz7lENMCenQlnJKqcAXotmRn/5Fz0SxbwJwYc/4jDePzugEuSHyb1Fb7u+xv\n+mztkbbSeaGfd2iBZ0z0DG7kbT7i8cIuimzGVT4FxJRqqrsGJvxtPRF6lTA3\nFeSjrj+x3bfY7Fg9DVD2ciGBEs9Z2CC1ZcvOdAFM5j7ZQzpQhZQUSTCJ6e8i\nNTjzdAjHMXinVGGOff0B0WtRmEkzzuguhkZ1UGSwZAFvM6cpcGdiers/IIfF\nMm7ktP2F2KrKVn++7czLKeGJ+EIOelDLizUVTw9p2QwcUoc6H2bdS0zUSsaV\ni6UqGr5GVcRoBwLRPtibC0r77/1EGJtSehX/vuB8c2GNl9XMUlvoI17cHDZL\ntpD68X+HgdKQZbKzyvUam48jWSdbxbKRQiTcKi/V6g0+xkKkTBvsWZKn9pLf\nL8CvoF197/U5RvMqZ6HmtAr34RU3omhJdiHBU4FkloVhs6D6vXCaPcIiGc1D\naSnL\r\n=RFJ0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-c9f04e-kk5hzpji_1611151505399_0.9451427936748316","host":"s3://npm-registry-packages"}},"2.2.2-feature-c9f04e-kk5in1qj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-c9f04e-kk5in1qj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-c9f04e-kk5in1qj","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"342eacb525195762f1fd77b8530eb4650fde6c8a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-c9f04e-kk5in1qj.tgz","fileCount":309,"integrity":"sha512-/VrRYCscyj/GLhkJ9sykvWsidWVpYqlFm93uhWsbXHMc+ANhFgIpx2fs7umIXPcnzb3GvFP9MAaIxS9r4AQOgg==","signatures":[{"sig":"MEQCICxipgAJG2qRgtTcAx4hWd5T/BOzbtctH2ldAd1BnvDnAiALJPTpER6UYB3t2dRVYAOKEtWWDUDptYOC3iPh5DRinA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCDzUCRA9TVsSAnZWagAAiMAP/1oO5T++wtitceN253qg\nQQRD3oO9uKtQFBBXtbMC+vFNq7UvGn/+SYMzZ/iwfC6o9a0RMOozxfwFVI/e\nqEiTfEWdBnVfsDpwM9QU7uyZw3SU1fAYsmO6IcVjy+DtlesmKm37UBTCjMYZ\nGEVS4bVI4PQzYAYWRpReseOCUFAO8AlWWGfL6ITns8E4UGac4DOe6gtZscxB\nIIiIXBsf/NjzZnopSU6jPEVoon7mfSN2ji/qyBTQbuDKbenmCpOhTBJIL1d9\ndRjE0VJkzgGlvOUeW3R+UrZTCm4VvcpoYCFrVNG2c4Lkn7hq3Lt5vEQfbAyG\ntsDy4JM9XX9CYxRL6FTlCJjLC7AjJtYXzdB+yuMz56Dbsyj7/aKMxcz8dlVs\nQOuBfkIkme1yQchdyB2r8+kTWzBdu6ukArPChNCn7tMZHUedP3whc6h+2m5e\nDkPiKMTJAb0ptErupo6OjLHz8/wvnYkYHTtA5tyGB11sru6R57SJdzg7GsrF\n2b/ekdJxm2KT3hdJ9h0gNjAdpLIoi4CUfdFF+8qvGkuQE43/sRPcMAts44lr\nrGenRxY4hc2vkGpFVmSLbUPnPjwGyDCHxfuSA8TwI6cbak8bV7osRtruHxok\nk4IsYySPdVX4kDB5/8ZhpxVsgLAk6GwaQGyBBATwG2Iwao4eyDEMoVsOpwCN\n3k9w\r\n=OHsn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-c9f04e-kk5in1qj_1611152595394_0.4552581848014352","host":"s3://npm-registry-packages"}},"2.2.2-feature-3a9f00-kk5iqtln":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-3a9f00-kk5iqtln","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-3a9f00-kk5iqtln","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6a1cd21dd4f4be356ae0a134151830ef663691d2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-3a9f00-kk5iqtln.tgz","fileCount":309,"integrity":"sha512-2VPT5mIuz2nt8Iw5VDmcbyTvJWgc3qk+hBZMMorokh0nK2rRzEGGZJ3FkgUKCVqLIv7IKNAmVSo2vxABJab0vg==","signatures":[{"sig":"MEYCIQCb6G4vwVxNmmQ6n7bVAGmOuclOuQssKTo6UYmWQydkDQIhAPnDEbOz6kG3HYb6YmMrYhy3vjkyxjwWH7KmDvf+t/+o","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCD2BCRA9TVsSAnZWagAACJQP/it0rcAulvVUsKFiPumQ\nQ1hj1z0mD/VNs37LiMCz+TdOhtSZYuF55VGvbEBaCAeIMzKk20M8W33n0ydH\nwz5Wcy0xlU0W0BF865YqkaDzCQelL1IX70N/Jhkpr9D2X1nvUdn4pBkJq087\nSGLC2RUpREHRcZE0wNb1dVZjYPEJqdrAGMaCx46BY9KnVVtaiTutY36BwUFk\nVETcojVMYnDPWnPQyabois3XH4djjeenL/bjQwz0T7o7I54sSmpcEbSHa789\n2kfuLl19yon0OBQqvLREilmf0+QAjbqvttQQKMXFPinbpqIqqoRH+XUVUrgL\nGUq2NlwXwUbmjExX7YDWJDAu+lOPmYAkaq8zOXGOZRg8BTB/ErQBTVAMjQwy\nYV0sz7qqefiRXS06EXNrTKMFtOVh5+VJ9jjBlVb8tHB69yirc4Bmy4g9zF3/\nbAbN5S60W4E7pfvJZA8OFLs6wLsbsUWQaqGs703bYDvCvYmaNgs+Exr6xvnk\n1f3lFZIKenqsZeTN+hDmYwhzGf2lMkZ6kkqnKUoyZ/fUeZOzE5MBdlwJRL/w\nNXJljgT0kRCOHA5oJJZUFTkOkuK6BiP4+gz1iSzIeH6p8LzrzWeblFCN+omW\nndYOnKG1R11FndfgJTvquVHvft0R+Ql1NExHqRBOGYLIccBF+hcdvg9gjwAy\n2xLs\r\n=6ngB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-3a9f00-kk5iqtln_1611152769394_0.01785114261215881","host":"s3://npm-registry-packages"}},"2.2.2-alpha.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-alpha.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-alpha.2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2747bba6f764ed8369b6065c6acf7b3e2fad6fca","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-alpha.2.tgz","fileCount":309,"integrity":"sha512-aUU/NMiM2o7SIHmNcWEPEQH3X+n5ME9ncxSBbCTBTse6XaEmnB1QEXQ2Z/STM943Z4DkHZ1+NLVvvBshAMpG+Q==","signatures":[{"sig":"MEUCIG/hGJwlgANIJxiwdUgoAGXmFlZMjOz8qB9aQc9zniXLAiEAq+zMFa8iFDGMhnc5+J0BPXXLz48fDCsy3QsN/jqWn4k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCT33CRA9TVsSAnZWagAA5rsQAJXdtmxQe4d153pNefej\nCP7biuJkJt0iDfMynijMtK/CxZ7wx6k5OTI86l4nMV0vzHNsDNhTuom6KfBy\nPk8MS0YGtVvBFnXVvsyyd5Tvlzt9jFLTRb3L5JfEKNYzTUNN71FTqY6Su1By\nZuf52xoiL+w46djsk8RcuP2dxdwnclmxVKMKz4mIqDL0vjAn3QGKeXrlEaqm\nLlE+DeVBtN4geiOLzmQWh9+w1HMwohktru9VZYq+O1WEYJfxFgewz6Iw6/Xb\ncL1a4mMn4ajSCqKHI0Xm/BIbCjjVc4W5AWYkryt8Q0ZpGtll+BHnhDgZGxV4\nx1ldUsUwpe6HDGQq0TXhc186+xaI8TaupTc4SjSM6mq2nNMsd363d3S8PgNc\nAakJuimCHpAJIigDnNgm6C+Jr1fi5YeBMXnsYU4fw6TRcEv84IqKn5TtG4C4\n89iC1El3yphH55jDSX78TAhCGYj3iVwKYg1DEiU1Y8o36KD851mT10/RsK01\nyPw6HUuIJLG0zwxJG5tKz2E6g9ro4WakELUvGsOfLCcBi5hxMOQ0tfqpQWrd\nwToy9L1uIc7VDE11pGHWKyzvZRlva3xzSOaMs5foz8e4tkRxpMdCGATN7iIO\nOf+4ndDJyGMk4hQi/s8MUz31ZWQlv33NcECY7WdMl9MxzSTGcgEqVzffAe+A\nCvmK\r\n=W6yt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-alpha.2_1611218423019_0.41752793187105564","host":"s3://npm-registry-packages"}},"2.2.2-feature-219f53-kk6phfpt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-219f53-kk6phfpt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-219f53-kk6phfpt","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"690af72fb30b58f7bad14d55293c219ea83c312c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-219f53-kk6phfpt.tgz","fileCount":309,"integrity":"sha512-Yb4gjwP8UBo7yKCI75a0E/ljmSWhpSzPyyJvT8vYuLlwVUYpfVxD6Xi8UJT22mRCXc2FvRvI3pVNZbwqQzyQ9w==","signatures":[{"sig":"MEYCIQDvxkdk9zqZq1pZkLu8ejmVQ4vHQIZtpzwzaXmLcy590gIhAIYoAifpGSTgNAPQRst99zXfNr1swzqWZIxngwKKTSj1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCVXoCRA9TVsSAnZWagAAHSMP/j1UQEibtguQxWCYRmdD\n70zr6x1q4/T5MZQR3OGtiG8s25pKjwRQXAnmbqQ+LEh5mfssFawIcJvMCa3y\nKB5OQ1tGQ2cGH5EUaJAXKT4aCABNtgdA81cJZ2HBhnfF2WhBbFQ95MUxASe6\nvZT5k14au9WCjIX36Gmc97HKBY3iFpBEoiYiKmdHKQ4Bve1qfQeyw7hsk+Jm\n0ICRwZ+z3mtiGn2sHGxD7dHJLd+C+FvGJkG5O2hrL85twdokiduxPQXsfGPw\n3Aj2uw+FYRp2l+Id+3GScHVUybXMqxowGcNNS9MtE0KnkHcJ3aEr1+Tqme/0\nofF+T/kt9EjeKjKEMYK/+WNPe1//D0F40xnuCM2aWBPE5SUkwXRahpQMaXOU\nv2W0AIGlEXMztiPcae4uUaR7xywO1c5J44nyLz6UbSgqRfWrBG2BnvVUnwDs\n1Ii9HfSQggNa3pR1vdr7J4JDXaZwSx1vwJ8EEzuIsxehEPl8V+rpTOrpSI7L\nh8QYJ9o4lSe+9s6Bn163E93fGuMlHizRTq43XQoi3Ord6WVCKqflpxonrNTr\nR1IWirJyycaRp1QfPPP9wdpzTh7tJGWXRo4RZaqUWHyJUle5arJZFQte+HLZ\nJ4aQpHkoCsQEtUkAB9inAusGRefG1Y8eON/ErBvwn017RQA6FMFfx/URZhT3\naiVe\r\n=D7Y/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-219f53-kk6phfpt_1611224551717_0.27498695310059795","host":"s3://npm-registry-packages"}},"2.3.0-feature-d4afbf-kk7c09fv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-d4afbf-kk7c09fv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-d4afbf-kk7c09fv","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"60afbf048e3f402d55bbf123c0c14cdfa81d923d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-d4afbf-kk7c09fv.tgz","fileCount":309,"integrity":"sha512-CwvDilLuMyJJu0XYxU+A2IaWOmogZ9Z7zEnHUO2gkzHRHEfO6bgh9tTRMfBdNKKHAYS7O9dn7Mh829k8LPZgSA==","signatures":[{"sig":"MEQCIEtxUv0iSFKV5xjybDV1TO/C1sxHE4x/PzFbniy0RtfnAiBYMEN+2kddyCG1nmjzU95RgT1Jt/0empzMUiBR3BIbtg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCem2CRA9TVsSAnZWagAAxTYP/1wqtsmy9d//9mBvZL7m\ntbAKLAbY6TVhSdbqImPI3soNbF655FNN/mojtTPtO4sT1jSwqLkCzFeydoNp\neITmSCuSZcYMO7XlSK5nVqDnaC2n/t/Mewbat+Y36oU2iTbQRCWMTO+NItai\nDdDGl6LEtvzPuFgLR3IhB1ENdiwGobPVGRgcRDaevSDSMIdEKZtSNyNymLLx\nLx/qwDDY95tqvzu6xo4IFJlNvB2aF3GPeQQC/KTyKUXb1U1wbT3yMgt2jQMa\n99xYmmu2lbHteVR0wOFxVA438q/CsBw10LPj4d4ad926Asrsl4P/1pNi96Om\ngH3xG6pYc4y9mXx1lzYBWqf8Pp827kRjTN0Q4rRz+y/omsatVN0skVijZmJI\n1u1JHggvooT3a59tsfwxhdLIlJD9sAGg5NtQu7ZSRH9aKREaBYkYZ0u/Tump\nAh8NmMUOEhjxUEfQVgx5JS3uNL4dp47enK1UKF1HBHBJF/Yh+0TAheCyDghg\nOpQH2JM3TjVP81JQhv0wtjSRjnxbJTO7GYgzf+klMqk6QHhyq27pnzgIfBTA\nDIpcX3HmJrvX2EfXDmLzhYv/5D3xaoQdBqU3bEULd3ZCh8EtpMh3NmTblBN3\nx3AyTUrKwDBPJRumSvduvT+RkH0Pb82Qpkq5dkx4vyYi4el5b3h+CbqdRmbM\nGZ1B\r\n=QlAg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"feature~add_deployment_info_to_definition","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~add_deployment_info_to_definition"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-d4afbf-kk7c09fv_1611262389791_0.6728302526993197","host":"s3://npm-registry-packages"}},"2.3.0-feature-1b3914-kk84h6b9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-1b3914-kk84h6b9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-1b3914-kk84h6b9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"32d4bec9fda7c385504b9d1e42e08e018cbcac02","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-1b3914-kk84h6b9.tgz","fileCount":309,"integrity":"sha512-o1iNTEOxZ0UE2Vf3pUKOIuxOcmk2IyUqq38LDGs9E6bYn2NbO3OIEg82QtkEBPAcKNepvJQHLzfy6GFwhRKEqQ==","signatures":[{"sig":"MEYCIQDWYIi/v01ZrijNw3jMJbjq3zESrJKdulf8RZM40f2blAIhAP/1TaB4HecTnkoMpkbwdE5bXqjZigNJXS+albGQWEsX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCqR7CRA9TVsSAnZWagAA9l8P/0zR1rat0hjSHK4s/OKL\n5Rfnv4S9dADfUJ8UuCRfOptr14/4i3hsJaVjTrnEdzWXJCOzJItqF9V1pNMj\nltPArXsDuhlZp3MF1eq90hML24Yn39ANnaZaSvCVHEs3MfH5NaGD75HkRP/F\nkU5x/nW7uMSSAnEkgg3BmXS+UzVf9uwiasTmPPyjtPmc4gpbgvZttvt24KZB\nSCYxfol15HiMs5y6rwJQBIj8O8RpJocvHtMMm6BBaQaChxwewb02GN1YzFWi\nwIfcqrVEPkIHCHu1TdcNX+1n+ufSLyQiSy2WPnktsYvKdQp9YSLdmTyNoJs2\nTcB4u4P04kbbS07YQmFRhoKPR4Z0ZLsu49OuypfJWHVfysO0yRTLqx3VjuZU\nmgbYA+/pHJRG8WjdMAX/X14xB9XCKKt5pu23Lsi4ULg1HCufISIhFD42ZY6B\naAdhDqHbfOklNjpBW9PFqpN9zwG9iWavMN5pwizh2rcvCNInznIzD0aNHqyL\nlV+8jRk3pfrRecTh3onZOivAfBGlnRyRwU6Wb4uYLegV4PWjdRdzIylc4B5Y\noAuzvAFn0KvCxKrIiRvxr9pR/2q/XFPUELx64M86UC8VX6c1KowZxVfXMPgB\nmebQmtqvJ/EEnv68Ix+GszH7Dd+cwqmAYE/NSsQ86Dj8T55y97TAhyuwER4+\nxLPG\r\n=HUq2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-1b3914-kk84h6b9_1611310202710_0.10846733837628397","host":"s3://npm-registry-packages"}},"2.3.0-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a94a48d1f686ee28102232efd1045928c0ac87f8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.1.tgz","fileCount":309,"integrity":"sha512-OiUzWytDdDSNqpZnJ+igxK0KPWQTWZF0CtvlN+DgpNYqsOQ+MrWG/UtdRWp3tPYnXXphU9KFX5nR8IvS3eR7pQ==","signatures":[{"sig":"MEUCIQD4T0tLg2LqZlRNULIVfNgwljdcj2MSWQknJ2WdFHoW+QIgIc1i8LQytpNdsTFzPmN8FVw0NsTZpCdiCnLg+6iTQYg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCqbkCRA9TVsSAnZWagAAFW8QAIv+H1z6dG/6tiUPnqqc\n37ghTMuX/m6oEIur9zYopt5jL+gl39Exu5oJEcjYs/0cAj5kow67X8kBuYou\nt56icGMVuKznkJmuaKbs8TI54duX4387zK5To9ai+d29QPzAu0c/L5Dmx9wf\nUABAylfWduGmyeXdDeOS5P/nfIfB9WXqSW0PZLY5kFyLCr0uZnLYHjVsVcHW\np4nUMj0HkcFiRa9Sv/r5w+jGWz/lIRgaQlClaviyMdJ6vFLSqohQAY3Qfd8j\nKAWHV2y+snPjazLhE48ORCOp3PXi+Mr5V9kuTWpGQKj/O++qxBlM4+xx7otI\nG0FvJbUiMF3qbWQlD2PwgqP3+5FAIH+b+cviV9WlWA5TpfVvShLeLPfyb+rd\nSWw3Sa6AsSX0JtDM/u+WoAWCHWTDV1oGcrorD6GS/uoa+LSr6jsretAMZLeU\nAxfz5wS02/ltqJCQ71hXKQQWMn/MWk4e7ZyYrPxdcro2ouNBNJP3IFWvGsMV\nRxgqh4OiTg4c/3g263Qe0m4eJc8yFs2kBaVy0A5aMQQD2NdG1VC73+xLWRDI\nekPHtvLc6Zlbbc/VFOL/xE/PQzCbDXIkaqzMo4DwNvftIEjV47gbGWL6RXr0\n4gnzRbCeeOL5o8aduF0Wb2iJXZ39h7QDQ15CgHV77xJpfK2BHsR4qw6pNwDm\ndYDK\r\n=plCw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.1_1611310820150_0.26072705228622195","host":"s3://npm-registry-packages"}},"2.3.0-feature-1d2a95-kkciaese":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-1d2a95-kkciaese","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-1d2a95-kkciaese","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d12eb8cf4ebd6ddba5ff5f0c9872fc6796708003","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-1d2a95-kkciaese.tgz","fileCount":309,"integrity":"sha512-CRxBrOsTuIddB5ncinlyvzup/DzfSPuSzWtEunNTGK2D/zARViXT6Yxl9ps7Fh7NN70qmbaPz0lGhaPYoi7BAg==","signatures":[{"sig":"MEUCIQCskwzTR0AoFSrlk70yneVmn3s9TTnaf4asfmBoFuqESgIgVEQsJgCyoKV0OFEzcO4qXnqzfrgRzCaZRIk3ANWHI3E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDq/jCRA9TVsSAnZWagAAbf4P/jTz0jGiO6uil498e8Ks\nm3z7J4c7C+zusyHBzKpT8T5OVQHq1uLLfrWWmB1Jfg+3LnwUXaoSPElqaz7d\nlRDLMzjRQMGQrGLu9bN/pgpU8ojQZEFqHpeeQwyUCyqXjIpbtklZnOtWC2e3\n2vz9zMWauZWahn5DHfwhHG71Rzk6raB5gjt7seIDZnrZIrWSYQLJRD6cy9ng\nRhc8x4lR1+lGmmQF/4WKXokxs76rtpPPpvXciky2gsu2zW5zTPdwsaN1147A\nrlKkclRI4Ntn0Gz4hY4RLsbTuFR1lWLV7qhYMiAdN+mi6j+ysBsgFjorw53F\nSnV8OAcl3hMzTIps07NGW7cqMrBQRgu4iYtSSIfFmUMcptU8MhYGZep4tgFh\nTJ7IpvGlCO+DdED52J3iFhZGo4LonkyPrmGb44+l1hNCVOP9RA0+IkdrucXX\nkBk8XjiiPif324g/BPalQn59ip9/HpBey0X0w30nOtgtHMj42rT0LbMxfzLh\ndqrPwsi6VUvjrxaQEfmRVRPSorEI/CcQFLlkFLMxRfPFZRRhqLgCGMv9Tyeq\nLJM5uUKIOQ90iGPH988smuJkRI8ltqobGNMETBTScoyhOb9GNHM3KAZ9jYjZ\nBnYrlxsdU3nawD9RvngFJkTOXCSPKfg3a4WREz836kCZ2Fx74HaelKKI33VS\nSVJ4\r\n=ETfs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-1d2a95-kkciaese_1611575267282_0.8205724217230441","host":"s3://npm-registry-packages"}},"2.3.0-feature-b70e61-kkco6kvt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-b70e61-kkco6kvt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-b70e61-kkco6kvt","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"92ab0c858631cf7a3a0b11adfe504d2d2489f229","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-b70e61-kkco6kvt.tgz","fileCount":309,"integrity":"sha512-agol+XGJF75Iha1dkmMZ3N8pjBeR8msQnzqVSsmpTlbiqTXRcY85TiAFdWJ9thzqP2uJANPqvRJE38ZvC0npeQ==","signatures":[{"sig":"MEUCIQDpbqLlkMgMLNEi2Sy/P9z6KEzura3Il3Ve30MBeSLLVQIgD+VOjDi7VyBwqaV0PmnQrYQmN2CXifOBz3qVKYz4zG4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDtaQCRA9TVsSAnZWagAAAzoP/37Gs65Xx1KSbXZ+eYLb\nIUhg0HzVaFxGaxeVqJx+JRBPtpkGiGHaF32CCaEkZrouy/SQ39dKge0+n/Li\nyLEOaYLaSgvKFtXNj4pnFO9nYb6ruX1l7Sur0181+UD9ymNjkcRWA4HgYNK9\nUxo19npCtJ48h/KWDiQjd1y0OpVq7D3vdeewvmIiHHGRNsNa+P3Ah0IMcT9C\nr9Wb5yfsHQrHylgOuZXPLsO3PDpe6CgVMifSlIMMsiV1cLyC27m7GM1HyGAn\nMZeomtGlaTee5hlK7N77cLNFyLDL+YAGlJt/BNT4pGGAZcdjJDizG1/IzSiq\nTmrCw+akvB16Odpumyn+er+F0KLFXKzt+y35R0yEn9cy46abPQCutbFrwVtq\niwBe6rmJj2kEKTo0n9o2glY8/lEPmpgj1B9qzZC1cTIM+8jnCfFZYjjsj7cF\n302BQU2lPypergdfTzJ+z1xs4cFVrE+LoadZg4jtA+Km+T81R505olge9jIu\nNPHqcsmC/RJ0mbhrKlQt854POUI/lCCFam/hHLwHHYyNKhhuEHz+wZSzEoBr\nSnuPnxKw7rBgytLP4lZKHaLeB1F0FS+DTMqQDpBwtAlt7ke20dTfIyyAlXi4\n1LohAR0ARsmrYvU9fOhuHs5c3WVPelqcrvFXO+SRmHHmzqzcOxScuctw1Sgf\nfbwb\r\n=RQRw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-b70e61-kkco6kvt_1611585168176_0.7636634095496715","host":"s3://npm-registry-packages"}},"2.3.0-feature-a08c7e-kkduwe5j":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-a08c7e-kkduwe5j","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-a08c7e-kkduwe5j","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"37cb870aed2ffde12dd486249ab2c141ff38de51","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-a08c7e-kkduwe5j.tgz","fileCount":309,"integrity":"sha512-aak9mudnZtL3m6L0dOzSlcSfzEc8pxcz3mqcbpTnawvdHA6lCCnP8CGva9RJDs/QLt+tm4qFol71AFvbcT0MsA==","signatures":[{"sig":"MEQCICXggiX8smVVRtOuJOBjQMjesGhxY/QW76elRCxouMf+AiAVFJN71Yc+bj/vU4gp+Y/ZlwCvC26R2xRq2uQFFDVRZA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgD+7UCRA9TVsSAnZWagAA2EYP/2HjaY1X7LsGTLBpppET\nZr/2+6IIZcji1lGNn6jLsSv2cLeeckvBrDF8w530i8a5F88wq32N4vcBjm4F\ncJnn23G6r0GbWX/UYqP7IAQogAOgNrW2WBBcAYcmAZ6PAAG090rF48h2R0E5\nX9cdRWL+9zgW6RFs6yAfjUowRAD4+sgVrCpZHLC1GJ9XX1OQBrMJxu3vtSVo\ng4BZe0U7Pv5QDiN1OmKeanp8fibUoDnBHzJS1MjywWH/9z/ErGab7EtpHAY8\nS+/QjnE4W2dmUSWRXe89+YE8434KQAcCBsJ2gamhlF5ZY/FsfLEg/wz9sLGj\nZQDCIZMgvhCYxm/42QcIgcqL3NevWskHz8k9CuSbZF+oluKjqQXFupaJ4d/P\nt6+YdlfRbhD9U88QA5Y9nSZ1DYhBFdh5YrW74Mu/ZOa11YMzOZhVFWNkK3vt\nIVkeS4xZzoJGxAR5kTkDH6N2j+RTzyQ/x7m+kI83v1COgfc7glQhXXQWEWFb\nmw30Um8jWXgJPFm2XIcGIxeXxXTHiUwwWqtrRhXWnd/+VS7u7CT9qvR4odCQ\nAsxlzgMhKYD98AllaEGa5xBRLdiZNdT2roHD9Zo1P9jhlZueG6ZO/9jz87H8\nEsPjb3Gmf548trP5iK88qrQocRA1KUtPWDWGT2cdNoiWDdFldp/26kESOI4+\nHOp7\r\n=pbYl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-a08c7e-kkduwe5j_1611656915849_0.9664006304648698","host":"s3://npm-registry-packages"}},"2.3.0-alpha.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cea61f76644ea61ff01fc0039fcd46c67ff109a9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.2.tgz","fileCount":309,"integrity":"sha512-QVH+wu7XpYyviv64JT/i9d6XW6iYyR7LErUE/rw4sZIGaA6ons6dk1e80E6FDc+9T15jrTQvW1YPgupAMfvL1w==","signatures":[{"sig":"MEYCIQD5rPSzOh1ekjqFTxDHA5oSRAIMWZsiIoPbvUFcAMEs8AIhAIlDIbnWlt/4XCQZBsxrUd1PGHF+XCmvWhVcuGOUH7cp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgD/IECRA9TVsSAnZWagAALOoP/jD3+QVtfhab5BUJUBVI\n/l4juXOxZ9q5iygjoysN9jEmNaNujZwIlrfsvYKKWUeCO+m84jXosbhkxqLv\nlkZRWNxoRhXdzJV7+y2hTBujfetOCAvs2QwiOzts6q73i3BXbHytqb1zT7AO\nyAFTY4llUBmeSWKBIjdlfE2uHNrINGQwKsJ45lZQ24dvhFcc04pgxktSAQ8d\nP6wfSWg35SxQy7PKWwB+nn2egkT7bocNZ+q24qdBX2+QG9sk3Ce1D4wXr6pl\nawSPsRCjeXkUORbSuE5tQDFqLIYtIkDQVyUBuWJrV08gIR4QJG71FU5Ef0Yg\nioYO9agl+DcXR/zwJIvV6tNwH9JNtSGlHE1q4SLvaauwxHdP2emjcUHXWjkH\nIP6pTYs9vkOSI8dxlSueKs5zc6pStEn0z8A3W36qPpc7oaoD5y4U16luun0P\n8sxb8GbbQzqxaAVAFc91iGoDhNzMRWrNokn5u8s/zT7XFeCsQjtk65+6usKy\nbRiYbSshZXxeLDmEj+3kdnvWM8OJOBmMEjcx36KPVzgCGAEJ++t9pDwtFbbY\nhJ+3kjwuGL45ZN9Br5hw2vdvFC7jYNw7koQ56/Is6Ko+lo4WYKSuuI0ctsPw\nlk7Ss+QBjYpv2eJncWFt+qOiv+nlhg3DSE4f5QnwmRUXq+1PUWFbL8jHoURH\nJjk5\r\n=SvbF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.8","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.2_1611657732412_0.5047582188933204","host":"s3://npm-registry-packages"}},"2.2.1-hotfix-20a616-kkfapvq2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.1-hotfix-20a616-kkfapvq2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.1-hotfix-20a616-kkfapvq2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"615dd3840c9cf4e2152c63afa6b854365529963f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.1-hotfix-20a616-kkfapvq2.tgz","fileCount":309,"integrity":"sha512-Ivz7zW2EQo9YWBLbdFNgixlKGBAADLRsbsLLL4Fn6TygyD7g18OHtuMWJJYxnX1+EZ5a+NyBIi4awB9rl+uahA==","signatures":[{"sig":"MEUCIDRPDgBhzLloGdT1HhumyyDJJiSPQhmBNKQPPUmY8QGhAiEAtrqxQQRVz0uiJZcbXFnAS5EwpP/NUaak6wi8IdnLsjU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEULaCRA9TVsSAnZWagAAhHwP/2X+eRj4WtTdqLbrCnyQ\naYzdYlberN50gqeiOAzhSfINeCGLfFc4szXqj2ah7tcfQYc4zrFsaYbfvnhM\n7iJm/MU1FFV4awMOADGeq5zgllZYYr8X6t+CTitiLGbhKdsoxqDZyZ5SKxtj\nbSRUlS+y7WCWeeyTeYZxaL0HENe+xHDhYPguc42y/GHSBdf0gZ440poEmSzo\nLhv7dA1vykX1dckpQkQ+rS9tHYed1MTdeawx88tOHYnhZDsRUCDfckmc4zZ0\nd0WRHEEDfiYsDN7K8jkw3HgLp2YRUxkiUisDNl0MYC/Qmiuhmgg21yW0VOqz\n/rMO15gu637i35RIkwqF7WZMe9lj2fPxZxyjDgEkc8wjvBYG/hcu0kqjEQMx\nWisRvp1JvPBVXPFrE1Bjh3KmNGgs3UXkPibzJCo8ePAJSwwJjEYn4TA7lOd4\ntKSCYuVv37KAD2vuAxjRdAB9KIzxS10d+D/hZl4spTfvIP8DGm6JAfI0nUdx\n8DZ2B+MrY8R/OHGjy4TLQ+wmTHz1IWQqqyAobIU5g0Z8mGzjWpFiC88tq2RR\n2ozW7drM9izL1usdhic89h9erKAxhwXCgKouCG0v8zPucXwjg3yWK8EWYzYq\n4b91K0UEMa1yml+FCmb+3gHflrA/PXEsGdB+1bk/nuFKH3xeNCiRneG0lT7r\n65qy\r\n=m4fo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3-hotfix-318233-kkf7aqee","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.1-hotfix-20a616-kkfapvq2_1611743961416_0.4678487931371078","host":"s3://npm-registry-packages"}},"2.3.0-feature-5f0bf0-kkmegzlk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-5f0bf0-kkmegzlk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-5f0bf0-kkmegzlk","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c261342b5e0b616aaeddd11535a73e575423300f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-5f0bf0-kkmegzlk.tgz","fileCount":309,"integrity":"sha512-l5ahCAxfTH3lzj8W2sMhefHXfDVHuMaNRDaSFDdDVi//4w4zvz7KNlN5BzdSyDjbAW2t6P+yKJeBB17Rq634BA==","signatures":[{"sig":"MEUCICsTsAYsSpeuMdNtmdSebuO/eAICGSZIFDDqKJKy8hMEAiEAmb5scbx+mmdNf8uS3rgLtYMALNy6ohJwwKKYyAdVVDM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF9DOCRA9TVsSAnZWagAAd/IQAJE59pgdheCJ7OJv9aFt\n4Rxxq0a2z4/JDchb+91J5TcPTq0c2goQPdTfGFj47BTk+7HIl7y6C6r5Qz0K\n9zXj1xwI4grPHByV90qIYVoD8z2MB64pePVt0peYub5ZZwDaTYm5UArCAgor\neejrHmOhrqWWQnKNp+rNniX9BERG5t71upkvAw5a9NKioQwOGi8KIWC7/0eM\ngovue2lCT7SO1+cVOa3rkU8NvJ0lJJSmhzuP2E5FKHBHxkxkghV0i+836dSG\n/lr0rzbiTErVffmv2a4YvXX46ZveGspZpEvZqdPOYAeG1dOZb531Q5F/wgGX\n9U87ld4qPKINtgFt7EHKRJVb39HpP1xYFQp8rCBm/sCflc7gWUbSZqZ2cMRh\ncZRTRLpOSL3+Qv1qI3C5NeBOgfhGVDe1A+GF7fDlNsTpPKEaw2qPH3hhbGoa\nAeoX3bPiXIvoec6xWp+PVE2tlvjgQRNrlgr8acULO9Zb/RmX22cTidIv7HwT\nsKmNTeQlfuzTaJgu1auQRuHkKgEXzyzgL/Y5061xKTIJ3KjxtZvhpsQtW2cb\nyoFbi9jN7A5Dxu32l3jKAruUVIP7tBQU4LkS9xMJpsIfh7UYBI+jGrseEj05\nW6MDgHZiv+UlLTE7pYz5FsVgIsPyiZscWUJBf1DPwBDxX1GXv+AagCTImptG\n+92h\r\n=1MUd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-5f0bf0-kkmegzlk_1612173517552_0.8180900254272023","host":"s3://npm-registry-packages"}},"2.3.0-feature-5e628a-kkmjqz7k":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-5e628a-kkmjqz7k","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-5e628a-kkmjqz7k","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6a771f126a92643b891f4e12e0fb5880fbb38491","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-5e628a-kkmjqz7k.tgz","fileCount":309,"integrity":"sha512-1yFZhrWh9VWn4uCdlAvSuipVSABa/lRidjwIec4lsOXSvdyJ+bZXewFs6skk67EFagX7hKQl4MW7ukJ76iv4jQ==","signatures":[{"sig":"MEQCIAQ3rQdw81zCD5sITdZK6j6L2HH4nH39ZuzJKn/d9Zd1AiAfVWtmwgYiJWaj3XYYjUhRFbF3r77+p+mX+cIIkpBNSw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF/NoCRA9TVsSAnZWagAA3agQAIAO9QpdLRBcI3khFkUH\nin6zYFbQQ3H3oqR9y1es1sdm4q2y8cT2zEVMRdQyhJuLyXcpjd/3oE8/RGg2\nYA/5vGns9loNk/0g4/DtJ93Bo6Qs9qbrF8bz2CricOY6hPV6Q6BKNKy0KQm2\n3nYJw79GaKj6Ydpq36FJ0yAa2jlNZL6QMOmlkOP85WEuPMAXPNTerIOdjKf2\nlcIA+jBu2oJ4XMfEbc8Bfva8rO+vX7yKcchTkr8sCr8RzmYItHSmdykn3len\ndl/OZjzi6iUygglQGLeV+F+c3r+q0plyUHgppEVzMHcL2Mr+yZ+AxFRQEJBa\nH6TGyUVzlqREnCJgWHkSzu202OmM5cc7Wdsq++7WIbcjgpP+nXKXg+/kbD9W\nh7Wgvt0znS8fu65+G7sw1FMFVFYUnzdRpHa9mUzESxnHlnWboz9WG26lMI8N\nJe7ex4xS/SC11XBWB7cyWVs89kPSpTriAtHVBZl35j0U3U9EOoL/z2rZKxA3\nFAjpaKvHom4cFMlFLsdaU9TKBvNPTXz5LlmOe0qz6VmnaufI/MTvL1k38iej\n3UcTixgASHY406s05PLv2csM2hndBDTGWv3Egkf0NxTPDbjHP0f11l5y9p/n\ni+hysDqKwR+AVPcF0hpfR0PizvBsusiqQCbNPgv49V54Xt83T1ulH63OSne0\n86NM\r\n=6wZb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-5e628a-kkmjqz7k_1612182376064_0.0950624319835125","host":"s3://npm-registry-packages"}},"2.3.0-feature-04ea0b-kkmktfst":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-04ea0b-kkmktfst","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-04ea0b-kkmktfst","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6b72afa1dd6a50868f6f5c71833f645d69a79411","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-04ea0b-kkmktfst.tgz","fileCount":309,"integrity":"sha512-VJv/zeH7SBfr9bgtknE17C8eNKApBuDkpgWvOiNglLmK54ktmdHIodJBHrIf5ktCfmw9LE1/+l6ietxWpIvaHQ==","signatures":[{"sig":"MEYCIQCKt1FrwgRrN8a51gPksRicmbcQmMF1DRa+5dsj2dPThQIhAMunzBf7t78Thvl2fPo9nr7BWthDTrM2aaX4eXJHnUbM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529300,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF/ptCRA9TVsSAnZWagAAlnYP/2E5zRJl0yZUySKEIOG2\nGzYB/at9ietQw3WsWKldojKc6uqG8MsVtE002yvQJGc8wJZoeJF36YT9qmhA\nYkilCghuvoGpQsruCOuwVEGaUfEoO7Z8eNe0YvY/NZ5vz5B0OnFcOsU8XUZ/\nDZd4Uu8gBs1o1q5RG7el+FkZIayPeVjgXyrfLK7pUvkKZhrwekAdNZkB4MyK\nhEUidVy/Psh2wtx4D8TDJ3HugBNognNYHTGhnoi1kHNXbnOIK2m8n82gksg/\n68/2jLtPnhdcKTA8O//ATixBas7viwj0Gly467jBj4Y0BdDDYPUNEyTcTE3l\n7oIkdOHLGVl+auY28FddgqlJU058CXLHxJ46lVZ49QXamp+4ejl5NqUlvb6+\n1rPeT0b+admcXEsps5M5jvbWVeNivozomseFeP7c4TTog0V9ndcFpnrDEyny\nbxXCtFDvu6eFOGVSC8rj0kFfKzcPXfp6QjLrLeyUwf9lKoyGgBHpBA2xSRma\nntlTKvw9x/LLCIoH0Ro5Lvma0S1+pUuajmWJ/vsGycMNVPMd+domwlMdvuVl\nbdRiqD9m3qxYoQWrWGtjF9STcEzBu9RiRLJk85O7nqTBrTYfJIWTQ7jMn22v\nG7Ggmx4PX0UYdI7rd3S4gss9Dvh9hCY3GR3Qk44fOm3Fylrfn7C+LuUI4gun\n7XMG\r\n=fuGh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-04ea0b-kkmktfst_1612184172490_0.8171402731595421","host":"s3://npm-registry-packages"}},"2.3.0-alpha.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"31200a868c2fd34547789d1cbf7f8a6490a89e99","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.3.tgz","fileCount":309,"integrity":"sha512-cb2aw2pQSGykQ22jkALIthRnK9cDzC/p+efS/LqPRQRMc7Q1fiTg68cMauqLh2oQfPLSVc8oEd0olR8mnS9IMA==","signatures":[{"sig":"MEQCIG2RIyR+cuadWxXLqOEpJZ2Wf8QyEyaA+lc50b4QGdSEAiBns/PFKzAClJ4YVE/kAxey50G1nfCAbZXzUQzK14mMVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528662,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF/x3CRA9TVsSAnZWagAAQ+MP/3Ad36eYrk66RrQKJZ/Q\nVpJnWj3Z8YWK3Ss5lpD0G0pxweg+Gy0qG+z1+7AX91Oh//mec1RQlARk4DYx\n/GwTzP/2PxxEmisOTAmGKvffJW8xbqAe9O5JogWWtb3VPos2gjPsk7Ion+Gi\nzCKJdf5iLT/mwu1fp73P+CLlwLNwPm3acJQ00Eqb3i9icJ4DkzqTLnSAkgC4\nVOecXUgMF6XEDgjQsuu40lfxeUgmsvw/IKiqmK/v1s7xMqLTnyBjfrES50lg\n01U+APjonDJrCnP/YPb7jTiaS4avp+2RUhEm33NuJCUeQC1QMY2lebL/rJLY\ns+F97H7XTubkXNnNfjjzwJV0LfHqe54J8tzcSlMUO5y1isOs3F7aq7Tum+G1\nWo+fUaUAVHSOWoE7DnZvWEvPZ0uQyQZ1xHRaEX+LZAHffFz1GWLQlEWApz0p\nZxG9e89ZLqE3w8K2CpdgYCRxEBINH6PIz25ZzunVCusRF42Ga38k+9/oYEZY\nBMqTs7lNyAQOJW+he/jNdfr4lF2ynJ/VXNTKXbfeJ9ktvww3aATR0GXWEB2E\nzXHz5naiO1gUio25phYv/5brYpSXWdaGjqNcTJuDKEvaSpUtdzIP57n1oUil\nJaNyU6c6oQz+QW9Hn+VMUbCHhlnrWHlnoAsFVzhXc8VDh9kV+CkokbL+Qh4+\nbwNN\r\n=MluH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.3_1612184694236_0.0054323574063852575","host":"s3://npm-registry-packages"}},"2.3.0-feature-243877-kkmm0etz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-243877-kkmm0etz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-243877-kkmm0etz","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"76d74c249a82e3c02a54badb802c8cad7927a949","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-243877-kkmm0etz.tgz","fileCount":309,"integrity":"sha512-MMq93LMW7esGMgpbPBPYYDwWl07CQBv/VRVIradCn5gGoRPeQEe3R6Tw8yv3/LNysRXPk/7uB2a88RwCclEAXQ==","signatures":[{"sig":"MEYCIQCAoSKBy9lRvwboK3CXTkkZg2Rd73wS22L+gwKOBNuPuAIhAKAj8YLtLukbkg1W7wqKhQET4j0+qlFBHe9254iqySJy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529444,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGAJUCRA9TVsSAnZWagAAe8UQAJqFCj7u5wrZ2h7G2Ov4\nMgIrQOH2lhhVUloJ/uCn8FjmNjEEWWLxo1QZGoFyr6Zfg1n9sQge+2oQnEml\n9S2Lj1rHvda0Su6VUwFlsbg5GzUNU6fv2cJnKSZOx9mYVDBF7+jwBxJQ8Flj\nX4UIjYi6dBWoTErFajg1xVhP9v+EgfwH418+9jSdGI1TzzGmVmDbnetpeNmp\nC65lXGpXt+XgUVXOihZozECHcrj8mLLfEO5dacCp0Z+XUZK1xe2nQiKE3asl\nXzqPIc31q436KOGqs2shtgaL1cfWacH8CeM+CVt7fkqWcTU0tYphE3Fg9zLh\nuJLg9raZFShnGNDHEJyjLD8skz40uHHIA6X3ABkb4Q5r0CUX00uBEbi4HAsG\nBw9XSy4CwEZPPx/T/8u/RNRocXJ7UxigZP0zTD/EEr9POUgQTPkTcJunvjUL\nT3KEqwReho+k59/h6oWuwEUshu8x7KQtfLiXn3jea/DM+//bYxp30utTiKCF\nBqmaYe5W8x+4Q4sUM5iyZFUPOx9DXnmYgzGvMq9cvSxEGE6IpgyjWXjzs+Ju\ndMcdQb3hjWO0eqJAY5+a6SEq5pW6i4jDTJpWo5bWaFg4OUf9ZP9+ElICYHNU\nMm27TWxmDttoxDdJ1nnJN5dfA7SWLIUpiKoLQZhR2Z0/zkfzk0SGpf1+HkWl\nkJWR\r\n=dY6q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-243877-kkmm0etz_1612186181953_0.489872817891821","host":"s3://npm-registry-packages"}},"2.3.0-feature-79468e-kknqzce7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-79468e-kknqzce7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-79468e-kknqzce7","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bf8bf62aaa59e0383ea13b9fc2bd9abc36879fa5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-79468e-kknqzce7.tgz","fileCount":309,"integrity":"sha512-16FLMCLzBk79VStKACXIuYhcHStKwKu67/NQ3CfUBf+sg0fN/cbL2/cLQFhcP5OyjFVtgwvaNEZ3Jwowlqf1wg==","signatures":[{"sig":"MEQCIH3sqJimn5oREjAP4BayF+ZtRWNtbpnC7VEJZi6lmFuhAiBvVwXo9qoMZ1mKL47ybYXMDoEPveQ+A5tl9a3MVkbn6Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGQ8TCRA9TVsSAnZWagAAbnUQAJbzt1XxJw/UCJTZw1wG\nbITqFBiRigumNszgMyRI+/HwDzuXLImmaO+vJUeIyrsL24e0I9uAsAgOU2mS\nKP8yUu7CdnR/ksnirxAYe+/BIqWeW8NlqwgZV7109JWLPECAYO6vtW1xe/+K\nFDqOn/WIgRaRi/K8r2R6IHBpnNIk4hQElRT4Ow9Y7inU+f3PvydQAIDbQohO\nPGSnZtm7UeIz3wsNFHu3/ng1RQbK/6x+S03zmcOgSYVOzBXwLd0U4UhySFuq\n2IJ69rp9+d3NF3AV5Y8VfMT/j545ibfxB2dBI8R1cxWenFGg3h+bUdOXoJvM\nfLXcGWD2yksviegPFe/Vyj/k8c94a0YZMAUlW8nZab2+FLYNiZT/cCSiKDE6\na//dfV9pWC10EZgrbhTYPRtZ8UuM06UKagnBaiFSItaSYRoIRZRg1S97IN8J\nXEQ44ySrMD5Ql1/CLGE0maErjersD80S8AahOno7Nbh0oBXFiYVNkW5t/Lbu\nA4HZCy1AsgstEA7BwvproBUfY5+F8PS/SsdiimR9VZx5tbrsMKd8GZrp3+RI\nln/iueW0wcmi+oMaA418Xc3n9C5/rbvh1Ui8cjxn5Gx15EfhltggBlLoYU9S\nYP8Q1yvYo4XuqRYDykD12TQTVyX2K/pUiSufeLF19AsNnP1AKFlBzlF9M6OI\nGp42\r\n=ZRvw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-79468e-kknqzce7_1612254994789_0.04709660531889437","host":"s3://npm-registry-packages"}},"2.3.0-feature-e02de8-kknu8oi6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-e02de8-kknu8oi6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-e02de8-kknu8oi6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3e1b7484601e8c77d02f371a91a7deac80d39e58","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-e02de8-kknu8oi6.tgz","fileCount":309,"integrity":"sha512-1npPS+5lNRKkKp2MOJ6l6fXVD5kn5c6yc8y0Vzj7WOHzXauXPObKf4I3tMyy8aysuSyhEmAueDapl6HbRVrWUw==","signatures":[{"sig":"MEUCIQCq+ORC+0iw+lLbm4VGpW3l4/hRRMRHMnSX198SS/P8NgIgboVZFrYy2SzBF8vhyHMjHFfwekKwYIN8mwszPWKQnng=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGSRyCRA9TVsSAnZWagAAvjUQAJIdlMpva5KnOSSd5T+g\n8mwA5/F7avdXZllQ2QPf46gJUnURm5hO3jDs9+RPLleCFP4X4Rq3zhD4olAo\nQ7L2C9h+zfKMXhY2VTg/xptto05BddgDg5VOHBSml2LjNhverD3AS0oQOX1R\n5wNNjA0Oz8OL0QR6H92LXuPlvp7qqOz0SlQTDhuKPkeIZzCl96sNFtxAl/C9\nCiWAgYbDBnvrLY2KxPQdqD8bgJRbaAtv6H6X6Zqhaexil/n/NASfZFq0WiRi\njWD3Ux+PDYr0bi9xkP2SHJKWHKEsZf1nYG4DIARU0T382BxN/rF9/PKIfBJk\npsYebR2CiS9PyKhCWQLt3p4qQ8a6h/oLER4KVZuRCyjPoTRERIxT+9dSS/eZ\naEVP/AIPJD+22RsOE4ibggj5P7ynFkgoqU756OtMWESOXTu5CHRuiT/nHKvv\n6Wl01L06nQnIhW+6u8LLzCVFU+uEV20KWntDW94laa9Xp7fB5S8QjTfNJrYQ\nNyAMRjVKse6yf8hFtEL+hNoFTsazTQ3pOm4XfQYxJDmQLBEwv1HiyOJODQeI\nFgm7j7WZbsnk+ycVBPSoujTie5JAMNOHkGDj2sD+lorvcdNsakU3qJDnrSTh\noxsbU0Osh+wFuHDDxrPELRtrMQA1epAKrhWesFkR09ObSHPqsdyanBX8Uhzf\nqMkM\r\n=jGuy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-e02de8-kknu8oi6_1612260465936_0.9264223543393593","host":"s3://npm-registry-packages"}},"2.3.0-alpha.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b3a285c13c6f5ccbffddf5f2cdb381a2ea97b1e6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.4.tgz","fileCount":309,"integrity":"sha512-q1wr5ALjR1jtsfW+pLQFbQwQspyfuFbIL0DL33QTO5cX7TN6iaLtpVcHZBAnU3j0M/zwav3jK8SVEgMyWrFR2w==","signatures":[{"sig":"MEYCIQC4bYWgv3k7BzOxfsls76qiNz0O9xDjyL31L2Cw3znFeQIhAIeEDLu6Ux4cJeYthmPUmrNvaPdMb4ld8GBSj4n+Tm7/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGSp9CRA9TVsSAnZWagAAweAQAJK22pBlDZW2b5kUvPKn\nbq3yKOymJMmGw0TkwVNJDq5zCVfRvd6/65kd2s32fO4+vXsrJkf8m/qke0Zs\nqOwFrFzAK1VAgpCKvRERL/IWR6rgnr5VvFfY+/cy4MdJ7k6R3YmcSASF6qZf\nEHkZCwQEv5IdcZPv7BTBJpXKR9PcdeU1GltnC8UwiA57mc0E4Y6COW1m7HfT\nWByIO9AuOXmSGJSyOTESaVVmau2TWeyMBmoXTH5wJYaNcEReWJTGrSuf6xWy\nz9+Eh32PFm4Tx9cn1Oyifv7bDYWGBdJN31paDlRR6j9J9JgYKvzEzYRmV8Bo\nChp3+qJjF/IXCivQxp9BmWdm6RF6qi7QO1nTrkDudeh6Qo7nzQnCBakXS+VV\npJWYSrnBw4Pv1dafjaJaUdrvAp1levrTjRySKxj/t9wgKBmrvw+pOhNijrd2\ndy/m3vrRw5a28sxNYWjtAVxQ6vBEKJGGleqgYiYlto42usqhwG+PwBCzxy0z\ndjlXtUkoAP9CCqxhRmT3vem1nG8vc4TfYtx0XL4yR5LcE1q3D9d+bpnCBXBn\njZ+pOPjdf1F5oNjFDXlgRg9eCSQ/tiFVssiRU/N5ouJpPx4dE5Dksqc+ZCea\ng1GDGvyiyHJcCk6QQ1Au5Ooy0KWeq/BFZ66T5bX+tkElDlL9N+6SXoMabvDY\numBl\r\n=D4y3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.4_1612262013388_0.8949956856618384","host":"s3://npm-registry-packages"}},"2.2.2-beta.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-beta.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-beta.2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5ad283be291d1a0038660eb9a833bcbede4ce682","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-beta.2.tgz","fileCount":309,"integrity":"sha512-nrO3ymB6vTFfSg9BuGnDzTtFoXnbTkn7gqc115eT4jf8v2owbNjic/eU5E0GT+ot7BG12O2E9O6w5LRA7ygxog==","signatures":[{"sig":"MEQCICIOIfh2wkkwcX1oi7H7NjFIhF5abydHKdNo8hZYylzeAiB28bZ1WLJamHAMdJaMKrOb8Uws0dH/UGYc8i9kB3VzTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGVEECRA9TVsSAnZWagAAAAcP/AlJk0zV9WPwvwOx9FET\n6GRuJfFGsTGl9vzKdwBDPkwj8OSWQZZ7pLQTexDaOCYd59U8qH1wdkkOpiKQ\nD82h+96FGwjxXQt55tygnRE3dpM7BLgaF6+Drn7Ds57DSlm0WQDmlvxUvC6n\nyx+vBQkkCcafrjEuYYpb0XRnB9RtPsYEl4me0XegvBTNGCkVQtmQMNTtG81B\n1bcqg505IfCeGVvaJ1ugHU76klyHyCOKww8IJRXIXzu8RqYeUpPXdNj2JWSB\nxecEKEorPglU0J1+Adj94jgY5cvb3w36L/0QIuW3Bgjw/rd33wdBnMmdIh0z\nqSKmzemNCPiOrz42xIVxNiVtO+xjyRre51uy9dqM/tydfjg/53KqZ3X5/ZGD\nkBnqQ0olQoNJlaL1xPX241IPhEsBi64yTa2oz9cJjhmjapoFhDDRdkT1lgUE\nNZ0KP1RiZq2qPrqDXjSEL7jugPbGlS+WSQINGAXojyTcun49VR7/9AKG3KI2\nzSoVpsUVuiL//WdROP2oWLJssFfi6utzpOV/V75QyPeh11Z3CHw9eETaaTmA\nry3nQDYPHFu3L22FAgxTWPPpZJKtJ47hAJgXMhwXaIIdqM88GWtbEJ6oI0wu\nuVieZP4YHlEBjpYIAlMxB1RZF5rNImUOcVS5V+0O75k8fMPAWGi3y8yxwmu2\n5Dr/\r\n=xKG7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-beta.2_1612271876237_0.6924054757490481","host":"s3://npm-registry-packages"}},"2.2.2-beta.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-beta.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-beta.3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"eb2c7c97dcad6342fb06c8ab64ca466c99a78239","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-beta.3.tgz","fileCount":309,"integrity":"sha512-6ZfxLIJd6kKuxk0T8dbbDToTKhAYWoykBE8XkPmKEYi3sPc/sKp3/UY1P41rzOFiiL3nZpEXBxCFDVisSdqLEw==","signatures":[{"sig":"MEUCIQCLG5uNbQfR4829Qq3A8acH0xF9Rds2xrQevhMNxcy6qQIgWZyf/J02XGzVo4da9cddUwHf9xUbottZ6qScRWZ4dP0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGVXUCRA9TVsSAnZWagAAHsIP+wQagKl7LFMfxibKhkbF\nFBBddYU02pbXUCQlxc68z9vYjuLjOBOtDiOzcqflv+wq9VLgsFbhw5J5jR4u\neSUmFTAyDuKfAL4p6PVmK/YGBiMcETCHufUhr1KIxOpAX+gb+DCIzx7zVWy2\nkIa5WgMcyLM/LH7qVmB+eRnrYAyhI8gC3XwvxSlOGBSOckRfr8rrR2hY9VhC\nghP7ieESivtxsRD3TnSn8wzVOdXMeDqEhu6ipQpe4zQBGn0SJ7u/M0LCjlu5\n4IZLsIJA0+zXOJnw9LCnAImQrP/m562Vc3Huq0zAz3C/T44ahvJ6nQG0YO4C\nN8g3+lZqmUdnwF5h6Sg81CW/cTEb0HpyBjABGzaGZBUIEKM+z6t4ZNZwbdtz\nau0UMLIheQ9inyid8xoU5MKWPjR1TkcPmJLE/mItFhDgrrk0bng0lOiIg0VV\n0NevElnMW8XqlB7GNiv1Fk8rNEO8tofXuJelLnnRnLro0uIWiZ9eMCmLYUtD\ncPCptaAGGnzcXImK12qNV+Z24kmglJ0VXgC4deHL5VA8+V+qWNnhYGHfMgvr\nL/S9YHb2xvk8tUW+aBd33Tk66A2UNghfIQkR5KyKQ3brbwsdUEjjAvhJf+IL\nqG2z+865E8y7VPvDqsuhqi5Ny1zsUDyaOX9sdfvovbfuO+ul+ChDRCWHVYlv\n42A4\r\n=Iob+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"^2.0.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-beta.3_1612273107486_0.9068887417156819","host":"s3://npm-registry-packages"}},"2.2.2-feature-fa3092-kks3da80":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-fa3092-kks3da80","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-fa3092-kks3da80","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9660aa432fbdae17cefe0c7f24f8e2e40381bdaf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-fa3092-kks3da80.tgz","fileCount":309,"integrity":"sha512-tDRwltfdjEMhHd4qhdlJq2D7HsJASCPvI4YSx3nkvVTjWZ16gaYbGNHTFPbahibSo9x6DXcwmZrGvnWbboCF2A==","signatures":[{"sig":"MEUCIFAFE+suf85Y05iTvKN8Zq8Q72kxr22qdF6AJbdXo2RiAiEAl8nlAlTXQhyE4dX1LKd1/iBB737RfsJxKfShfNmzOKU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHREjCRA9TVsSAnZWagAA9g8QAIk8Yr4SThwo1MB/31NS\neNOKLn9tK6D7GHgrTSJFqi6kyKm4qx8W8HHZEVcDTsD2iTxTQVZ6l/TpkgWx\n0DI50c8rftFpFFwtk9hJYL9X2LTxjyhUSliX+p37QFRIVgznogkrc/2Zomsg\ndewTamb0C9k84puoPRvwZf5an1X2N2NnoiqoL2uXBKg71ZUMbljjK4jHGvt7\n16O1fTe1hfU2V5Q29jCeLiJ8xpn9qNjKyHkQnTHgL898k7r0xf9P/kMY2xMp\nKpT0nkrmLMbLIpWumLivgm1S6uExbc3m0kRm2BU+QXZy1hNmgF4L14K2vwZM\na0cOq4pCSW6YW786CsGnvJDlg/XBOCCIxgB1KMRM+tU6pkNRenxT+rzwNPgi\nD5TQtn/ahiS0NRxSG2XVby1x2LgC8/fktJQCAqO32SVkr1rhRoz452miNkaN\nyq/D8wEQSZ01Nhyq9ZvciGuyVhVavDdvBzPpNJarrBRCsTTIXjn/xq2qDETe\n6ruQnxum0RBAUCkunV+XG/EsG6I/B+HpRGS9G4t2yz0MOFcqsICvlf4wqNlJ\nbcbNSLFhdXN+XR8E3tDd5kuwm8Abdn3ChuZCVKT8pmXONz/qP9GFo3TRanl1\nS1EbWFeGWQqdLrbNhMklCLt2yQtX/d0wGEpafm/eZhvNGaZQQIgmIdE7wwqX\nSjJy\r\n=1Tfj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"feature~get_deployed_events","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~get_deployed_events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-fa3092-kks3da80_1612517666466_0.9714685956792901","host":"s3://npm-registry-packages"}},"2.2.2-feature-39d7b0-kksamit9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-39d7b0-kksamit9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-39d7b0-kksamit9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8234316f837da2012e51a8c97181b8b21a44f18c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-39d7b0-kksamit9.tgz","fileCount":309,"integrity":"sha512-6/OJw90Sza+K4VnFYMEwGHIbjGsZlwpoEqCQDAQJEUFp0QHfFhYBvR8BQxA2DMlguHyf1+ImexUE7NmqejikSw==","signatures":[{"sig":"MEUCIFUpZnL2L4kAayDN6OzJim3khhiHbl6SupiQND+L2FSHAiEA7RMidw6KYG+24uIiSg54/PNeODLZOirnn8nv4dQCets=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHUC9CRA9TVsSAnZWagAAI4sP/AyXLTpuUYyQOGugsTdX\novPDDM0n8y7Vujvz8wcIvCI01hgSd+f1le9ll6Ju47Hr1jbIuQqRugXp5aIG\nZMujhvrbxi7r9DJsfPS2SsfzwX2WKQerA1P3GFNWY7oINvdzAhuXe1JTfOod\nsIEmygsCq+A7TBKePJe9MCcYS7npmsqe31XcgBL6cs9MCXQCSRiMbRtJLdiE\nY6A0JP5o0OStXXfMpjXAykdP60qedG+YoegA6p+810S3fMxsDI6Q6ewQNuqv\nf0V9GiYEuf2km9FEgIsgGd2L9f0jp0IYYe/yhdofJ50s59uw6WiaeWyzg1Em\n/rU8ujiSd5Z5hDjgY5j15cXqxqaKs/30N1rQIlMj8VMuLVjTNOo6kThSLOge\nmEODulijddOflx5T3cMIepWt7C7BvcvYmSbo+UV1JiWQx7x2Bph5OYSeBiNc\nUNxV19gMX+rWP+4EJcGOFN1UalWf61+qquORRod3Y98oBUq5RLX0Fq/YnMd0\nxR8WnlbOfxxTi8AETNnDkyLncV0fexO3Enf6d80SG6UiVLftbCVTxcPvtMj0\nzYufZHOMjKwLpcTaNguN38kDbF63cThxwSWyEzJPflt9JqPusaH9DlBP6Cn0\nC0aRxRTuJmYfq7ZjZxXRPKPqWXE9g2FQd68qRrz1WVUhQ9laL/Scbm8H3G+3\nFZuh\r\n=kN64\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"feature~get_deployed_events","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~get_deployed_events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-39d7b0-kksamit9_1612529853196_0.12945612898826253","host":"s3://npm-registry-packages"}},"2.2.2-feature-88f272-kktxbjpr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-88f272-kktxbjpr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-88f272-kktxbjpr","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7b833c835bb0e58b74d48296e198525fd7648d47","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-88f272-kktxbjpr.tgz","fileCount":309,"integrity":"sha512-lfI4W+8YVkbOl3YJLFH/sonQHH9/msMmTy9Gin2kkZwntZQNjAxMkz3PiyL8Nk7I5uGxqznqcGxPOi5ln7+99A==","signatures":[{"sig":"MEYCIQCpUoK/46nE256He2P78xkxmllepz4WqUlTezVnU3qqKgIhAIs7IaAQ5VdJeB6snRWHR0wNquxX8QpwdnifEIjoJvH8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHsHXCRA9TVsSAnZWagAAtcYP/iKLfVHt/LgFAYTrsrnW\nTrmrt6L1OB+E0xP6/TE1tTCfqnkZsI7EPcAzDGCIC7dL+eHZkac2MuNw4OMe\nJUP1Z55lQXq61dcndmiEhzvkDGt5YHlWS4my+SvorS45zcYQSUzwFpQW7wam\nr3gDuTtl4AoAwg/tm1vI48NUSMeobddoH57iyUP+mRaeJOppjykbiDNuF3ud\n+PdpMa5r3gw3Eg48YPXeNdHR1UyYdvKUGylcpQmniV/UxsuAtritEnEMICeg\nRCJKlusFjHAT9khfyV3pkctbFmkT1olfzx3pCTCRqvYGZ+NU500VR3kwr/aC\nLifHhZ0RF0W5vtrHGGTT2zDPEaDKtkgYpDoZ/BchWCN6HE1NIhoBTsBR1blP\n7tEeAv2Qn/zh5uLcYeP+YTBuAPf0xXHwe2CYNJ3Y4ZMst5E4ML+CXDJxwqhl\nvT0e5AZl7r21kg1Wk9LheFbKFiAW3hLksHBpSBJHB7aXxH37Ufy1TZfwAFie\nAHVr/HHWxBgbRpsBgUp4NL9kVzu0b3wD0E2d0DNeZdeNKaePeEH42Ydebbj1\nyt3I4x1B1vCH78N7GYxuyavRaqEX1/A6zKNmx6mU1dOT4mfT4GCNsPqbgxdJ\nzXtmjzp5jLgxzDokD6+8fpmibR3BomP3vdlrV6lPHuPTOm0EH9FT1fnlB/Ra\nIFIX\r\n=4Ei3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-88f272-kktxbjpr_1612628438671_0.6112104511295477","host":"s3://npm-registry-packages"}},"2.2.2-beta.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-beta.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-beta.4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9557f7db1aece3e782dec337e0c1fa413eeb93f1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-beta.4.tgz","fileCount":309,"integrity":"sha512-YTtIpgiPEgUDFhnadlOtF3B0TiX6VCTT/u1Ou9t6/mJcLdQw/Lz4nSxj3mGI3Mby7gIOPvTBYTHAH0GcevIs5Q==","signatures":[{"sig":"MEYCIQC809iBA4ZROMwAFPfshAl+IqgXJ1YG1P8vgdAlLHO/pQIhAJfQ2FTT4kCv6jUTedsGyTudIWXqbTKp4+QfgRHons7l","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHsWjCRA9TVsSAnZWagAAQLEP/3wpDOrlBH0UwLfrqGHj\nKBliK9VvZIRJePgyjV9rIL4mS3qnYZJ08jKRRlOYslcwEOsI68PfKL3lDEEz\n8SeJ8dXhtJWZ171rGr54lDVHOHUkt5CftwfB1yebSXyXuVzQTj0haxaoNOSU\nzoaIoxyBS9TSLXs6HXrUuWhX/nNXrLlu6Cma933oIFmc6A+WVp63jjgulwwG\nUjp1oZYyqSF99tZwK7p2rL78r1LikcthRpigSffh3XwK7jQmKvunpsZ+iZrV\nVO+nRkykkQp95/pj2bF43JM/CnGSBIZId3hbGXshr4t7Ej14kkI9pgJyGlf3\nOoxF3Bj/gbJhCVYNjkkQ+iObLxWNn0Q/YCylpKIQrAk69JVqzEXj1hPvFKpm\nFo+eDwyzG9bqyLga9xn9UJqukq+WPizYS2FiaJ3U/7eB+eAxdY02utg3wR2b\nxmNjLNpcPl4oZC6jpbsSFgZPB+FIcw7B8jbZbiQuBL/9QJtW+p6FMUVK6UsI\nAE8XiEVRQ8siYViIk2bVc/sgmBP1XWhnzT+ddtVLvt1/NYWJ2lpEGHlvb1j6\nUUMpPn2O2/qWM9NDlxob8b9PE8ZO0RWWdwpNlv0axKupg1SxeIz1PsvkXI78\nxSuh1xjQja1flUKsCIA0kwRNETl8MabDf6NxYCdPhBdcnuPgGU8X8z74B2o6\nmBmU\r\n=oGAN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-beta.4_1612629411232_0.7638058416506697","host":"s3://npm-registry-packages"}},"2.3.0-alpha.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5e9269d7445785233bd041bc51d5fc27a0af3095","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.5.tgz","fileCount":309,"integrity":"sha512-eqEgKTw1QXKUuFj6XLE+1vcCcpmNBf+wUl613hcckX/lOapC4IuOT5FManvAzfSEF00Mg6tQszggsM+fQY824w==","signatures":[{"sig":"MEYCIQDJZnhjSmerMX/ze29m8NHbbhfJ3DuXxDn2OTuWMyBW1wIhANeX2kw18ws5O5MJwaN7GI9Yoiva6XP0QwISRaF0PnDU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHsitCRA9TVsSAnZWagAATDYP/2rYuzxu63A4ATpBBDfq\naFA3qx5g5RyFLNjnZYOXW7HU6QnZ60tVWCtUfIY2R/mCnppzMwD/GDl1kreU\nvmIOEMq3JhmlnkB86C0Ffn5wzs14nhsrfX7TNk2Jujs5Yn/vJhydzKLvkAdb\nOrWAdNui2SxPk4kccm8qahMV+kevVbzN6Pv4rVbfzciW7+CJtx0/MjlV40Zu\nz9EFGZqHmGQa2ap209j5peq7eW+1E2p/JA9iRgEngUAwlEnJmfm9L1ym9aTe\n7i9589XmoGIs14Qv6Z3/Repng06+4P8AYNMSp6a5v8auGfYXyvbjI6RK1PXu\nm/ows9Xf7S/khAP4/CczNPnCgw6VUHD7rj+HVT35mbq9gIC4tGcJNagkP+Ou\nx7yCWp/fBWEpmT983fbGXkPHcHZ/4avy+vTJSI+iSsXeaTBwZAlU/mBZj41F\nItHUIOv5einxIl+TewgfHtsOKCnedRoKM/lvM57eUgdRfs/ITArGT/T2S10K\n+Xfd9sZQiKT5D7Q4/YZPmN/8KtCsjnrqZXni22RDGVtYU/86zBuBie2ZxGOF\nvSl+JpgLWX3m4GRactViy3kJAeDfQeEqye3Nxcnp+Jpkqa2mesAaPS08Dko2\nEAsX4rth80mbfpxtTggcPCCJ2vV3v9HjJ33NCWWZmnCRTtGwht2FwMuQSLdt\neG3Z\r\n=Pyes\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0-alpha.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.5_1612630188317_0.8171120579848887","host":"s3://npm-registry-packages"}},"2.3.0-feature-8c72a6-kkxrjdx9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-8c72a6-kkxrjdx9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-8c72a6-kkxrjdx9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dbe2935a1f5b2c9d714886e5311b46a6583b147e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-8c72a6-kkxrjdx9.tgz","fileCount":309,"integrity":"sha512-l4weF/CfgOPxiSlVoOivG8XCSR0o6No+N8XBSeZcDFnX0v8sz3vbEo2EV5H6QgCVlFTFLvPJ2uPWAn+5nt3SAg==","signatures":[{"sig":"MEUCICj1tz3+5jG2TzJcfxzfMQw9jhh3FOnLwyK40r+zGLFEAiEAvzOb67e78qMaj5W768Sz4nmg+QEBnF3V9kSEoSt6mxg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1525312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIkyrCRA9TVsSAnZWagAA+yMQAInUWHg9BnH8xqYxASUb\nCVjl2p3LtStxTO0Qq2ucVGbD8mZug5h2V1vvPfXGZRMCNoZnN3gukgsi9C1t\nEAZrLhCoTK9UBNCYCmOZJhqQTzb+HymPdpz38tPJDAK0D/8PQuWcZVOsYboc\nZH7uxH0nYxOdVKgd6QwipYiWf0zQpAhdXU93xy1xnP2GlidlLVIv1dkde895\nJZJaabvG9wGS29cbqIiTnwsBz6S18/Xra5iAT6psFTe7nEH3p8cGImoStKj/\nTWi5qiwSkRc/OlIyuyav5tRYLWql0Y7zgz83ft6CJEXWgiu2ANjd3n34Mv2Q\nnfa3KkEy5nTIy7521HUlGvwHSxyuGnob+GyrgISovF7LbxL11aRl2ECfvraZ\nqiLewbGQCltlLQ5T51y9P5O6pFOrlnSvF4fXPcFdzGDzcgFof+8WSmM/JnDO\nqT+dcgUaeJ2JDE5i2skd7mWnC8im0+4x0+VCiiFaXq0M16EwcVnX+kWZaRsS\nk5yjeAXl/6piUgH8Dgoy/NrJcK7G5DXuZNbixTO1XwfFQzYfDQwIV36oTvnV\n6IMl2QmxRGbClEB16i0ToEUr+eLYa9i+t5La69BuEJ/x6ilWFpRaKktah9yO\nhVhb9nzD/cWDg8JTFjwg7vuXs1sVOnURouNdxq2QyCkK+h1moXCdE8fvKqaF\n5bsm\r\n=Cyeg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~fix_join-gateway_detection"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-8c72a6-kkxrjdx9_1612860587450_0.26407583422997294","host":"s3://npm-registry-packages"}},"2.3.0-feature-fa58ce-kky43uii":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-fa58ce-kky43uii","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-fa58ce-kky43uii","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b0ef53847209898eda2788c9400e6bd85ed6e618","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-fa58ce-kky43uii.tgz","fileCount":309,"integrity":"sha512-v0JrVCFvNrryApzlYibYTf870n+RZWXuqvU9shFHhfRkHUWPNf8eNuIENWDPRqbF/yFHn7L2mWOm8HF8yCa0IQ==","signatures":[{"sig":"MEYCIQC5ZlAiEGZhiSDyiwDgepwkdVgyCrsj2Q8JT89+KnfglwIhAItqd+wMb2Mdy//IQr1HHgd9idsEYNvyT79b9fUeA+9k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIp8jCRA9TVsSAnZWagAA3bIP/iBxjFK2JO+aPU/L9+oO\nRVtN1buSAnzcjSTTMQQS2+Dqpcr0pFKGqp4wyOe+BDzZdC/IS3BAG8V/70Ip\nh4u/P6DGFdNhrqY0bCbCF7Gss6Nk60v9WC2o6pbFTbXS/ZaI0FDgR+Hm1ztL\nSGlYhgbW6JMHDfaZTZvNX9e9CdFCnihN9KfAAdx73z1xbm55SmHUVnwkzovG\nuTFErB1glTZaPmSpxFRZ/M05DyUGAZJS0IOKGfm5xGHPnaBLwCR8fDmM9qnw\n8gLCqrfTUUlQ7LQvxpwSpE3NLFXxivk3Jfx2uJEJ6zitduaIBXosGM6v5343\nGC8bhE0WOOIQVmA9fq3pPEIutiXEFGmvIaD7enaXjsklAm2tGRDHcG6hMZzr\nlZWkj0vTt7pfrgFQXGQ9GBFMiwWP3UNeUjTqosX/8EZat3KUkW/jgJ3VEGYH\ngJOhm1JIQr08Ldrh3GhJOiU+k5uvqwR6O/bpKC/ls+hQDGuoVwX6rvpFX1/f\nIUWbVBsL2gNqHiiJ9ciXB+4Vv6puaN722i+5UduogMWcDLPaiweOJPWKUtQe\noH/XK2IOy26+Glm6oSBsrVTgPT+ziR/t/50+c++1dvJC5fKpRM1Zj6d4lnQJ\nxtrqbc20Gocz/7PN7EMYQ252MWG31q1xkvSm0B50RfWofizG9dRVLNMD9XJO\nBk6F\r\n=vVi+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~fix_join-gateway_detection"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-fa58ce-kky43uii_1612881698938_0.33309201882401496","host":"s3://npm-registry-packages"}},"2.3.0-feature-1ca31a-kkzf7jp1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-1ca31a-kkzf7jp1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-1ca31a-kkzf7jp1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"25bac2bac524a401508e7a9c6402fbea614cb501","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-1ca31a-kkzf7jp1.tgz","fileCount":309,"integrity":"sha512-dnm/Rqk4fctQM2M+pWTBkhxO1l9ajDtAjBmVZBz+dgFa+YVW7wg6LIiHEW0GCSaDDVdXhlGYAG1isJ00R7uK1A==","signatures":[{"sig":"MEUCIQD48OrCcTOva7aQHCiY+7M3IO6mXAbcTqtFgIvkVDK05QIgYmp4fHZoNt0GBgVfY5sCqb+5PivNFPkH3g0lOGS2k3Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI9QzCRA9TVsSAnZWagAAevIP/iKQIIGdIzdoGVOhTSPI\nmt/DP2HgqpRym+M+U26MYsu6n0JvQOX2pW/5RPmW7xeNKHsQrJhMtM0xsn/J\nK8Z8k2obVXAZ2clN9vTG/02+0dNQiYuKl9VGDfcLCALk8XL9Mxy1HPZzaTWs\nibti7xuQpKQNkJhEnIToKNb0+g3vWVQIxsFZ+mR47sXXkwY/3/jUNr4voq72\n2k66gPmU2pdIGaPf3lvMF/YoOhFr1zh/VGg6MFyhv+DkAy05EVkH+YdLzXD5\nBVPaSgb3ezEoFCWPyxCSZBDAIitDdGXQsXJYuWgn6nkAT9FPEznN1aE4HLgg\nX73qdnucATEXzLTb71iDFor6a1JPU6UhIzcffkAqEdOeNMbIdoTIUGD74XxP\nac+A0+pc68JPK3tHDUpn5MwwLSDJa+7DCLJtuzeHvZcaJvCo68MNhbzZqYwd\naEYoMLjg8lILy3hJmfed99tKZ+whFAAz01lwywID92szmgRmfzaEcUXQRtyj\n71IEFMBA4GtO3UDNwQXAcUp+/kiJ/TqpE1+kj4vsSrj35B2iVxmBbhWhDNS0\nJ+70kryYM0gLSoS8KJyNIy6VEGprs26jgO+G8M74yuvDF7Crqt62nD2d4F2E\nvcF5bTnBdduMOXFh0UiQKR1uB6iMpfXWmPTlBQwvdks93qOXfNKqfkm3bebY\nfBrT\r\n=2REm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~fix_join-gateway_detection"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-1ca31a-kkzf7jp1_1612960819256_0.6488276866552725","host":"s3://npm-registry-packages"}},"2.3.0-feature-d4a47d-kkzj9l3l":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-d4a47d-kkzj9l3l","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-d4a47d-kkzj9l3l","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"99755a7f5e11d681269cfe75070887b64cfac0e2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-d4a47d-kkzj9l3l.tgz","fileCount":309,"integrity":"sha512-wDQGMYCmSpdbjF47bMEEHBqMJdN074z/fkBcyYnpVRkPkuej0EdOsv/4vazGi/blqcL3thS7CX+ln5oLuXitOA==","signatures":[{"sig":"MEYCIQCQs0kWhXdkmn2ZKufAqrqfjhx6HFyU4MDJyt/4TQCBLwIhALulGvaoGYo+mQMPzU1LqqiYjXxCF+vM/pkVK0xV7qPe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI+7SCRA9TVsSAnZWagAAUi0P/2GIbodAPusjy48aBWP2\nIA75zfIWVRYsNx7MlKiEw+jgQ2pLisOTABn76vmPO495JH2dCzNIdZUfYHEh\nyCM/Ud4Wh4DHQgTxABafiytmrejAz9IH5ylQgQ1ZlzUBXGVJibuS3Awt0vgA\ngvpgqyqfH9uFEO6GLh7g62tPpw2U7ZbU2uuqy2xQX69xTy/b/x+jrUBrr6wA\nHHFZRa8/dQYEmmSkNqUq5FUStO04aB6yKmOOAqAzm05eCvumKf0+ranWpF7d\n5sQojV5nkXTVozxzDUUZb/N97+M1NJb+aCqQmZ9XPmfrflD2EB+lTA95iK7w\nrwDfysg1G7VtJi+GeszwK7dUBxs64Z7VQe9MRUH2ncBlg/sXqydarcMmAlTa\nNsH74itSQn209nL0y6xeC+boHqIl8OBykfl9IPsKfgovM8oJwHbAwq7gSYag\nxTIoBAeRO4PbGbqimcu/G3KnswUfH062u2B5WqpLr2I9vIQUoxrNp1u0vETf\ntzi6ulMTI/LaJesDLOUNTFMG6izgpsKSimpKKzToXiUVO7fd/rfT3uVZzWar\nOuqaEWNCijLF+V2lJ+XnzDPlm78neue0+NGMlWZJXY6ZSvYwQky6Vy76gCNF\nf9qyk0xI753DY1LpYA4M4ETT0X5jDSksv8Ny3Nov4jzysC+HmM4Q9cQmBG8j\njCCq\r\n=agXQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~fix_join-gateway_detection"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-d4a47d-kkzj9l3l_1612967634466_0.29142249084169647","host":"s3://npm-registry-packages"}},"2.3.0-feature-6a4468-kkznm8h9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-6a4468-kkznm8h9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-6a4468-kkznm8h9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2293aab0268323966986a36bf7018d0ccf7fd3b2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-6a4468-kkznm8h9.tgz","fileCount":309,"integrity":"sha512-eB1hGQGiepMULT9dhe43QSk3PC+OEhr7UFZDPqacM92jupdBbql1YTjDJxEsLXMyGcHW6W5FubhnLFWarsSePg==","signatures":[{"sig":"MEUCIAqaE88UXLoVsLmeFSSVdJnJCwpykahmKaz0ABHKLiK/AiEA3ae9wKpiKjtpovOrRAGKzEmbCPmw+qcNCCM2ibjp50s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527273,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJAteCRA9TVsSAnZWagAAls8P/A9t6i3eCaGF3xt48xH3\ngIMYqLws19GZrZxdzqO/oLYXvg1JsfWnqeV4wsyQA4f0CVX/GAqfS2T8vv2O\nf4mETi8zKYDzgbVUCsWYbNusCrvqIyxRJoNVwFBSls18DP7nxNXF2r+YolJ5\neZo7O45dUgxnzT9459UQ9y7j2U85+rxd8HYluvf7jV+aa867nYmbBWdo1WCO\njdrOGb7goQN/Otxuks+gXNQd8+gi36UBGzsK6MRcVGtNjfWG7brmWAXMHo0Q\nFj1tmoNa3kicT20vf/kV4G0+Vwb40heBpzChNXDWw0TY+4VSVsVieg/BRy2g\nVFd7H4rTTF3G2QbA0su4555buieao4UBOVuPIq/2aMcJsxj8WmqiMYdI7T41\nNodqLJ5jieQVK5ox3elcDcXy1rj4lKgWgjuUo0RuqHUYOICYnZXJ+uTrfrwh\nmAtx4k3kt+I4Y/sGfNhjME4uYb7LldYYYDYVDOeFWkTdphSIZqn/rsC3iyS/\nlFMFA06stkPpBQ7160lFr68xDLZn3D5GwEqfhYnsx82j1ofNXgp8X2z8LHML\nYPIpev+DZTGUz3RZKm1XiARK0iadr/5wrSkIKpkV6DCyo0YIXC+/J6LMGrcy\nZOagff7MFDygdUYi90vkmi6SLD1GsZS+stlm8mN2hgy1MMF5f2cMwSng9vu8\nwF7M\r\n=BSLN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~fix_join-gateway_detection"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-6a4468-kkznm8h9_1612974942034_0.2833171765467499","host":"s3://npm-registry-packages"}},"2.2.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"519766ca0ee284a30b0806254b3f8463bcd07304","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2.tgz","fileCount":309,"integrity":"sha512-2zIfsBOybvwsVkYpzSvMjK7Lq9HF0ltEYaYN7VPE5P+ktGpVlWFcc3jGRavX+cdd2YDp+cu0QDm7JI1HxEqJRQ==","signatures":[{"sig":"MEUCIQDvXzvinRtwBViUnKNAFjV7pKlfxxQoJyAZ6C9Ica8SeQIgabHBWuSfRozxpAykz/EviWfGtbopnNTWN02uIUtbET8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJSCiCRA9TVsSAnZWagAAMtEP/3JIUZOFlrMe2lM/N3D3\nrd96ItInYUniu6tIbe56I5LmEWjXBUm4K7TD9PuFRMkgBLi1fYnAXTPGufp0\n1Tiamn5tB9QXbT1g48KxrzLRX1dRt//JgOfUvj4vF3I980dC0fFYyK7+/vtM\njQ6vdozIGIMgn8RgQ3uatxe78Qrh8nYb6HMsSPA82BcAd8a/KpKsf0w+uswt\no3hba8VaSiSP+PaRDRiDVuM8i93fKjlS93gy7079xlkp6vonmgV5mM1g91hY\nrufplKAXL+Vbm4SBoFLW3tJe6vJRTiDSDSNXvol84ZxrkGMyxuJuMZKOJIzj\nY4OEUjZuO8q56V+tuBNLmkOjmX8B127T49ShikgK2kKPPZq1Q8xYu+Zk8CW2\nR8H+Kviw7VfxUak9kxJsepA/NUMsJp0fhjVxnivDpV8fZ1P7fD6VaP6HyIXB\nnU9knUvV0nP04trQnwvRLfSaBvuKjVdsaf6Pf0bl1XJQQMwpMxkwgMO+ijJP\ntw9o1B0/e8MQhrgq7If3hwSYoORz5pHJpJBu9QLvPWG+saghVbFgGT2j32NT\n7YeE+Hy70gR9barnu4xU4B4DiF839sA6cTd+jUKKqBrVRpy/puWua7j4vZ+X\n7Js1uMxiLXoW02m6twT+n+LOLgnUzpNbeD+sdeAupLRnw2JYiyCEDOdJ+0eP\nwm12\r\n=OxVr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2_1613045921907_0.8737687181595069","host":"s3://npm-registry-packages"}},"2.3.0-alpha.6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5fe34efb778e3956cb82d1470dc43f20dab390d2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.6.tgz","fileCount":309,"integrity":"sha512-cwhiOxU1dNX/NIfgvECzmGg6qyXVW0NrcgGcAJuXJjv+sJhZQzwsf/55tGQyYvURSPDF9aAb5xa779bKlKZSQQ==","signatures":[{"sig":"MEQCIDEC7t4xNCDoXS3M7tI2FxhOpi1jsFegZvEKnasH2DB9AiB2rElgoOupu5f+oKCCbumIrjyhlAiZql/unRyl97YEKw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJSNOCRA9TVsSAnZWagAAKjYQAIflnf4y+GlpF91DWNJu\n2q9qnpUS2aOqLK0nBaSaSDxysv1rY4FHuzEGAe0TIigOd603dyN4KnUdjDpM\nY6cgjzGM1l0Z0Y+yZimFd/pPthpY/8Ul+7f/L5JMl4CeZ8krdDURKVFmC3OI\n11hJguzjw85JjggR++ljHgzPA5oOOIa7ifpvCTE91PU/BykNPdNyV2DjnIW7\nfNv9zW0JgzC5jBZpiFSXuem3O0Qdji9RAibRJcKucAVQuadaeLDX+tP1sp/1\n+jNWnPULbadbHcoBVajOHia/R5hIZ8ym7YiIuRAhneml1eUvsalAMkVtWlnC\nHq33Tvho+cNFDZqXBcXKwEuDsnxPnTaQgObC9gGNX10nGPabTXriU5Ylk149\nCH44RWaxYSIKHrZHBBwRvfZLoKdvhxpe87xuuDz8btUlOllOlcbvkAe9QeS0\n7dnSDCu97DCTLrKYKi4Wzhf+DRIKEG0PmSAfuSnVS9BB1gzcLdYUxmapijpH\nkBMEZaGKlDb8S/zQ4ExWHKE+zdFnYHrYDUUf68KfToLzfl1/EcMHc7e6EGRX\nc/jX0wFraml/W/njrAu0sJz/sgtSEK0kTZXfrG2mXqWTB6ePdoLI/l8mjQ50\nWd3VoK8vRHOle3eppjpKK03WZ/TJ+14IhQMltCdVclhx3GiY/SGb0957Q46C\nY+Gi\r\n=OBlw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-alpha.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.6_1613046605542_0.9456184454904515","host":"s3://npm-registry-packages"}},"2.3.0-feature-ef065b-kl0vjvc5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-ef065b-kl0vjvc5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-ef065b-kl0vjvc5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9ca073dbf0475d46cc1236b6bd2110f75f4d93a2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-ef065b-kl0vjvc5.tgz","fileCount":309,"integrity":"sha512-CVjKan0dMqOjHaVU8U14fbif2BdW6xBpA0jmPlVcjqJViFT4pGMS4D/MgZ8wRMDyCBOGQp0k0YlcAHeftJmpAg==","signatures":[{"sig":"MEQCIDKYsPRm+wsGevrE81x0KLLu/1S6PP8sbP52S1TNJ9jdAiAZ7rM8Qh+7cKSyqYqU1O2WprHjS5CdWDZNmhgf0EIGCA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJSukCRA9TVsSAnZWagAAudcP/AtIZ5PSkVSh0ilq+iWO\nuDIqfmg5GOitxA0EEo7WgQN6u1jQ7vxn8hHxjS8W/B2ggs+qE6SguCgId3Hy\n5Dfk0a0OgJq4L3jIGh9hTzC40EiQN8eWE3VqJYZHtGmlJmHR/CamhkRJMoO4\nq+iaTYP7yuAU5seL3C7wErb3FmxjRnWquHRbvhsObu7mZsGKccnARGpHcRCT\n42cLiuOnNsDoQdhcb3vEbK6cSrB1GYjxO3FapfY8PuhKScO38bQKJuuBdsH1\nacDHvY54cCZDGwkbGpsp9QiTENjNId8+OyJBS+0LSBAVfPHurNi7Mt7re6MO\nnz27Q6qHqM+3qJR01wwaSS8tg15HGz+jcpbUtTOqSMi8XpM+44m9CVq/bhdt\nNL66gNjsV3Sxuq9p+/7dtC/BvulUrGDJAOj+3ZNXafcUex6B2AQnkQv6sKJm\n3IJx/8Fe4mpBq3BztMYxK3lLzMuk7qyn4qwwHzHgsnK7gnperEHwQiMO6wpA\nGogzjKPtnhQKN1dtJTLFH14JBMFUArtOAR93F7rYVYvBaI61veOzl4XFPwwU\ngnbao8OI9uxmCuw7FMxO2nlm/JN1h2Q/t3n7IT1qtceVM/o61i49N3lonqMt\nELB637Dmvfg1IfEVM2MZdv/9tjK08ecXm4zzLQjkdzPwn9+OniRwyTkgefvS\nyfCo\r\n=a3S4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~fix_join-gateway_detection"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-ef065b-kl0vjvc5_1613048739621_0.7390693433553777","host":"s3://npm-registry-packages"}},"2.3.0-feature-20d8f3-kl0xs14r":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-20d8f3-kl0xs14r","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-20d8f3-kl0xs14r","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"08220f2bd0d07da44f2491d2643e6f2448bf9b84","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-20d8f3-kl0xs14r.tgz","fileCount":309,"integrity":"sha512-FiS+fKdiaXh8Lhk93b8OmT7yIVspP4Kpzuk9tt9mkVx9kzSqcbf0hFMBK8PlX/QelxmgpQxkIh1K6Eh+H8Xq0w==","signatures":[{"sig":"MEUCIQCLG72nLdmVt8SsyJDLePe7uZFndZ1d164nzS9i90vDzQIgRR/Rqvmr1cuGvGDw5TTj8KM79+zOPUg3tTmnQ7/QjpE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJTo6CRA9TVsSAnZWagAA4d4P/0fSD9wwM0eBSl42OpS+\nCN8EFuiwDHhyn9rGSobd4VbPAveV+o55lcW+Bqmafh+ywvL1ifbiWt9LWikM\nqAmZUhnt1zeOxyHAE9mxOdwi84jKe5d4MDvhfeYbSEqIIe42SUCebzJHfaY5\nU6EX4d3PfgEx0a9JJ6qJCJKzUeomYfoQlYbULpyDm0JC8FEbMA0XyneP5USZ\nzxTh8InxpKwPuBfqsWKjsuyvaFfKD/pQoHOVEI7C6JV24wlwvaDvMa/V6Mte\n6R9XR4g6kKt8q67i6lhOFxibnBpHAGifL6MnFxsvcOeVeakJjLc/pseAxxFr\nn1mtHwDPoqLFbCEXzxBHA2I200FmBHeX5Q8cvvyAnFW0/Gfg3lJr6F2LOgwa\nZ1oWdoqnbgDJ9c3MEhjM8K345/kMCGWdNz9bwT105JNAQGlrj/yfiZZxHmqX\nT00oJEi2RUVYJ5CoabetGZna53yx7iy8TTJvy+ycwDyOZ5wa7G3lbRxX8yK0\nT3OcOoDzelC9xlvbT4QVKjtYkDgVujgYqdlXFCn7g79OE8EA9HMM7lNdbavX\nZ+Gt680kwbSDwL+1bO3ORmbzf+0KSUNY/AydG/BVnRu6bFu2qm+BRWhuABsr\noB/RgY/MqfGeSWUDWDv5LECsYglmzqi1tIGijqLsWwpFtudai5cQWr2W18WH\n/En8\r\n=29sv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~fix_join-gateway_detection"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-20d8f3-kl0xs14r_1613052474144_0.4330904635661166","host":"s3://npm-registry-packages"}},"2.3.0-feature-73a579-kl10qcs2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-73a579-kl10qcs2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-73a579-kl10qcs2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"272833012a71d3b230585ed74755606ac4443387","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-73a579-kl10qcs2.tgz","fileCount":309,"integrity":"sha512-pzpHMC0EwTMgTA5Zwqes92zxP5NRQPWVvnQWqPtXwRZFQODmVw984v+t6HlD4ipVHXUTBRHU5hNX4ISjLrodLA==","signatures":[{"sig":"MEQCIFEf0qmiqeYCCDGa4rnwg6ar1aEv7A1RIo5ifzbprxNwAiABxtdmLQ3YUnTn4uXLvnhfS5vTE3Rht1u7e7rQtcTTuw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJU2aCRA9TVsSAnZWagAAG0QP/2NwTynmrYLPTwPW8xFo\nWu5GxrNC+EfhVVtCFKvl88WeU15q6UzEEe0eY/J3IvUWRNU+6eiWdanNP+jz\nMoSUXBPYtBX508iEnxWAIb13jBJ8YOummeHvMbUa+Tm6MGiEspDTnH6zQ+5u\nUXkaIEFog8FUwATL8kZz+pRCtyvVpLltNZwHAXzSYtYDGJ3Ca0BSZ8lTyva0\nMjB5jHBDRGFim/p5E8MfhHTPqJwBxf56/iDSkmkv5DoOisUFJfqFg7s+CJLV\nDisVf8e+Nt4pchmjWNOL+CZeNf98gGrIrgY9y49OGoC6509Bc0wkH0N259/c\n+h0BXHWCj70iAXOmup94IbfxYl1jQ9dSABjrdnOFRhsCDd+JDUPADH7xSuRd\nMYKmoGXK9trcR1OQ+p+FsL1IB3YgOTocPFrdsQ+s/a5d4Lfoes6GJJXGcas3\nzMrEtQuU+gJCpNRIrOoBEtOsgdRVBI5VeOkCsKgrYd0Ra88cAogBhONA42OZ\nedgjqEN6a5GUHZN99lbGxMPoC8fUfWJqvo5g/vxGb1tmQjIqMDc9/bxmIszc\n7oxLazrfYx6mwP5z6zNwK1DSEes3wxTsj84ChYltPYzg0qEhJjHdw3tYgJHN\nQYMUHtbbDPusY5QgEIQY0hlyT6/vybnDIUdaJGSNKGCzfw6sIMAleGWrvVwH\nYXS0\r\n=14DD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-73a579-kl10qcs2_1613057433828_0.10487796407965622","host":"s3://npm-registry-packages"}},"2.3.0-alpha.7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.7","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"54b5c6915800ef19df5e7c5bb8e3ae8eae133c0a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.7.tgz","fileCount":309,"integrity":"sha512-FhQSE/Ljfv4nxhSh6T7Co5cP16+5O28DvMOR7PZ3nDNc/oN+HRiwBbCeqVU4im+jdCV9Y4vQ+er8JsQJct1dpA==","signatures":[{"sig":"MEYCIQD/c6wE1j0iK8fxaPpvM2TJaZVn9W5AZEjy6nTATdOVYwIhAKfPzieqLt9VzUUy5XGk2LCNAvLqsGP2eAg/uDa/jeRP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJVA4CRA9TVsSAnZWagAA9JQP/RdPF4LbCfc9RZnNh3NB\nsuvnS/J2J3HprFRNYPMF/VCjlB/pH2ZVNoTTMIqaPy5S67KoWAtZSfWCnZYt\nXN0+UoPrx0fejhhwTtbooPIvK2UB1AFz6x9U+IFkG4WPzhiyBKHYUuS6siaK\n4HK66F2w8HDE6YWyNgVOsiCpTgO6RDPYZ/Q89zK5DW3VHhAexv2J2mA4UcPE\no81lhBfjZF/49botRLyusN+767gkB0Qc/DEfmSM3YCl1+1v1Zp+LAA1Tfzw2\nHG5ezxh46lClI/06x/yDtKmRHdjmiGjizbpwy6w+6+9e4dXA/UD7G+zp3gnl\n9m4M+uyFMLY0C2EEC/DA4FjdRxh7nC6fXh3toI1nB8IVuo09RHjyso+ovGEG\nVXkRQVQzbZ4/6+bg0gMHtPWRtisKDNYRwPXY+xcpMwrqsOrDV3PDNY8C6gec\nPBRi4909nVnXGUH8p5LS4Ym1rMDjQTIbl2yaArVXIs2gq2tmmrL8BscYEmHB\nVJuH+oElngdDBlFnQonw5JK/v8gzXyJLfWU6Z64HbyRP7Ck08Ej0RRnmApv5\nQ3BsW85CXYxzSL6/oeVXuuqnzd9Vigg8JVu48gtAsqjiFkY8nK5ATZZ4zf1P\n/iBLYJjWKU7sriWU8VHxSrR40F2cZuyijWjzS2s1CX7QXpX4Ey5BbligSX6m\n3RKt\r\n=jFDD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.7_1613058104196_0.8566174354429392","host":"s3://npm-registry-packages"}},"2.3.0-feature-a7ebec-kl1bng55":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-a7ebec-kl1bng55","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-a7ebec-kl1bng55","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"efd490f3865a9c7ffabc341adc71d88cc87aa1dd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-a7ebec-kl1bng55.tgz","fileCount":309,"integrity":"sha512-49x+4xIIw61ZNzbRAjYiCPnuiCVXRwBFPLUR7kcw/pgfnmARRb4uyKd77so7rje90criPA9tfFZ50ZnSY5xsAQ==","signatures":[{"sig":"MEYCIQD23qfRI2lD2DG4EKIPpPFoFANlOkm78CvoKMJB59MwEAIhANtMbeswoSZaf0EQxhZSRtMbdLRjW4amMlrmFZV/5Uio","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1537006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJZU6CRA9TVsSAnZWagAAJGkQAJq9UFQ/7+NDC45AGfKN\ndNzse0stS6IAdb7Oq7erMTAIQP2UJcxc3Eqg8DJaUNFTzXoiTqLPbAzKTHih\nboHTvCG1D5/jOJB3Hw9VfrNRkX5VPCYtA4uhpc7MK3M7Sd+/6ns+pdzUzz4L\ny8ZBF5F3CxaXBqvOco+MH0A2xS88tJTSNViD+/FLH1wKtOCBzlq5RlF+/Lcb\nONN92+CakHIRq7OdJqKWwYIZ4qOlFNrX4xM2d6lzWdy4T3/acbTn/et/QfAW\neAbvVJPVOQ8TudyYZnqnghlpBp1lPxWGwCxWmGQD92kYa+r6bOOWzP64SARv\nZkpB6p79zYsaQdk3XlljJoe/Es5Bt6lIelx9Atj0OsAXBvVrdr1Q4zFzDpNg\n271sVdUn6MdviSrsK03znzwKWynp5HHjxXyEmyCGMiU/vrrMJbRpO7lihjZ+\nr9EMtpCujX3NmCEa9fQkt2b5CZjzVRxrYkeT4T8XElWk/pr+zFkc/f13apAF\neE+iQ6v6M1Z6/+W1Ni0u8KelOjS3vO8kU8E0VA2RtOA11rI3PEOGBnbO8qTp\nFDbWptsYlbsHKlrjuE4oWum7QJnsMPmBWPB2xmS9VxJHzzAp4wEQr7eMKJsC\nnyNFWr74ICUYEnu8oqUkUnmBK80qnzRzrPs/23keErS0q3WLcWjxrUFdRXo+\nUkoJ\r\n=Vs/j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~enhance_trigger_message_events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-a7ebec-kl1bng55_1613075770295_0.5264168727727294","host":"s3://npm-registry-packages"}},"2.3.0-feature-17a3c4-kl1bst3n":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-17a3c4-kl1bst3n","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-17a3c4-kl1bst3n","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7b5b69558c17276302486ed5c7ef63623a2a6e9e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-17a3c4-kl1bst3n.tgz","fileCount":309,"integrity":"sha512-GsyeGcKdBQ/RDzwR9/gpH1/uC4IvL8HO54Yhg3lVSlPRZhdyuUnDjaEz36+j58dR/QdRIVeqViQrGKsIaVlbLg==","signatures":[{"sig":"MEYCIQDecAh/OFXPxiE85g5+gH2n3koKZIfqKqmK4+JWcsKTVAIhAJn58ltUiQcaeLBYGGIed4eJ0sX0ZE7s7M7mjRoTw5IF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1537006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJZYzCRA9TVsSAnZWagAA4u4P/2yEb61dL+zN4rx+Lo8B\nDK5l+XB7rxX4a4bm18Wt/CUFscNKbVkP2cu36DeNLOUUAjA0f+NEYCsV2DIz\n1H8tYaz+l73uxFxVVtjWXtIEE/BSF3Nu9gxh36PcworSj19SYc6HVH4a8/ZS\nSKV/MdidYFSkZ4vWKdZtcf46aa2R4C6TzFeco3hAVnch+FLJmTwVP8ltT4TR\nUdNrx9ZF39dvGTY/6qJyLWmZm/xCqUgBhHM1fdFj7yKCSKkzUnqI3sxvY/kR\nsqkB1cTeJE8su5VTpKmirG3wSAqrshG70HfIpmvGrtseuLy0kJQBoSxPrup/\naAwyvnpSXgvFx5ms8JRA2Wx8FYAJpdgTHLITyn/SIQ2EOgw9h9p1wl28NGtf\nUGW7/2uLS21XFRed7OUWZbYMDrI6HjEPJV6a8LkvQchg7t6vErahmndnyunf\nRekDcCsqtcK1UAOmKRGsolashBRtuvVT3vAuGKOyKRR7CqcSiCX/0UpxOvPd\nca+Fr/sgeKS4/xynDTL6Q/ZucxwgyG40OsFvDdqdgf9gMSIe9C2z2UsfvFZn\nb3hlvmZ/Mcpw1+ySkBmmzei9ORXJ+iFxgGhg7LZC+tlg29PycV1I8j0xcq6m\nyNw6TWrXdNbgtVv1xl2Yq1HTRzy5AIQAvkM+jAWdUcU+QxDJ9N012bFuyg/6\nT1q8\r\n=78hD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~enhance_trigger_message_events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-17a3c4-kl1bst3n_1613076019412_0.021248577572819283","host":"s3://npm-registry-packages"}},"2.3.0-feature-26f711-kl2a2vbo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-26f711-kl2a2vbo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-26f711-kl2a2vbo","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fdd384824b00826b771d957ae1b11da6409dd06f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-26f711-kl2a2vbo.tgz","fileCount":309,"integrity":"sha512-l1rXFO09VMRIvoE2l9dd6KmtFJiCyKXktw6bXHZYS3ofwX8K/a8/wC+YOJUuOf1llilKh/fSThVlbD0285GRWw==","signatures":[{"sig":"MEUCIAJpnO/LtAMIrnShoMII+hLHqE7X1J1NLAhsiB6khGyJAiEAqgbfTDWMEAxuKkZ8w72X3zi+uyWk7zSxatJRlDK3R28=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1537006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJncfCRA9TVsSAnZWagAAfjgP/1RrpLY8FsyQT1KIJ8Yr\nFqR+x01bOEzvrYhCafHj761XaT004iSRIUoLf1NnbLXZylUqJci4Jo4g/uPG\nrbBwU4oEscpdHHyc/zl9xsQRhBT9bXFw3ZVHSdIDD6ghWvodBfeXrZBi77kr\nOi3BQ2rRxgJQ9gHqpFNsTj9KlZVWOKOROWvWEMe83eASsEaLXRWjJ+maQIaw\nL9unfkF1OlnLpkaHqOWK/FyOy0YPwUNSqaQIqtaD5TbgXB/7p1SCet9LNi7D\nsHtziL76UzZWXWxCf1IgMGRsZtnV1oUHK38E3JD3h//9N635pQiYuUGcm4NB\nLz+lzCB3/FZsx7eKaca8F/TJAWwEFjk/UzszxQ/OugVIIQF9FERrvq3anVnj\nMQ580ffOCc+PeI8zNtJY8aNXrWBxyZb/im3Vuyqwdc05GXeFt9ikcH7YLh1w\nVO4FDO6/VhWeT9+nz/Av8Cq6E42Mz2FSIdwbm1LFRX2LyQloAazuahz5Jp+c\nNSqz4FwhqBnqXYJWFjhKqgXIfT7Ky95wEfERs4pHgYPMmjaYnDo+y48OKbgh\nOWo1UoLj2wBZoxfJC5jh85pB0v4qXctcxogwZYGztXCajVIlHwkK0BEFsMat\nfAdQYjMTfS6cGh+pvzrBXj11nkz3E7A6tZmWPo2qub3nRQk05s6ty4CH0q5i\nwtrz\r\n=2Jzu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~enhance_trigger_message_events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-26f711-kl2a2vbo_1613133599103_0.10822739110196777","host":"s3://npm-registry-packages"}},"2.3.0-feature-e870fa-kl2du4dn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-e870fa-kl2du4dn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-e870fa-kl2du4dn","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"22fb34d5cba25f91e94cc3cbcfda0814280ef68c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-e870fa-kl2du4dn.tgz","fileCount":309,"integrity":"sha512-daeiiClRk7UD2cdzWVAIGNNkVhCh/YANufeSaKHX1qsozOHnVUwzAmTdzqZvrHvpXSSeBGAi8ZBfv4C6MacDkg==","signatures":[{"sig":"MEUCIB1Nmvpc3XvbkugINVrqAUdyBHzTzQ6zUcQq0nDmpiQbAiEA4rCdMkm0N/BVTx9TH4rnjLecO5qqJ/WfTqGt4TPTl1g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1537594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJo/DCRA9TVsSAnZWagAAFeUP/1IlIigslq2ZVJNe+pi+\nfOZxB50e6vypt2nf7hyy0m8fir2cImOwo3n06pXVsdOttbm4vp8iHwXfSDLS\ny+HKKWXiOICyQ9iWmt5UFxS4SsUJuNbUEhroy9PWqj1U5JCXYci+lUBq9Djy\nvCcbYXOguGrFAKSAqxcXDlwDmQRuZhlLPn8U1TvVOG83I0wICS7Ne7nqOZy5\nmiEQX80h+NMTkFCvQx5NtzPMT3CsBMv1obkFPPvm1WzJiZl8MJH/4iFzsNGU\nWocNyUVr6gqe//lpSo9FuVA+6gshwJLeeYNs9u0fNUfr/bDjaizXuBKDmHm2\npCzETiGjlJxScmLeyGeKdzKNpYCl/7ojtRD43T5Hk4U/RIclsWU6CV4HlKdc\niY6Lx4AvhrVrBU2YHw50Y9x72md3Gv0MpDFBISExuiVrg9/LpBbc3OMIiYOk\neyHAZY8C0ObDUzVfb4WYMrM76SGTK+VPvHuW5k+cxl+qMxObaolDw5DrZrIG\nA7+kjPJVO1ElevTlW23x42eGoLnP/FLGUhVavW2uitKpQArMUzg9I1G53mO7\n+IWjcN3PsOqEXpYT48wWoQbzrFNOvWzsJDXOsaPMoCUj4gt7fY5J61uxzD2p\nx0uuPbD6Lq80bxnrZAAz/cEfVvRCRNEgsXx5OPRNxsJvnihOOXuZks4tN4lr\nDlhl\r\n=wCUy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~enhance_trigger_message_events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-e870fa-kl2du4dn_1613139906445_0.2615796577561471","host":"s3://npm-registry-packages"}},"2.3.0-feature-b2c369-kl6d8si8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-b2c369-kl6d8si8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-b2c369-kl6d8si8","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2315bafe331c11b680ac91f5fb3af5353812240e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-b2c369-kl6d8si8.tgz","fileCount":309,"integrity":"sha512-JtlC9FpjSp+MyWA52e2/sMEG1OqKpJUru6W3h1AUgknJLhXnXr4U6AaQe2PysaJbxAVD90b6OuORmWTekCQ3dQ==","signatures":[{"sig":"MEUCIQDDEWH9tkQszOFjV484j+VHyHGGTYnPh6HBj7h4XilYGQIgHv9Fa4K4kY+nWyUqsCTthpSsa2qMSTtyuTQY7Qu3GY8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527471,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKjyqCRA9TVsSAnZWagAA2SgP/RVOes9eeez2AgLgfxaW\nhLn9MWyxGZk3rHQyjg8PZ7w6VdeiGzKzLWbEjIBZN/f2MLdDwDN7fwZ2xnYM\n8bJmorlZeGziDcL4+Y4XAXtIexFeZoT9XqGzqePnhy+0/VEYRM/MKjk8Br7/\nGVsYD6LzVGIdnR0OgwaU82yEset11ptMUSKIp7gRxl/ro7KC0z6sliVnH6KG\n0fDCwiSGTnmjC+aE0I86r96Ov7XoDtqEjo47RWqBKHYWgEHrtNypUGM01ku+\nKPSdKZPOPB6+Ve4pMu+VjEUAP5zOIMbsSkj04zkga9yf9r2x4QFxMJg5FmQJ\nrwviWOjegMKqiprUCNQtj0vX+0nKxTpFxVwvUPvceQsmmIYUrsaYYpWlLCVq\n15CmtNwwnyp075nY2KwePBsqQIOS6OWU4mgsjZgL59tLzBEVGds7J4K460mG\nPErtfbmeYIrziSbEU9XNNqt78nl4eX5iVnWOVGkt3KmPT/Vf81TsdkWowCfy\n9Z0nb/tPgg2GZPNlXAPcH1dVHHLjpan4lK30DjugNBf1oXEd+kXs6zFIFWga\nDKPu7nHSf/UvX9xe/wNzC9/bcvrEzyliQ9W+zpXXeJKs+RPC90lcxVhrEiY2\nE5ZFWjAB27IXSaYp9RtIaZczGSPLkqWSWmCJZrRFuMgS1ModgDZF1Y6f7lI0\ngaGc\r\n=CweA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-b2c369-kl6d8si8_1613380777483_0.85669732164144","host":"s3://npm-registry-packages"}},"2.3.0-feature-da0582-kl6f9ekj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-da0582-kl6f9ekj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-da0582-kl6f9ekj","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"625db7d55f1f56730311dc84cc3ee058170a7389","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-da0582-kl6f9ekj.tgz","fileCount":309,"integrity":"sha512-qohdplSAIFnF77Qqp9JvruT0bZWXBgK6eA7oTKM9KtIwd7/4J7LSH9tZY8JW7iHJ2DrxJ+qvzpsxuxi/Ptmrhg==","signatures":[{"sig":"MEUCIEy8b+bRj5x+b4xyo+lyKfCu+U3jTPvPB2rkQ/n18i3pAiEAudi7MfCiq/oBh/iX2jM+l6SkAC3AtITs+aifTsPSmZg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527471,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKknqCRA9TVsSAnZWagAA3j8QAJ9HM3wHZZ8Efq0Ue6Eq\nBRHFvhQrThjerzXnkF9JSSICXB8Kax0S44iYZqn1e6RAwt4XTv/KBvdsmPyp\nY5Ck96DTe5f0rvDb6J6cxDTLkDTPy9ckFJyBEBrTYlPcGrcjt4QDsR8ps6DA\n6OvA+TwVmpT8hlTVEVSHB31De9kqtMJgFXmaYrvthTf3gv7ygvcoC/3mogkU\nd8Lq/o9WQKjVLb7RXHgmWCn/peDzOxy4G/3uB3wLY0G+W8SLsw6K4q0sOYc4\n+/LksZlVsVgP7TtYyo/zmPm1CAwe2NF8FMs9Wwzi8bWFNW99d9K1b3R4i8pJ\nV8+OPL1kBGD5VQC/tMQNI+180P9moTUvM6x7ukoo3r8XPkyu7jVVLVMUzgtR\nbXPGdriKRSwyNbWMErF7i8DMnFVjv0DH+pS/Vz7qMx5wWGkvxI1vUChJwx/z\nWPxPpVZQdHJbJG9jCmny7OrQNRQkySnoMw82mggLnP3sUzIgZ9C8NUP5FGGr\niSyej8hpK+30YyHGaWerl2N24Go3uphNlVE+PebPVIoPYBRSv1QitnFt7yBr\nuoVqA6i26mYcsOadLdTFsaf/FWhWf+7H0LoHwc5ueYVNWsbtgiJabDYvXRZx\nAxfJXIr/d4k9KIHRkxvVxdk5mrwWVAS5dzc7iGJZ4vI2930ybzeNgklFrnOR\ntxki\r\n=Fo2Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-da0582-kl6f9ekj_1613384169542_0.3183136003608813","host":"s3://npm-registry-packages"}},"2.3.0-alpha.8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.8","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3d3bc5288e91996451865836d689f9ac8cc4a9ff","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.8.tgz","fileCount":309,"integrity":"sha512-fFYmXYIpR5nWQn0I9dodqyaMozqI1jSewYJ2eA+8WyNdaY2FQ+IwfZxh3+29qzC/hrDUyPTCj9tSN6Ndlo8DdA==","signatures":[{"sig":"MEUCIEXTzg4WUv7RFIkU8vktAH98oaltj77/SgNLE0QJGYHvAiEAhZom0CDmSitN4yYe0u/4tWVUUsOsUyK7asA58AULvws=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKnafCRA9TVsSAnZWagAANrYP/REWkO6jdD8zbELdWwV5\nqwxrmiAy6s0HHh/wCdFsNn7ImANvEwGoiolBNP5XxjI3l+5bpjO7WAw18o7q\nJLczCfKKC2p0XFdD8b//R3baDsPOMpmjOymp5X8JbaYPqBy/yVt9nN/o58EU\nCLBTZb93v0xG7BS5duPbuijWIDz7zP7NI32a1T85I1JdtcRu7Ua9YxKAqlkC\ncGi4fhOmsljhLN9TqlusRjlZfKguJ/SDiltypv2w7kOaTImyTsOOKXOlI6wK\nCgobaVau7ZwwiECeNXZkl+1E6PjU6dM+Y6cjcyt0CEic6mEqhgZT5Plkx+IG\nedK6JPaKB7f3mD7uEiYzCc9Mpecn5duGJB9H1L3W5Y/G1UCoXybj/wR47um5\ny7Y9LN8mhdQA0ma4GtIHQcs8jwlyhX0U2YHJWVLLh4AyMtVWCGTYqdWI8xhC\nyjq+ms6wUWKxcHA2QrY9dJRzt6JzVRqtEnLAdONzg4oaUjl1J1pfoQlgjgsq\nId4FriICopoix8sLhp5gllPOEnEN7mepIVj3P7EFTZkZjJK8FzVBHpxGvoBw\nmehLmyDB01vvgbXrOyTfJ9EouZ5j9O0KMDiDYbs7e+NMjVW7rMiSsl0ryfH4\nSzjgLNmb2aZ0OmcVnRaHIkpmhOa4yvRneg/CGOQcGx9QZAo9hgFRq2GGPxhz\nDODL\r\n=bMB+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-alpha.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-alpha.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.8_1613395615030_0.8066854045208123","host":"s3://npm-registry-packages"}},"2.3.0-alpha.9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"41c57f6fe40b9db9c9101b2c545644660b417a40","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.9.tgz","fileCount":309,"integrity":"sha512-hwnkZT6rgW9r6NIcREWAKrutQrqSZlyg+FtYw+y2DkVEYIwEopCabMEfDQIHoVk6/XRnjsCP0OypItw6ijV0/A==","signatures":[{"sig":"MEQCIBeA6DQxnlwDVi7cHXjCnC+KT2WgL1xIfUoxkgINDRl4AiByb7auH4TlxnKqgqdN2y7SWp7QkcTNC3Q4WkjbEoKVqw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527453,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLOI5CRA9TVsSAnZWagAA73MP/jw7nqpSZn4vBxonzb0I\ntX5Nu8SL5dbMbap91vdU34KfSszff0Xh1IIHpw41N2NyyNKpfWCUJxX55ie0\nVdj0yzHjljleNr5008aw02HxniUhbugaSpF25oLiV+1Snu0OeDZUdOp2nC6m\nh/Yx2cr0gjiNXBMJLhlGozRqqWxj1Ou/AIqp85NX4+ALyNdKBPgsw+4bTVqh\nXPW32ARBQjWMHC3hEqDqaFAPC6Xw1AuPcwLMhtho/17wZEd5wfSLvFOg8MNx\n4AOEwNFCSizxaqOTVro3U9waCJ6vULlwlap3IyaEOqLPenTeeHR93I2C81vm\nT1WinVsgROu1OWNBwR4Rb+rWn8YCvVbc4ymOc0/pyeZaOr7P+0a9gI2Bn2cR\nN8Rx62fwWy8kj2YYjNDikF+6vd2jLOe+OaH5GBkAufaBRshdKuu9pH0Xp4dS\nXUBqmGrOj6S3Rg5vIxccpMf17T8ZYOZr8ZBucapZWOBzHsNpvTdg1t7/Eevv\nOrME6tKvoZJdT77DV+ni3bL2+j1rKQ1dM34hWgDi3ZAqBRrtrwgI/3k+YfL7\nd3u7wEu7Vptikmix/UnXgRMYwPpXQ05HPP4BGCEB2HAf48yIOGv3LvnY8i4n\nQUiChvdzjjqQvRjZawUExM7M+zGf/6UfNQ4haLof0dPth7s664DTQ4XmRtgh\ni3JV\r\n=KMF5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.9_1613554232833_0.6280857083527913","host":"s3://npm-registry-packages"}},"2.3.0-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"02532e9a0b87675c18ccc5d43247c7d25e55bef0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-beta.1.tgz","fileCount":309,"integrity":"sha512-EeBSC4q2DvUq8uInFXYLDZRK0uT4kAKPw4/9eWreDPNWB/+SXKkvQfYMmnbSHMfPnc+QkCuZHPvFqeVrfLenhQ==","signatures":[{"sig":"MEUCIQCfpa6ypbx/+BtnFIU3KLahOECqhCHasDzY+7xYoH5lEgIgcq/eMlSUuiHxkGI8JPeQnkuxjmmDbFyfvPUYlhJlRCw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLOJCCRA9TVsSAnZWagAAZPoP/3jT6HQPWB07yAMqG0o1\nbUTi5Cd2CH0rHb0ofhQi/9OrtrNfJ1IdVWxpCJz0G6whvc43Rm1f2gK67z2G\n4gEYSUVjEV66BogdYqzevd3G+69Zd+7Lhe+wFjyRLvf0d765EZzOZBN3slU4\nwgRXgDAO+No1IGQRCN7r5eDX86ctYsE1mhaNDH7KGMDmc6VxyWRIwtNXYjnD\nv67Daqj/AjtU7Ra78vome4iQBsxvPzIcRrLXqa1ASuPCtbepDc9e7O1OGWXr\nh4R0OBX0I+xoitrZ/TPRs0Z5h41ZGKC57/F+Km43amL+SUcXZavSpkMYhDfo\n0GCacp/pn3wNAaH5rIEKUSgy8djneJ/TgojtN+VauskOk1dQgAwJGaATJHSC\nWT0tcJtrluccz9AfjQfO+G7eVOUvzVO3awVZkr4+wXT5/0BUhg1b5rseMblx\nrhQpzwDPFTSOO5ogm3eu59qQEthLbqXQlD/IikCzBpmo9uJt7j0DyC6Ut6Xs\nhnKl7lkQjoKe8/UYXD4ypgvJHQGCtf2IZgqQz3r2ARKYtDp295Zi4ow9jErs\nSisV4XUgi4EWtgBL4+IlmLWmx3ofKpERqQ8pgNTzQwkgAAAUdhC0Bvw3aYY1\nCuVgXRKSJwKEW+aQdpF6cYkipOIzy9tFtoIs3qzHPcq47Psc1S2Mv/Yf7ugQ\ncuyv\r\n=/2ZM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.10","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-beta.1_1613554241666_0.48920316811117304","host":"s3://npm-registry-packages"}},"2.3.0-feature-8172d7-kl9eynes":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-8172d7-kl9eynes","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-8172d7-kl9eynes","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"83db89b2f4fce7e119cf83424a35f74da204bb98","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-8172d7-kl9eynes.tgz","fileCount":309,"integrity":"sha512-SZPCtkYacsPmvFpLpb0iEkltsHqMzToYOdSjLgNAcb6ciShErfgLbsiL3bfwCR3BqyEkF7uyz4sthJKnfmIGhw==","signatures":[{"sig":"MEUCIQCgprarkJ7Yk197DUFveKB/yY6NaC91ouBFfxjpyVAVqwIgAsw4RqxZHX6lwWBdAiMptVNYFuaD4oB5dkWW1/NfBNw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1537000,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLQyNCRA9TVsSAnZWagAAfcUQAKMOpSVArsr+E2XrvbwM\nZ2vHCyHUcRB2DS0Q/3+RevC4A69KCKBkm61rnSyQ4y5cFOyBaEIm4XiAOhr2\nFNFil1ALxb7+7ogFW9Wh8znLYuA8zv3O9TfkoDG6oQJjYfzELCQn1hsS53PI\nkXQQTISFomXf5gYINGOzrzbbo9TEFtgreZguUBNnvVjOENYySsOGPPYre1yk\nWYacAIFWIEYx5dxmy878a9a+bnik+ek5LLdT3boh1iKCoj2KDPvqrCu7oGg+\nAhGEmgT73/yZ4K8D6agmSrIcUc+WomCRI6YwwuW2B29fbmVIFOjyLX0IDHQw\nERbduBdylfAQH2xM7lumbDwd9m+Ry/g/iIq++aakcDjnaGMlWDQp2RNGUtWX\nhOBNWygCs9onsMzC2SSRuYlSMJo1QKoQ5lJcPGL5qKz8SfACV4BY//yebNz3\nt2c7k8kSx7OKpvn9x5mUMtEQ2jP6/iqEt33aAT8r0ZFLNTj4uhe2rjLfJ6GI\nvEQVB2vzhgcBPOwyBgbd4qZoQk6qPnrBnbSNSnFd82sNcRLb2vn53iL4cIrv\n1JLw4kes7nFCu2AOXyVV89KW48a4zfDvqGdHYy6XFaT77GVFe5X7ilpl+Jlz\n9vsnWklj++R78MpK/O1D0x+UF13RAo9YZljeeMWJxNiko9DdWcj/wjmu5cRc\ntcwe\r\n=82bc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~enhance_trigger_message_events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-8172d7-kl9eynes_1613565069138_0.6802282960214838","host":"s3://npm-registry-packages"}},"2.3.0-feature-bc789a-klapcruh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-bc789a-klapcruh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-bc789a-klapcruh","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8b6b60ee31b6be2f9ca82fed2fbf926d91d019be","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-bc789a-klapcruh.tgz","fileCount":309,"integrity":"sha512-cJv+IMvgecXabP8rWiel9P7IsDBabNzNRT5S9TZjYPWccDHfhjAGRBPyn026DiTh/bM/nyX7C3jWEM9yg/QGWA==","signatures":[{"sig":"MEYCIQDTfUYCmQJfNFDBzlQ1INc8O2Kh7kfqKM0GnzGOd4aW4AIhAKfFG0ZF+v9lmPji6tRo0f6mp/iOanILJtnyOFQcfNN+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1539124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLjzqCRA9TVsSAnZWagAAJkAP/0bo+/SFpSMDzHqfKU4w\nK9/XgGDHYvTmNClKPZESYUP1AroSo28Xb0DoZVe9RwwAJWFwWtt9muP0fyhx\ncv5F4H4EahQXTNS+mRFYtCkzsqvohB5kW8Kd7opstY6LfQyh/fTONRSTgbiy\nW/am6eaL+2wOleAKPD9EA/DBu60r0OXROrJIQyfBv2c/nDSVdw46ExDT8V3/\ntu1WFPGG/EaPxjM97nmhs3F8XE0RzHTo7HJIwNZ+maOuOVV4utpwp9NO4pN6\n+ih3PS9VBsM6geYKV0PzUZ/FCaZykvy9mrXFByuB+bDfTgY7nPNnnvH6SUC1\nBdKUI2LM6y7LgvNTd6A1KlhjIhtbXu6Q0OqjOmjwMv1zMbimof4ONSHsJrco\nANV+zC8D2thll7DHBY3h3qjXythPgD9UllwdTRLW6YcNW+9MpZ7f1LepQ2x+\nqMA6itA3e+d3rBhnGUoB1Ooq8+2Ma9puKc0HU/2RfoQUfRCzj4i4XKlZKDzY\n/IKtmXHzPOBzjb1PV4BaSZeCBRKzkFIyo+dWT7zww1fR45TAAGFaWv3E+BI7\nuxwd1PfDlvIY1rURFMICUR872Ux2WXF78EmbamR3n/Twrz0Eov1uWxMFk9wv\nyVK1hLlHALaWN9bPle9uCg5k2faLzjWd838Y/82fBCZcXIprnApdZQIa3+hk\nwM8B\r\n=m4Qb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0-alpha.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~enhance_trigger_message_events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-bc789a-klapcruh_1613642985297_0.2452900976404866","host":"s3://npm-registry-packages"}},"2.3.0-feature-36396a-klc51148":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-36396a-klc51148","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-36396a-klc51148","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e2506dc619695226174e362022549ccbe492e0c8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-36396a-klc51148.tgz","fileCount":309,"integrity":"sha512-WeX5JwWA+ZxUojKwYjv/xpZoBRkfWrp8eQMjrkEhixYb++EcBw5e7cDXVS8xs+wqGUwP0vTiq6JAKq/HUxUF4A==","signatures":[{"sig":"MEUCIGTon8BRpulM/hpTMRLCM1I7Pye4u5HTsBKQscqDMAcYAiEA3OgeB7LzsekSYZGswWRuVGeS+QyO+K2nUZ6JcdHxZSI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgL4/uCRA9TVsSAnZWagAApysQAI81sPokBH7PPzm5UAg3\nW4IR2BBdE+Qy+hDETapM6efvnnmVDxIg+8E9bKxdg2cYCAl2xcPyYgfXsb6m\nUj/g25ylK0eIroWF3Cxags4/YTkOtC6lNhmGGx/BUt7evqD0QYNl+UOflPKn\n+pVhsNpUbJ48pkDPDGo8LYdeP+7wyfiWv9ZEY1mZcoP2gcNlaG+tiY5jOzDS\n5lsXzCXKqdh2x+dSgUhdJKxIzikKh9jx8THRpJdh173Z8tq00F+885sz7B4u\nU5lVtLxIDiHrQwWHkvOoAA32yDgkOZvfDvfgYO7wY/iP/JTRHmFobLkyodvx\nfQKRzSvqA968F5QXnMYFrovVP5c6B1YnY8wUPmZCHpH/WuLpAAX2DFpjQ20e\nVAGE+6MadCntufq4gUNywGefvJY2saayoDpteFCX9tdd8sv14CEHInxadNS9\ne2AC+8GwpcSP0MYVAQjy/GwNE6Sg0GNQLfGpfHS0U6Gse1ErJnx0bFjyVNBX\nMbBpfsuQsBXy5yHDmfFED/12l0YIBD//kMzhnvOVWeQV+TkhWrG1KQfLYcDb\nWDkDorf3rHLWX5ArCBgz/QRGatjAiEbEqFjmp8eDxrMD4F0fH68Fmd7qFCeC\ndZ/yZZdf7wxcUE1FYaDSfSFf5UHbetT42xgX0QOCrcWCAljABAc1TuA7mJBR\n6Gj4\r\n=eM/j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-36396a-klc51148_1613729773728_0.019483949635004105","host":"s3://npm-registry-packages"}},"2.2.2-feature-dc27c2-klcbuigu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.2-feature-dc27c2-klcbuigu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.2-feature-dc27c2-klcbuigu","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a4fa4bb85f44afc89b63f656e99cae17a3d80e3f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.2-feature-dc27c2-klcbuigu.tgz","fileCount":309,"integrity":"sha512-8lCsw/sl09LXwP+LvUnEDdctdSBFeqrMmsaAsYt2wk3zzBtnJ9tyBFqR1eyhbuLsAwxzzcTkfhb/KmJsQpUNTA==","signatures":[{"sig":"MEUCIQDZwbO7KNdOEJTB3PZTRq14g+5WJtZqOYqlkhKLS8HfIAIgdxrkhUmAT8+vdDUA2w61rM7h3EVQSWC2JWwZmq2eyeA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgL7ytCRA9TVsSAnZWagAAQxUQAKP7ZKgM+LDaMpJUXGyb\neDwFnPMa44FW20yVUUUecThIJoTMiQV73K2iWGbzhbHBsD4DX3m5jGgGkT9w\nmC17PBcAOkq8sVllnTzHMEZOncAjzjlvaZR4QZ4g4MCTled0ccM6cr4NTHtW\nYL7CnCPAkqbU8oBAcqsW3/lR1le4x390DaaNvxUzofU/6ePGmO3Z6hjCHgaO\nctTCfvMT3mvyD+UYTO2PslrCp9+zH8YjcmC3Drtb5IJm+abdEifgQmN+2LaR\nniaDwQMr/x+O8yGQQyWqwJYD4zCojakqei/H7MznQ6ka+l8o6VRFCPIQqi/O\n+r1AcZ5tkKnaSncgsgpB/q2zYUszDZiYP1Sp6IwQh+4e6B124HlBm0mUfLMZ\n5/O+bKejovg0t5PTrG0tCyk6evpi+yQul0UCoNiAxnp1BSXxEnOVdTtdCmuc\neFAQ8AJE4xfcD2sqo5rHIr34bV5sH+lrjbM3sp3vvcltEG7C/HB4Im+Alxil\nd/DakDSOLhJEhreViA+89wb4JjjqbS1T6DnxAKopaAFMI7CUJKAB9ct5pOir\nyaPUBZ+l4gefAtfQPXnLNuhPM39tWUnUSZSqB5Wj3ft7w9bdlf7lBxpb0Q/z\nrN8i0geO4Gf5I8+W1rl2hF4PkLCRMx93JDvNfgMapRmwyPYrLHbcYriY7Pvt\nSdeB\r\n=qBYY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.2-feature-dc27c2-klcbuigu_1613741228821_0.7249297224111189","host":"s3://npm-registry-packages"}},"2.2.3-feature-102fe1-klccf6ic":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.3-feature-102fe1-klccf6ic","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.3-feature-102fe1-klccf6ic","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b34a288000310bc5df2606f456fa2365036f3d21","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.3-feature-102fe1-klccf6ic.tgz","fileCount":309,"integrity":"sha512-aCRFDlLcFZ/4fDvXMKncgKavVZchv3bEC/xaeKUftbWmF5llYSGqR8q1SPJ/0ETLuY2lPs/Eeg8C+Ds7RmcnDQ==","signatures":[{"sig":"MEYCIQDdU6aUbLPOhMSzh14U3+WUVHBzZuyVBBPKIamhJuHG+gIhALWDeHl3B7fX48+ug7L5GsV0zkReHemeZaJbL9rUZ7P+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgL8BzCRA9TVsSAnZWagAA6NUQAJJVMcor27/BYdM4ynMU\nYch9P0rEVvtNpyqbLRkdpblr7tBek1NjOmKTrKi6wulXH8pXddSIPCH7xuwX\nyLP4At4Dh7yCY/D8b8qf3ruJsBPmBUFrHpTV7Bk1q6EZMsbZ2YODMm68hB6Y\nrwD+aSZt7x8/99iLN0Z9S1/avH1NcL0rVm8D/ycCWh8qy27CJLZ9N1uSOGGR\n/4UUp6HB9EZ3s1sLDoOGdg20Drxia6BpbHOxGa4zCxG9QKyMVQNse2+AOpMp\nB5+3xEiQB+W2hCEqRkwWesGeK44klhDURReWPDP01Dy9qQwO55NNH06XJCDF\nbcNJ2bJdL1k8sP+G9Oh8OIOMEPRrkKFSfbbKqDjnJOEMkliJl8mqMH5w9B+e\n1N8p3Vzl2MG2ZghaBRrHib2c3GjRMUJxlIEJDtujgq1T9dCcBIFWMwKi7cPQ\nS9ZfqzUKqIvCOgmA1ArIxWEOQgLpqnfGd78JEWo9u1kbNe/4derL2BYvvmut\ns2HL+s7PP1vjzzmV7loVNlgsMWocaC5KX+iFrj2CZjddDXdq2dl/Hs0+gmrY\n5yuhTBrAEw13RO3d6dEFxllG8OEhjOXdj7/U/tz+VULzH3GMlraHbIJ02V7E\n+OmIfDY9+k5o16zRncRxubbCYvFLGkxtuyjIivaXvI2xytPabXif3WQRQ8UA\nY2JA\r\n=o5mJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.3-feature-102fe1-klccf6ic_1613742195154_0.7251965977214814","host":"s3://npm-registry-packages"}},"2.3.0-feature-40cb9b-klce6pci":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-40cb9b-klce6pci","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-40cb9b-klce6pci","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"169b3cfae6b55ea7c138dd16de8d6f789e5ae02c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-40cb9b-klce6pci.tgz","fileCount":309,"integrity":"sha512-flD+QfByCyu8B5/VAYfrJfiXRrjQJUHgbis3Bqx7waxK2uiqX0idURtT5X4sZJiRTkjB3rGoOfMkf3m5QxwzKw==","signatures":[{"sig":"MEUCIDQVVkaaptIPjpF5HUBf6fIu5aZsHeLSy0g22QP1uWQRAiEAv9iuBY1wzsjxsyzAuHv8Jb1VKDhQ/vDEPV0fcV+r/2c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1535112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgL8wICRA9TVsSAnZWagAAPc4QAIRxhdr8pGXPU1XSIsC3\n60kF7tRZvMicULi5AT2epkBKiyU3ck9+Tnmu/Khcug6wpCBJV6vrLA5hfT+m\nS/ib00MOwFnQs/OGgzHLYsPOm5ZbV560x17H6Spu0p6XhqhbfkTgZF0dZ4uG\n7gv23jC9UBLLVR7twg3qtBCdP8+Ec3KmvWQaM3vQ3tUdZKT74A987CwL5zBj\n5KZnYVihPUdzOgomfUhJGVSlUwhqLL3wl8idcjsrbvJfJwzUn3vQ8uH6kmdu\nja15sL+0jiIO5ofxqkuIUWGLFL4to4vl0o6qwNvN6oSATZIIfIALsGrxAVYi\nhIyOL8Qn2XcmO9obxljVpJpoQyQndznP9qAw5gh2HUw1E/GCoca/OFD2MeC9\n1sAHnnwWLGvtGRfhGd/eWghOQJ2ynZCEJIHzJ6TJ0X50irGewde4jq8GJWbk\nRqcEnD+7C727tpWU2dFnKfgYcEyx6x0Pmh5bfXWO355pUEODQZpPxVMyMLSE\nDKLLab4xzW83nM5hKdUg7fMa/FCkrf+k5NB9ngfzUxsLOnBin28AVASQCphI\nKBq4Lb6ka4H67bnvlPXKAM4DaDvFFpnaBjNWx+jtYERyqvBpSwvbngh11oN/\nr6KmbbRhxp04x3W8fkI2706F2DkLWQKkQqebOvFnBx+48wVwe86MYI7t71wa\nzC5X\r\n=vkw/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"feature~enhance_trigger_message_events"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-40cb9b-klce6pci_1613745159654_0.82652708284466","host":"s3://npm-registry-packages"}},"2.2.3-feature-8df4e0-klhopp9f":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.3-feature-8df4e0-klhopp9f","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.3-feature-8df4e0-klhopp9f","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"be7ed510d15693541ad5f4d5cdc1feee45116777","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.3-feature-8df4e0-klhopp9f.tgz","fileCount":309,"integrity":"sha512-5XuF5XzxKwg9ypGQB1Xn6D0axF2QDC1xREP9MhgdL/BmVHGnfDbfnBHTHnQBk4SDYIWOnbKTouVcBMcVOikvfA==","signatures":[{"sig":"MEYCIQDuzs0GNUTAAOOPZXihHdNrxLAS3ycIg96skhqgwJqdngIhAOv2lpLzg0cdtONQVLaTwptHnBci8ca9OX/ML2kXidrT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNK4YCRA9TVsSAnZWagAAbIYP/ir9a3qeiKGNIcy6MQyl\n4O+R9vT0KXDn4og3QU1WiOJUJtxEU4L5WhPXKLeuLrcI6ZdtDMybNCbDLqYD\nNkFxnYvRd5ljM7d3ghohgHK+yil9V1KDnOzCvt6Oj7sDLjQ2pXJpAiolYlnL\nwoT43TODd4POiGbZCZRDjgYXHGwe08E/O4GIqL3DltIv/jqH+10bKrTOAb9b\nS3S62NG3Z4tOQ5Mdi6d/ejKJkNM0VwOFs6cSfxt57sS1pV54YUrg6SDPSwEp\nDoFaPUFLlYeUElBHpCdRtGvEhsyDqfuecjrMmjjATlSefF3AYBJX/Kz3eI51\nnNnru5RGhd/pGKjh3xcpr/Rv5PvOBp+GZFbYbBsHqsC3diibDpQz77H/YzHp\nwxeiUxALDr+XVhKp0VmLxcqwtvr+fooCjJx+aD4KET9vFgQURKVg+84oWwZd\n85SiaKGHmFxtf6L8YCpwwy/WNa5+9sWEfQDCbTdhG7Sm1OdHVEDVTSA8SyrB\nRJzJP9Bwx9Naqyxn/ySTsUhKtofdSNdf/JsAcJnADNxKHPyaCpcQfTT+Pufo\n2v/s5Gg7Tfz8PV0qaC8t7bbDpZ1clPjiH7+EdY29xUxRAC0aHN+sxulOVeZM\nhLvlTH3hRFBG3o9HXOk8gk3+rsL8mmlEtDftrPGC4OImaB6tVCr55wZO3BpJ\nT1pk\r\n=Cccb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.3-feature-8df4e0-klhopp9f_1614065176062_0.25844071427587","host":"s3://npm-registry-packages"}},"2.2.3-feature-8df4e0-klhtmn91":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.3-feature-8df4e0-klhtmn91","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.3-feature-8df4e0-klhtmn91","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"66174957e5bb914f4f1e8f2e5ad7b556494d39f7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.3-feature-8df4e0-klhtmn91.tgz","fileCount":309,"integrity":"sha512-ithHxwwri6ZtDDFYLn/13FZqPKfBKxGAcEbXKAoa6KIVk1Gr6+2lXI9eQPnst0lscxyrbriWsfUmV/TYXfqPOg==","signatures":[{"sig":"MEYCIQDhm4IcbYqESyLR2ipcsjZquc5pMFIxO05N9UOgraXvjwIhAKmAbqYyNhPrgatuRomuNUDGBaXbRCRQaBmr8UbL4xxl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNM5UCRA9TVsSAnZWagAAWtAQAIoqWi9KwdnKyin2yj0B\n0vPdbq4qHY3b/D/WEWHVOrxU0ewcaOUGJb8YMzuOgHMAXt1r8DS1/wfnAL8f\nWdEZe6/8cEFXJozbNoKoEp8BGEb8jvQAUg3fWGzg5NF+Z7WdYE0pK8933qYW\nxugLgs1KdaO120KrHM8IwzHvKaSSihuHO91KvLYiXKM0o7i2x6x1Kd3vjI85\nShrLSH2FmHpSZdhQRT7uZkIjQZ+fHogP+3rKh3ztHfzqYxKBQ6WefU/zjHDL\nGMCLhPR0MASdeNgR/w2x0vlMdWPovtEKnDsJCJhHfUg7KVfEsI4ruOIM9UOY\n2SNPzSURGQF3Lk+UTlZBIkeQFDQ/yH1dXv2wBXImDrMle2OFFMPw2jYytG1T\ne/FEZFUi/cF4+gdLfJ98zoePGYSSZYZDaA1mno/X88DXwoKLmxQTv4DyUZCW\nLrDvq5OiyM277skS47cS0XZZFKeeuQ8XjZ4PooeuYf0GC6J9NZDpnABBozNH\ndsuzsCLVwp0hnIUXu3nAJsqFdPzg8ZU95xJZitMf2mosgRHwMRnLTDhX5GM6\n63LTzXtHtftNdF9KlOMhT3S82ezP6YGlhSKv62weoyjW/8mSm77UCPgZ+Wkt\nitvCTkZnNyk8gwYVNT8E7Yh5dI5YNhagYJ4FMZS5ggBrb2fS6/C7WXs81ZUo\nYT/+\r\n=KebE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.3-feature-8df4e0-klhtmn91_1614073427855_0.9117047667726492","host":"s3://npm-registry-packages"}},"2.3.0-feature-89af8c-klhtob5z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-89af8c-klhtob5z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-89af8c-klhtob5z","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9f37082b3c13b480c12712d1485dc4959a91add0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-89af8c-klhtob5z.tgz","fileCount":309,"integrity":"sha512-p4rNz63kSx/aa4qdLaK8URHvn8x6mebYY7YKFupOm4qnVbCj84Yz0B8j32ZUSbGZtiTLvOc5hUq7cnDKeWOs4Q==","signatures":[{"sig":"MEUCIAb6ofPw84W2E4qp0n4OS+xYc35IPEBe0NKYOf8051T5AiEAlqG0w5Gw9vftOnVN5Y8CM/wpOOrTaXlrg9QvAthvPGY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1535087,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNM6iCRA9TVsSAnZWagAAqR8P+wVAlJiNh5m/mHjCz21k\nbvBdBZ3ZkksL3b47QjDJC8tnuJB4skdOFQY8FRrWYI19+xlTv/qJALYYFSmk\nAZEReUyWA/FtOixNaQJVSNGwGbyOM8Ndyzd/o7jSj4JXEMDSeDv0eaFjurQl\nmXADzhzLxLG2VSdACW2nqktmt+wW6dKecles7B6eQ1YI2r7ssWo5PRiw6ehh\npxBFAHjNYG7eWsnZ0fSwoXi6x++vTkXU+05Qf2Vgm3oiIePcxlEsG1U8Yz+F\n2rkbCR1rIBCXRxq+h4/HFFPjKMSkFdaCCOq83WWytKw3C5IQVMq5d7Z3T32C\n8DtyE/vgYWZOygNtcyftXk2LcVZJfVrbKdYQPWBC5E5y2J89wAZ7EvYLZKex\n9ZkrohL2heq9y7SECpR/RYHlNSyfsbkdhLW/YpkXG1enBnWuznQY+DIHxPyV\nQD3FiNYtxvawJTnn7HC0WJsTAwyDZmGDM6+NWzXpgSdKRI15SGZb62da1yA1\n7x/JOPJDOooVEWAsky+wKUUXN668lCPK9h+LNKaV5NcmreSwKJEIlSPN4YK9\nYWgZKiP9hFmDr+wjsoBbmkC83fp22zLXZfbiDY2sg4dFeaQPEwFYxB7Ovmu5\n4ML/chvgGn2bmKS6iPCYa6DKmdC3A24/Zj8dO7RxK3FIwHFwOYAVDy7FW4l5\nHAKk\r\n=e+gZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-89af8c-klhtob5z_1614073506077_0.30506559126482524","host":"s3://npm-registry-packages"}},"2.2.3-feature-d2b9b2-klhujvp5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.3-feature-d2b9b2-klhujvp5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.3-feature-d2b9b2-klhujvp5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4c783d0a341e5a284f20378f1ca7e948a9308ac1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.3-feature-d2b9b2-klhujvp5.tgz","fileCount":309,"integrity":"sha512-FrkulCpHPrubuEUwtaT7WQKNvi4BHdS4QWVaGSxD4sur+Q7eViOFktpTWLx2GmCOwlB77NoG750wZjfqYw14SQ==","signatures":[{"sig":"MEQCIAltHW7Av7A1bLbET5qNMqRXs/HtV9RjFNFn2VKRSbRcAiAbHVijGZuGt0He7omF3U7W7kvgvjx3ru8tWD8BB9pa6Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNRjCRA9TVsSAnZWagAA15QP/1/ctH1B4zqMONyzOU3c\n/vLfnz4WA9TO4/qH0FZJZn9dQHUMYal1ooiulbXZt4eBjv/lqKzhJF/ikufx\narMcsj1rIwgws8Ecx8HbWnSR4HYV066TslNScpU12tT06Iy8NJt3o/ys1v2j\nge6CRsbg6ppQIUkM93vqlRPAUK6cCPEKO9WvHYiWl2BsSjUISspmJzn7yCnr\n+jr8QP8ifqN4J7iH97hOucDxJMmbKbxEhlzPHv4oxjm/MPxVN9cMt9e/9Ckn\nbqxn19OOIymkZIRKAwJ5fEeaPwPPBwpPQa0qnd0RBY6Ymb8ZgUF8TFCY0XOy\nFGYHYPCWvGXB3yVAJMvuXro618gWggMDzvW/+avPw7Hj2Gt2KNIcXPGOJ0GK\nf7SfzU7DgJJmi5qnTnSMVIwW7gg4gt+lS9KvegidqrKZ4aZRpI28wMOoS9je\nhzkJh3HIhPWZgj/KcPbXlMDnMUcrrLdn/12u+nUriocItYwKW3LHlVfKAUvt\nSLqewlzYJhP8QSOh1qHLnnJRKnThCZkO/Jxii/YeKkzytqvNTGC8ksU3dKVz\n0959VgqFPZmJlf9EaxtDQUFyABTEZFPtghb+W8MCUtk50oDcoNIKLC8EJFt5\nJZmCk5mN1ODxLg/q2/lByOAz4q6JqlvQymcQ2GVAPA+cmAPFHyBWFVVEyZ2F\nOzdT\r\n=C6/s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.3-feature-d2b9b2-klhujvp5_1614074978568_0.9212949486814999","host":"s3://npm-registry-packages"}},"2.3.0-alpha.10":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.10","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.10","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8fe61bf708f511a0aab34860d14a7a1c418f99fe","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.10.tgz","fileCount":309,"integrity":"sha512-GT+dA/+exYfub7j7PW1o+IpkTEQI3iOsJqaxRCCV87OGezTO6lXfv02mMG4VbODSiFFLBwElt8H2a+9KJrl6pQ==","signatures":[{"sig":"MEYCIQD2AUYUJZQUkiK9j7P+zKWw9puybeiBsoX7F7+GJxxiEQIhAJuNUtwxGVxSl51OTarhxlQ3GWOXPtXy6pqfWVcPqSKW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1535072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNR8CRA9TVsSAnZWagAA+1UP/36VBWcMX6V+TC9h/Z9K\n+8dVJfpqICtogcjR8AI4oVIRE68o9W4kWN/cx8XKV4wWUhtfzSmqLusQLG5k\nGoYyOZqI2ufKlBaG7NzjTgJsTeVuzgyUkD2SRZpFwmSrc72qJwibSNB3RwKQ\na5kjN3O4W3mGm97m/vV6wY38Ex8SlIL6lVW8KincvVKDnReUBaWLqcMkNh8U\nhDaBZ9KXKK7bPiqv6HKi9VmKr11BpAS1Ot3igfqf0BP1UKtqSFULqtYJiCzN\nG79MyondE1A3wTKTUlUhOO05fqwtEuUFFvCleds5H/tV3i4IAKt+Oz8WV15H\nZBvONjAT5DeqxvbZik2AvWis/b2waZpyzBDWqvp6CC2tlf4hKTj6vJ2IUlc9\ndUTzjjhQEKJYPMQrGN5U3sQJ2kMoHAIUCrTIC6ILeVnu56JJGf1CaNSN2Yv6\nUN7O3aQRhh3LRSAq+ZVducDhT6NcUUXLxAvNh4vlp0BaQJdFUkSPe1687AuB\ncklvsyEofrPxbCKdbO+J/Cxi8kdTlUSR+MTBtCJOIwdUL12ZPgyWXqODjU9m\njGrutmWYhPUiJM2fdAeQB7noLp17pn6H7p6NYqe/5UgJuHcBdQ89aVsh88cB\nuFv9Hb/HYLzEG/DBuSI+zfLB4sSFwfqK6pBDh8B8p01secJr4VUzDKLKDfSZ\nZJG5\r\n=mf6e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.10_1614075004075_0.20700138934094436","host":"s3://npm-registry-packages"}},"2.2.3-feature-ed764c-klhwlcn3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.3-feature-ed764c-klhwlcn3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.3-feature-ed764c-klhwlcn3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"588e931e7e06f01866fae202c9278acb3ca0e5e3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.3-feature-ed764c-klhwlcn3.tgz","fileCount":309,"integrity":"sha512-aH4hrb5ntkDscF6M2mKvJklJO3uNs2ZEKYR4BZY97EDr2Sij+GNHwrTAWuLVnvjWxFnbGb2NLySWbKYzvhe+7g==","signatures":[{"sig":"MEUCIHtUr2CAuSdMsDlvoJXIa8Z+aedfMMfPXZYSH6iv+1hgAiEA4jqUxaBb0ljQ74/p2kPkgUYvJvELoDdIxGy0iG4thiI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNOHHCRA9TVsSAnZWagAA+6wP/17DCG8XH73JdwFsihuQ\nVTvqxACaFUVCkIvkXv+gjLjpN4A5+x6FDedwtTGNHAljFSdyZiSXxl4eh2wQ\nvjX0sUp0gFrqjPoNObg/WXk0jVCcagBwIZoUdIR4PPnzUKjclEZMcfSzVSBD\ndzBxHQ/2T5PVy6EKwoR/dzQAzkolde1syJ7OLPRXwkfUm+iceqBd7KBcZWVY\nLoPiuAeX55mjg+bY60IDRSfQsj79AxFCebJe3FWEbaVCmNiTKG7tgafmmkfB\nfbS57w1W4O/v6Ke8M/72YC4+nQpsO93hUA3i+qC4wCAvz7OnL2NzjMBqm3k1\nlclcEYu31iK3x8RCf/GcsrFt40ddhNKPFuYEHxe4orgjWaX08fXYZ2N47cdr\nJ5VBPUXB+ggTVsDIqFuj7Mp1+Ua9QFGtV0hFVnf1uvywWRtxCl0alv5v2xfw\npdDsos3rJX8JDmMg2hsRUYGTQP6rULQF5ubhnVLlYG0mkxgsiqJPe+hAl5nU\nseMKLhFm4nOKCT09jz69RREiZvOXaXJIsSMM97WBc1yKbNECXG4iPxVCp1cC\nz9j1scZxHz21AFZZU3CV2//TZI0814rgb6UT1IlN4SwdY7JCDBhlcUaf1Qop\noGxBges8nrObILN5WK+obkIeQLxxiW/BNtem6swTAVYPZ+cLELHJaqBbb6sQ\nspGa\r\n=Cxae\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.3-feature-ed764c-klhwlcn3_1614078406797_0.16834740592257025","host":"s3://npm-registry-packages"}},"2.2.3-feature-6c8200-klkliel2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.3-feature-6c8200-klkliel2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.3-feature-6c8200-klkliel2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ac2ed6041b11ea599d45868cedbe76fbe40dffa2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.3-feature-6c8200-klkliel2.tgz","fileCount":309,"integrity":"sha512-4We1woDKNalImKZR2ZJFPnxyMmpXTQnrkHUlTlrLHCNwei0JLmU+0MbT5JmYn+6xvub0vXSubXLXiC+ABx/+AQ==","signatures":[{"sig":"MEUCIF12GygqaOZetCWKf52apnKM2ZJe7ugkqWah9p0d4M7JAiEAzj/KF0I1xvQEX+ydkkrl9YkknhDcmIzE0u1xTU6smpc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN12jCRA9TVsSAnZWagAAZx8P/3qEzETQxyE4UUXqLHDD\nRAoRPxW9NfrlyupDXmIb8cEUuuzZb9CWgXEu4AroB6P++E570hlB5N0oJv5a\nw129XAXyhejDOgNb8bUjQ3X88I/VMgfrqZyXCCox7TjcOc8wwpGMJSAPMlI+\nOhQ+qPuKv8mgiwSl7hV2cagJ81bxxjjLaA8l4K3KpV2ElqlginDeWwX6Ic2k\nh3wBNU3/hdkrSJ4xur8biMyCExYZ+i+peMYLAruXru7LIcPb1yomZc96vIY3\n/9dI0x9nHy+2TbQs1F7s2IpM6fjC13CwaOPUusXiZhErdoVxEWeylQXQR7AG\nbqg/z4AuAvi/Dhz3Gv9V84mjoqHej5DxunMkyvmulYyS1+y+Nh+kMu1gUv5B\nJGKovbEZ19HMXcnP9VtEp/PJMWA2KlVpnej83XIXTHJU2rkflpKm47rFvps/\nTHp5bcLNQjyjAYx3zzZOjEWM7QghYXaGY3Z4DuCMam2kGBx3+o706Wwo7AuK\naDPWxphRVh52/BrqFxxPkEo86HpK0U3IV+K6F7Tzc6GLohZSS/XE8vAmXTP/\nPdXNGrBzRdt/Quu8l8VFvzG9LnJd83f7bL9n/1xfj8rMfYCez9lufLg7wEF2\nLdvDfeej5NmzlwPQle8/73GVwTqWsvSYBTpf22zkcrZVxmXUAMwzy7o4566y\ncFan\r\n=TO2W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.3-feature-6c8200-klkliel2_1614241186593_0.7592310430106612","host":"s3://npm-registry-packages"}},"2.2.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.2.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.2.3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"20d2883227faf15f4d02df05cc2bd41f07ed98b5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.2.3.tgz","fileCount":309,"integrity":"sha512-gv0PvxpejGmnA3riGq1Hg4xNhqh5Yg8D6y/13A37SnPLg9NNmXI4uMGJAFK2ymsYc2ypq32Jt+WQ+320sTZxjg==","signatures":[{"sig":"MEUCIGVGDuwhR7eIrQ9UBgq2oDkDN23kc2ZTn/hVNfOkBaSJAiEAnk5cijgT3hJMmST1fBnezEvRJrkYDlpgVoP+b/TlCI4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1531435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN2I3CRA9TVsSAnZWagAAd1IP+wUZq5F8rD3C2bn65Qmg\ngl58lYBwZju0OxZDyUCpP6ETGmIgnDdBAgmflhHk8OUuXOlj/hmFmrWPXBy/\nz6AHHqbFymERsuoOgMUJ9JVamE2w1nv6KHP/ScC6YTavqmoaCbRIF4s1Uxfw\nAgo7GjxEocNQNd/dtUXHwY8zAivLw61Hx4HZADzXwb5olxoAFeoYK02WaFco\nBPcVxhWLzSs9wZ73Nc7K2ANdinrcouUY4/WVPGMbeaorivOU3sDjChm1ORMa\nBlZtpRKc/eMPFi7aBidZVjdE2pwYevBK2M4lZRdtlFtZsnd+MuELaTMuln0M\nadBbt2N9DmkclxdnJMf0B/xIcBBX8E82etpbEgc81MHcNBFDRqiCzbePxTw6\nTuoABiKzVxo1xU1GAIN15ufoEThc4DWsu15ZYcNcBUYFCvtLOby4QW88acCp\nGurLr1r0AE/KbxV/LAKH3aUGxuGj5jRSl7aY3iQWCFl0jUi+pNvgjreqxc0b\nzmZ+zyhwh/fSnyt5FkMEsjS9WvFIitcL/DgcOuJ4GzoIx2IJCsCBljoXVvUH\nNOYOjtBbynHIOXszeS8kN0MhBAlcx9yqH+T765FCeBhwB57JurE3LqGi6aOy\nYJuEBLcPwD1Szrp3ZDNWziNUYsYiy12U3uEkHcswPBKGz71/Elh5MlMVNzLv\nNYpf\r\n=9mL0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.1.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.2.3_1614242359366_0.10518667424182526","host":"s3://npm-registry-packages"}},"2.3.0-beta.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-beta.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-beta.2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f95462d173c87e3a8ddadd89f573cc72160a67c0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-beta.2.tgz","fileCount":309,"integrity":"sha512-Lbm+1kyxGCdU2ZiDTp26RKE9S0kLefSMoj/gHUk+pb4RSatF9I78p/8QvXidt+Tmg4wqgGwJVXplnwqcCp2fsA==","signatures":[{"sig":"MEQCIG31Nd83FFAbyGwZDLDTGhPEIAOqxygtNHrwOXgQeMMJAiAjd9fYuHQdtvKw+sX8uqAeJmPWYohHOzR76KaWJfRWQw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN2ywCRA9TVsSAnZWagAA/vMP/RBXK8a9RJSpyKY/AR+c\nBGnVjYLJgoeX90tvTFI3GPmEzKkSZsJ824vnzlbmY03AoHywgyIvLnb3RoF+\nDRtusC9sRCYYIxilCCTR7okvlzxszjKBI3UmidlJWha0WguEUHhkNYlq3eOG\nmjsC61+EqBEkgFVR8vzNC1APeSu3w0eO75rFXBMdLg1DSZiNaV1hFPQUBQkC\nUMo3SfNg0XO3XpacJSWZ+5VzF62UC77jbatAsTYhoUF0DBUJsssycqYJQeXl\nQ/JaKduML+sMlNHgiNgN8WqfUN3Jy4EsiIQF4kCAfw27BjKecuUdTZLIfvB0\np3MTIrD6c4Vomfnq5bOGutsUCbQxQh/mfUITuPYWLtGl7wx3t0C9YFa6Hv72\nJW25t80IOnyJFg5wRHyu1IiTXgf+BevG24dDpw7lavVkflxo+U3t1z9xpZgg\nkb8TVBuvIHxEezFxK4A0gsHLdkNAhPFnpwML2pOFkL59XFaCg6eiWJQqRmim\nR+/zfgqeCUKqybiX+KvORWThVIRqF8P8qc6/wKFPQyMicC2fx2fs/v8bifKb\nLtWFfFlOeuv4TSBwuUvHVDsIF5h9R3w5WZrQ/KySSZkG5DUzzbpGbKofTFej\nAeKuUi/AsGEAeLU9WEa+rU8uHtpoRQzCUgBIvRvO8weykepSsFUbZFhuZeqc\n4BE+\r\n=E51s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-beta.2_1614245039508_0.386651292744872","host":"s3://npm-registry-packages"}},"2.3.0-alpha.11":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.11","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.11","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8dd89c7bfd0bb58235bfd6e3f8211690c528cb68","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.11.tgz","fileCount":309,"integrity":"sha512-nb/+pipQM7njAJIGSaVwzRrlDWazH3hGGoOBndjTObx/knKB4cfQ12mefCMGG2Nt3o5zm9EV5HMw/d3iuPjyBQ==","signatures":[{"sig":"MEUCIH3977pt/mqsBnTMv5udcvhqp+A+Q9+1TP/RNZv8FHqMAiEAlVjgG3QMN2NPjTR3wGe5M1LwqMfM9l6vENbGzC2d704=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1535072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN5ijCRA9TVsSAnZWagAA1NQQAI3viYkvhRZzqlJyg28J\njlJvjLurdCAaciU7OPwWcF2Ez1tyxmtyqwzrOVp/U/glWov1lRBkB1OYybwd\nkemfVY7jesnsHG95E8i2e+eVJPRa9y9whNonfHKGkT68TYNTDB223EHyH/Ti\nio9k9pRVrFmdNTHWMVzJhODiQmWNCtBIvrrwJxpdiLTLrJnNtcK/WwFuEGI6\nBIDCjhAgEO1b1poydEOJz0Qc89i99uCVcHkvav3kkjhP8aKxqjxMuGZpaaFw\nVoOPXLjwk8p2wShnw9x/cXAtdwWZzXfYe1H0RcZjUoEhzr+rPln+AQOt1JV5\nxNhCgvR0R70qMRy4g3jzDBlmX7hA6YV7XrSQEqswuXM3coKfumdVtIM/Q4Hm\nkcVLeZ/rzve/JloXhH0P7yvb92Ef33NN259MA/v2QsunbhG0isViTzFavffj\nqz7+wr9EGC8c9l3E8lHcEElJk1yCSkNulyKKFh38zL9TATwEOK3Z3KALpxxM\nxbDxcxLnNpFP/tvXZ+xIgRJOY9k7QMO30JIimWcbjrvxIhgq0OQ6HlHQlIso\nupwD9CkrOHpT+eTwI70upjRykiNJrUPMRXiDijarWKr/0q6g1HKAwXM9M8Ul\nQM9iPjD4gOCT8mRFESkjsq1L4n42oheJY0VJzlVjaLPyL7kBVYJs7YUGtMJ9\nVP5x\r\n=DjRo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"2.0.0","@atlas-engine/core_domain.contracts":"2.4.0-alpha.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.11_1614256290976_0.4886968253657631","host":"s3://npm-registry-packages"}},"2.3.0-alpha.12":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.12","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.12","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ed0c7f1ba585f2ba500db110729a3d7f952a83c7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.12.tgz","fileCount":309,"integrity":"sha512-tzdzQKJLs98dWAyHxeqjFsZG44nu7wu4ou/YrY6kQYHDQ1q6l6LN3Y2v/Vb+rs6pflY0j5OtoPJvrtBeTKlD7A==","signatures":[{"sig":"MEUCIQCxur3iT2XC5cKeRFAtqcZFjPV5MZxG+UYGd61bWufRAAIgBfgBHmZEEKc79XZrE5TWPsWT65n0ibT9XaPqoHWL7wo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1535078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN84dCRA9TVsSAnZWagAAf/gP/iwlmReMdb90kn3X+tUc\ny/ditK7PWx3wICihyTmMN0U9iO6+bRtModP3Z08SUiVMI27XuFIXYiezGGzb\niBml1MmI30pQ7B4WRRs5e3gaVJxXMuUMXKw8QoIzK95V/wBil4qK3lMnRL9b\nI9RI0cCo66jNs+iaB1il+jijuSvw6mIozCqKYK2Eyqs3kvg0fdkmm3a+WaCU\nhE0/zmgBaBfTlAlCHtNOQvfl0x7nvDTwkTELy9OyZV8oZlc8PnLFc3Mrj3W4\nRDDtPNVp6IIsWFftbHsNEuzCpadBhOCkyb2yhXpQsNLoLSlX8Fpp0q1ksD6h\n+zK1it2piDDhqx5hpYzR3knloBBxqH3PqlzxP8lXhZ4KJMcn9iX4B1J67e8c\n/h/LoTGwVBUrB2OiFXKW3cgtRSM5fFqq2t2bJZNGlBTZf2N50woznAf5MYkU\nA/FdUBrlhFMidtMrPpsmfW1P/DliEEU7rLK678123WcY1bal/Tlsg+Wi5kYe\ncziDMUfx239OAVhe1ol9RBjVDQurp36Fdf48tv9jIox9tAxN9q8RQJbq3uz5\nGCgxivOWmHSGBZz+txnZDKoU/v/MjtH78XhiE6F/4bJzFdeeJoBwZHQbWxny\nDW+vldu5Vjm89U6oT0mn/mEOqCwRi6qfl2W6qnKHPRDWl09MK2a9JfVOsqSc\ncXLo\r\n=VfFn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"2.4.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.12_1614269980561_0.4566296087588728","host":"s3://npm-registry-packages"}},"2.3.0-beta.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-beta.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-beta.3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"06baa570d0830be40a60191c48586293c79dc374","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-beta.3.tgz","fileCount":309,"integrity":"sha512-/ZJJcG0yg4RCy4U24fyN5TMYoywFm7cvsS+D1FYyKJi77pflKlqyi2FXxrkWfZTZKP13o3kxS3nR9Rg4rLYvdQ==","signatures":[{"sig":"MEUCIQDDmdBVrHl09sqMy60lOGdHA0qVD62AgTMQB30v9Q2uNgIgXDO/25//zVGIaH7NbjxS86OxkNA3wDFCJQubq9gGIbQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1535076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN85bCRA9TVsSAnZWagAAlVsQAKLV2ImYBNhyOu1F9DKa\nKsho+tP6pqwaCqqV7T6Q9rDt07VYQlHWp+5opmwvyae8X51eyjseRGxV488s\n5gegyuB+JnZziFxCYhAYnyylei5acTpCCOhdIt0CKwZbh+Uf5bJs3XaIg+Ds\nvSH/fJ5BgG7JjoADT/6TxZv1BGRwOE2B+6U9dZS+d54Af8Z59lPyzPNRPiZr\npkCBZQHRTdsHKqPat3Gmv/G6GbCJ7hBfkZBUj2nh5iELKQXI0s/ChcuguKDt\nmznQ5JRx8AjmRSWEOeuYzPBqwvHVH7XMf+VGdEldO82gupXPt7SvHCsdIRm5\nPZvKBa2P4gx4OBVUu9sYaCyI+Tkk4BKHf8ALvogy1IE8LjH2LY1OgiWQeyBy\nNE1nFPtr2Nk8BbQ3pDBJrjP1lOiLR9Xu8Yqe+MbDFP+gG9kWuoCN7YMugIdG\nKZXFvGy0LW5cwbIbWeY5ckeulIK+KOENjon3z10bzM1gDsRDVjcyKl7tO1wB\nXSGQlc+aM86eeOmQBsd3jwKHnqWEArNhpVk/G4nTYwxWvLK4ZqPqyPPSfO08\nNIP5hb1TgWMq44si0eJSE//nwpIifYDryBzJ5BTqFreqNyh4QJSXLjxrY2a8\n6IhFXQ+Ci/CkGnAhaveH1XeesiFxBVdvbeUEtfR6/OI3DBf4qJuv/XpAQGCR\nJC1p\r\n=5bc8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"2.4.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-beta.3_1614270043138_0.6806356446545527","host":"s3://npm-registry-packages"}},"2.3.0-feature-e98ebe-kll2ozc2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-e98ebe-kll2ozc2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-e98ebe-kll2ozc2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c581281b63af1c9bee24a489368ff5206f8bb104","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-e98ebe-kll2ozc2.tgz","fileCount":309,"integrity":"sha512-aLqd9cHKMKOmlBZULzef7H4lA++LTl4nj1Bjl1UD9/275g/lWiDWrsySltiVIlPTSJI2F6sNiNUTQx3pwUrBeA==","signatures":[{"sig":"MEUCIQCqU0oSWEvYLDcE/kaf61aqaCh99wAaRUXHp1+ZXqf9QQIgI2pViV2CEsoG1kFTeUzW+EAOM+iyQXEpT9OUabHmzs4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN85oCRA9TVsSAnZWagAABuMQAJoW2lrH89glObJSvQmU\nioNDvfcCDo4vtgUeMRKG0PLZ9WVMkozqMsxL0svqYuMWY0gCl6wLLg3AEsoy\naU50TNOqfNtOvpfoyiSOYdEMBqw+emcOLPDIDSLKMjbx++R7kwPAv/qFPyAt\noUxoX0cambW/4iU9Gy7oF2ffLaM1YEgrp1ZYjXp5Q5LgaEtYKQdL5u4zv6Fr\ncEzV8ui4qh2cc+ioOB+OEEKH2yPyJajx9ExNWfhS0A9/Y6wtkpw9hAVwfyB1\ngsAC9rjjOvCmiEr4hu287Rp+D98JP5MpA2K5GsiXuOcN5E6p/ld/oA3Ker+1\nwgo49jFFSrf2PONp9a17oEe/JrH7ZtlUhHHVcLQkN0GVP3K7SJEJlG3zagzG\nzey8B2kVqnGoirtJc35aOJ7y9DV828210WmP1I9QnWMcJdGmalFqC27xNQV2\nECQH+sPmXnJSw/qhQYaK9/4ryh6D2CmTu/iAr6Bpykn8oeM1jyKSUWTvtInb\nU7a11b5MiNjdvdiMthuUreIDWKvPbgJFYZhNg94FxsJBJ4F2IyzJB0EtUuDR\nINvk94j3k9CJ5LY/HD7PY9py4o++AI3iAh2ED+qTqgK9XPlLBRP5TGvCQFWm\nBfQ0YAVlorEmEeUr8kVuRXBPC/b7DP3CX1abnuuTJhp5NQpoDMRpLaSabEys\nmAlh\r\n=kwVr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"feature~add_enhanced_flow_node_infos"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-e98ebe-kll2ozc2_1614270055780_0.2310057735482316","host":"s3://npm-registry-packages"}},"2.3.0-feature-d60a6e-kll34d2e":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-d60a6e-kll34d2e","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-d60a6e-kll34d2e","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ebabe46383e1b08f992e0c4807b7316a6265d5ce","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-d60a6e-kll34d2e.tgz","fileCount":309,"integrity":"sha512-Yz27JsjOYQo2WEDINMH4pEAXtL3IHMxGgdVyaM8LZflNK3txiEh1qa9QtFRA55/fNCB26gVnZqRSj7xeRe3ksw==","signatures":[{"sig":"MEQCIEJyAcFym4lMihpUi/YcracxoDWOJaPWfywAzNVpGWZuAiBP6bqH/GyH9Ag4WmWu1jVbooa1pylGkRmJkcRKkTBQNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN9EwCRA9TVsSAnZWagAAmx4QAIHUM0aiGSfaBWNIRwJz\nAu2goPcthBTfS346KPkEGxyArNoNMDqAhwt8Hx1bdW1pbrFhDu5O+pCBauvF\nz9l4XSLQOqkW2ksLf8kcPuVTthAg5SapDcOWKtklGIGtEVFjQanT893fUlZW\na8ORVNbzGlcODJmESQDZCkD/bNyn8RbHhd4GP80TvRUD8Y3ZbVpm2JU+ja+K\ndsEfHQs5l1WGxMw3oV3L2bPo5lZ5fT2nUzzuq1q/87rzhxMgJIXesM9NVTdT\n8JNqQxVmmTZWczmg0v5F802ZQCIX9uQPfXF6KzomjSIrZWN5GN8qaNoPLSW8\nWeA1xxOO9d848GZV2y318dhx1PBFgqrXiKfwDvkf0e3nsn0zP3F2V2uJixVH\ntrRtTqlJMUqozTOq7oP9Lrkr1ZO2Ln4HSL6D5eAa8CFrLui4LupFTimOC+OB\nQRxdg1hn1I0HVLKnew2sL5/ybWacoMjXOvDYUGnoeQlzK6JsBRh51b7KqWRu\nN6tNDu5kBewGDFU+qVGdRg/HQS+M0ThelNKM/czxHdqk+QnT6CwgTGx1J9DG\nA+XESoknCy5uhzxRld5wsWVvAc0R+HBgDC+IZzOtvo2EBapOcVdR23UB8lWg\nWoYvONX0JFB5xhZtyL0sFJ48vLWwlNLnajq+JFeo32jLVtpU+CfQ9rT9MJbF\nb/qo\r\n=bo1S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"feature~add_enhanced_flow_node_infos"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-d60a6e-kll34d2e_1614270767756_0.7360108338066618","host":"s3://npm-registry-packages"}},"2.3.0-feature-576c7d-klm3zieg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-576c7d-klm3zieg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-576c7d-klm3zieg","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bdd1168e24c2b2b984c0c937ba40491b95028513","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-576c7d-klm3zieg.tgz","fileCount":309,"integrity":"sha512-ME3nalJ4cKV1dvhJaZdJpDmrxAgTbiAdoVOQ5RmW4qEHQV+f9QN4KQTCf/pJW2t3jsgFggD1uGDjWQ5fQw6cBQ==","signatures":[{"sig":"MEQCIGeJSPOSHFpgM1Vw/A66Zhngg6dDpB2Rs+IePhOK3JwMAiBu/cQN/r5yQmn2VlpMibz6i2kw4hLTVlcxcnDXsJ0z/A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1541871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOMMPCRA9TVsSAnZWagAA71MQAJw5yBQIbsHdV7G2TPn9\n2T8fhTIjZRb0bhoik1KaMyxJt6aFUgyVqs+UBgZHkm/KFP1M+oUda8kLiGbY\n3b1McfNDTg7ZojI+Fee8Kn4I9FV1PBuW6KY/x3yERvLo604392tXP0dm09r+\n5HZBiRczEO6O2j5rGkCsGGVKUUZ6QBiUaG6g3usM6qGsMA8ufhq5KgSJfwcj\nhOiZOi8ioXvMCiIp+L0IoW0VK52veTn0Iid2OBXKTkRkkJ9COP7hZJBPs8sf\n+VDjodtJ+Hh29wDK7EhWuLBX3lkT9cE92m6Ili0c8+L3kdy7Xwoyu6BBHk4X\nKTdfUKRwekgrrZnfAwCUBjNJifl2LQc/T/oj2agWa+FRZBrTylMbzXclUyRU\nu/VJaVFwrpfnTX1lSR4jXx2xeM2OJV9nJeeROsI99t5LHmkcpD8lxnYt62yQ\nqk9n9+Sz+P6ytpQQgMQWwxyOvOwCZfFxkof6uW9olQHHekZki5+VsuTYHGpi\nhlzt/g1TpN6Dhnx4qC+3nZ3kw0WfsHK+a9wOJ/j4zh9JKzh3C2GL1u/m2tWn\ntwc6pGya5TNCz2Rq2ErS3eaOzdYFB/mPk76CFzUxycyrls3LLF0Ml1T3dCd4\nsW7FUwuPfKkWy/NVb1DT27MtlIxo+UmdqdcMJIyr0uVwIChX97ZNcye78vWL\nWzoA\r\n=3WJC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"2.4.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-576c7d-klm3zieg_1614332686901_0.846015746763038","host":"s3://npm-registry-packages"}},"2.3.0-feature-04ead3-klm6gpvj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-04ead3-klm6gpvj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-04ead3-klm6gpvj","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3cd199c968d14f1903c3a1735c9c6f1d90f43749","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-04ead3-klm6gpvj.tgz","fileCount":309,"integrity":"sha512-bxjw0ggEsyUSe7pJj0yHAETag0gg/6nnEF2lwC2echSqWdWgexLbhFafUSNTtJdsnDB7KmpvN5IJMdvZ1X3xOA==","signatures":[{"sig":"MEYCIQCwr2DWEi2XEiNoWbd/BGHpmnfVEYJR8hyRslMomJNwawIhALuNgvPcynz3X9+5ShEP64tn4C8G+UJKb6cea2l1UKd9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1536579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgONNSCRA9TVsSAnZWagAA8+MQAJdbP6jJSwLhgtwTQhjB\nAcN1ZmcHEuREssIS4+gp47FkZ8yr8S7bKVVPaVI6nlVQdwMzUGeEJwWx7NO3\nl8BbQg+XPqC3sFVpi8nLnV6llkyDjGhicmnGi6NVb56Tjo3urNR1heG2YKgG\nt6NNLeO10gEOtb/o8dfxir2FclZRQL9mP7lYbQJh2CoNGU4z5sH3nnlN+VzK\nJO5yMxw7mHvmCwM/6NI3U1RiQT5ma1zaZe5aX1A3SaZdAQkCaZyz+b0Wadzt\n1cWiQsHEA1X5/riZwxI2i/V532B83qGYbaSZPZoCH6QUALRaEmRmVJMoDsgX\nRj0wLRA6Gy581Hlzh3PcWla9JGXFXpR4OjlERYz6RgBiJuG7RNQgQ6oYUx3V\n5iOQTxd+mjieUSaHcRmofHrrfPh0GzhnnY8kaLeML9oWXdYc+/uEImSMP6w3\nvmy09mwCOqCW5D7hsnAr8357WT11wlVDOTPQHLw1x23ety+yFkBuEWUOItjq\n0xy0oEFC65WVfhO2BQdkuwS96Sr6HypjL73vXJXwDjrIfpSI34LYZTeaL0+E\n38g+Scdgj+YS9Fb2OP96bXVyEEghSmpu/oFvGwfDO5cUUcpf5balDVLQI+Om\nw1eHd/GtHSAphAMYy71je+xvSzN0XFh9i8LvgZpqGNVfcOLNp+Ybfmhk4HKb\ng44C\r\n=Hmtp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"2.4.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-04ead3-klm6gpvj_1614336849466_0.23351750065793953","host":"s3://npm-registry-packages"}},"2.3.0-feature-4547fb-klmghu0q":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-4547fb-klmghu0q","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-4547fb-klmghu0q","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"86a41c243178a652068ce6daf391ca38c694a8e1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-4547fb-klmghu0q.tgz","fileCount":309,"integrity":"sha512-jFzVSomJidBbNaiHcK9dnDolInj6bRLXhL4KJ8YKVw3KFJQ9rxoAdFXNoC8U1CVsmqfDz1bd1UPHaSoVcbL2/g==","signatures":[{"sig":"MEYCIQCAPnri9TN9bmLvLLovYYX9jbTg40MDh6KtnnlT5rHidgIhAI+ZN9HMQAZAkU8Gx6IeBHN2WuRJsJ/sJfVoujUZkZty","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgORUgCRA9TVsSAnZWagAAPoAP/2xPfjwvgM8FvoRGhMLC\ny0Wuosz6r2umthmvOsN1PSq0uM2jUgqDpO8c05/N2oLbT7c1rRYS22gpGrWc\npP/gjNpnRi26xRuQTjc4f8nJ0h5u2lgH87dJe3Rf3j+F5LrAkp3uSmc7uizK\nxGDfN1wYcXqyiLjiCjPfMBUE1NruzuZ6CBFWktV1dvvgq1FwZ9umbsLrRRxQ\nZT0z3GqtPbWVBIaFcFYaBfrS7QB4LaVV5TBRy/WoeFyrmZDzGLGUJaApiBIf\nB4w0bFzkH8F2LHxaLfVfi/iYYCp2dzh2x0Eexj1KHjmO4R3ifkph0nthbktE\nCMWFWZ0X+O1jd1h68LEYYlUA8a7rbSp3EPROoObwodgolLigw1xRndGyuheh\np7wrlyrO3zFlurpArigWXIOzM62ZPZRiRmWq1cDpQEqpDiZE9ZqLHrs54j7T\nIuyYbqmuNwRocQVQ9NnWx8ugkQCUDZa//BnQmQa+RCZdBupwgHgtYgwugVMr\nDj/LEpus1rmC7h8G1Zo2LK4f5yPWXjTM+nFVor7F/m/3k+8S80Z91/HHJ33X\nds1FKDgRG8JH0M+Ygx/NQOfYzV2UWjacDMv+CJPTaXztXroOjRutj/wGyoPf\nfLur+qhJ/8ntfFH11PJ4JbeGI+A451ltB9ztUvN6k4WPns0R/Km80dZ3PxpM\nHuOF\r\n=bcry\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"feature~add_enhanced_flow_node_infos"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-4547fb-klmghu0q_1614353695987_0.7656208850602206","host":"s3://npm-registry-packages"}},"2.3.0-feature-480eb6-klmi3w11":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-480eb6-klmi3w11","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-480eb6-klmi3w11","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"25ae02d639724f7a71bcda3ea74838b02472da44","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-480eb6-klmi3w11.tgz","fileCount":309,"integrity":"sha512-b36AiN8ibi0F+F09H1OqVr1GN9tncMBLVih8DkKQdwHoovc0CPTOIKX/8+rgK6PQNmj7EyFHBLPwSO2QHZKl8Q==","signatures":[{"sig":"MEYCIQCed3GnaEBHUx2MCJlQAjDQ4sfmdNCNj2zp7uoxGun4GgIhAJLh6NhDE3bGgRsirdhdX3wRJoxxb2K5PDaVjw8Fw5ez","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOR+8CRA9TVsSAnZWagAAY4EP/3MI8J1nTB/xWYPZXsqz\nkLRC/q6H3HFCC4Fl636m/RL2sK9SUoEVVR9JD4jVvdmOhVkT7C4LH6RB/3mZ\nsHdaZa/5qEpntTUZKbl9gUd+4Z8gB0UhqOT+Pve5pTgeTr6cMQ6CdDURGPM/\ncflW2gi4XR0l2BsZgW8z/u2gobT6nbQMAS3Ti0CNDau4PKNFn7T1AaRmlqpv\nc61fE3+NXgtpynnVAOlnetUQw2DfTXnqr5UtkYacBeLLd3BQ4CLa2yvdTE9x\nPW0zgsNJRHP8dJUfE1eiPggH5gclw6KEOay1iFI/ZX/lOVp7jNGb60Nuo6nx\nl9XDsc0QKyYdA+4f3DJvyPu6cRfdbC6Gzou4RnW+8oHT+2/sM/8nc5LRKQHL\nPqzq/0VEadUD4ljubr5jTXBhSviT6dnwfJSmvX4qZ91ktYNR/cvBp5auVhWZ\nVGkmWryULKQwOfQaFwNNGdKAu2rgkeURC/ERE9xaaQy2B3mRFBHTeeX3qslm\nUTfDj3KdKhyYjp5s0khU+FQMmGoZL199LD1wUzvVrx3uJZ23UA7AZmvk4sgl\nyxKtAz1eEU7As5godxfeQGVZgvLyD66/lXvXWUbTu3JxxMMQ7Mo6btT/n8QQ\nGCGY5k1d9HQgTdf/1bYAkCaWzXfjb1fC+dFuAbklLaSoxSGoUyiVzLiRUuGW\nADVd\r\n=k39G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-480eb6-klmi3w11_1614356411651_0.8660632060156677","host":"s3://npm-registry-packages"}},"2.3.0-alpha.13":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.13","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.13","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fe7cfb5ca83f877637bce04907f4ce60809db635","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.13.tgz","fileCount":309,"integrity":"sha512-LTzOErp0lcLTIuErGb5CtCmz3IfPwtj6yfawDotgFf6rbwT3nOuxgjSlNqVJc5sFD+YneRRvVK+TEJTEcd+1pA==","signatures":[{"sig":"MEUCIQClDJediB1EP4thlvYAG9TITc34oJCj9GYZuwunjRfZQwIgTiEnWxjIbVpgRLj3A1oFuxtW27Yda6lBQiB1rkEGq5c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOSX0CRA9TVsSAnZWagAAqgQP/Ail4pYo1bH+l9HUxMOB\nxku65G8Mb1ybvNVaPaDY5hzicbvz4pzpCIs1ngrV8Pvg2S9ZJXvdnCgb8KoD\nav6F5VsS8BtxMsCs5WwLjUXysDH2TQ36T8qM9xxSIEN1e+eGRovPvzt2KCxQ\ncj23T7WbUX57rC2IqDMG0B85D4zvzlLIxfV/jZznMXeWjfHqqgFDsFxyS37Y\nm9SwNYd3B3rGFz49+4NoiTIPwkLlDfLjC3EA2bYKVRLkoYExIfSNNW6Qal7Z\n87roVZKPxknYPC6E4r/xqjOczDK2Drpcpvz6lIcvlFpvjFJKGZGAdwUdyCaC\nr9gxrxgY68IxOAoA5RuehGwceSZQSVU1sNCG8ts4wa/su42fKGuScp/tyspC\njzKogb1sL/JbE12qBBsOdVYP+cS2/sRf/07YjYbH2GQjdiKBlA3p/09wih75\niGtgloOlebhKnh5gcvhC4GvgVpS8dByB4KgRXgIgRVIbQRlyF8IS4NKnvJ5I\nfWyRh4I3W90XgLCGR3VTdNVFdCSIwXOU5Es0dr+3pGidXMcXo0oU0gOGS3jZ\numHBb7xeBiH7vPaZfZGa773dQWd5pRA6vuLbUIF6B3NDYJzkYBwbQ4PApRwJ\n6XBk3clTcOmSS3LUz0gU2sDDQnhgqfHjrPfgzBTbsVVafSTxK+DAPOboj2OG\nJaH7\r\n=jezH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.13_1614358003935_0.49946617849817265","host":"s3://npm-registry-packages"}},"2.3.0-feature-b19c78-klt2woih":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-b19c78-klt2woih","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-b19c78-klt2woih","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e07cee7cb9868a799270c7fed8313a6b84bcbf5c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-b19c78-klt2woih.tgz","fileCount":309,"integrity":"sha512-5QY6NjxSjnXy0FnJYYEIXlnNlaTciC+ggayHAMXDzCGbsCWlq4wMS3AVDma8M/GP6oG61kQg6rIFAyalTHr52A==","signatures":[{"sig":"MEUCIF0QQ247zhnh8minuaTfFoJktG1rF46oS1mFh33w3kWJAiEAlXNgBq5mHNgxL08lsYaKg9FjXB17rpJpQcEq6vn7mpU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPzFeCRA9TVsSAnZWagAAZyQP/iW0JGOGEqn4p7RkQztc\nVPytA2y6jb/Yj1Mcc3uuz+o74MDQeL7IE3M8tjQtMhfs6sgCXYlAPzEnAhlr\nIMKw60fbK4bfFYTKn/YzSNRV7dwHSVhYnBQ3c1DHEc5j/gC9L8/F6r6125A2\n3LsYQODQKrXvYJPfWW/HsYCnBUcuYG1K/j6eTlQmAvG7OCbS3b5eCot1mclI\nPeUhKVcmBzBu0Mzek0uPgxNzvxx7PKZN9x/T44XsJM/tBoh4CdYlb0SdLCON\nxWT9RMgx9C7j3hWQuNdbAnY/cy+HHIlNGfmRgAa9QDCGUbFHeZSji2Bu5iAy\nDpu6+sgLN8kwBdhy8Oq+JZpxy2zgjicpiqLmnvFagel9Ru161q3cyZJj66F+\nsrXr7AACCbJSToIG5iTPfuRgVc1td3lw5TXegd5P1xEwVEwQ8ZDNKqst+j8+\na9pXn8PTjRqRtT0scuxCeN3+T/7drOWMz1SnpsOCzPqZQDMXO/x3MPvEExSK\nJNm/LXWQ0iP5uQ4Lwjp/lsCTfcGWdrIiCJtgvqY8TMV9KBadRoixiGH5hv5X\nC2+0BtfPdnjpabdTy9c+zFIhRotYIf9099UMLmy+jye65eW8Xkma4wofMpPY\nM6owqzTiUM5ePd4vT6WuGwc9ugGvt8u0G0N6e5LqvekMnzxywbIzV4PS3lVF\nE4ug\r\n=OU/Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-b19c78-klt2woih_1614754141819_0.9049609461230839","host":"s3://npm-registry-packages"}},"2.3.0-feature-49eb2a-klt3xtjw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-49eb2a-klt3xtjw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-49eb2a-klt3xtjw","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"878c9436965be1e0d962cbaa45f97bcee8c29635","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-49eb2a-klt3xtjw.tgz","fileCount":309,"integrity":"sha512-zImW+90bth+TWQBOR8M2Kw9rimTqBS4qKJcfWVE2eUIQK00X67iY4YCoPwRQec6GiFGNcuRmID76vlZJEcwxcw==","signatures":[{"sig":"MEYCIQDLz4/1agbUOXnXGao6Ya8swG0Tgo+Sagj3xgY3d3C8YgIhAJ0n4sZ52/ucY3+auFIydu40e8LgcWSCegJyRZBw74t+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPzgdCRA9TVsSAnZWagAAvkYP/RXEooCr49EJ5vyyQ/Y8\noABAJ5iIoHFUUWX/B9OtJ+2TPH0Jrd0iN+VWYAA3iMmDCEwPBAPbV1luaSBv\nE/wEg7fxEa9ESNvQzjooa5X+AmB0Aw9H34VyYu0L/5iJNYp29hvVTw0T/EJG\nX8aEMO0OnYZMPg2hwuP40tDqMa3wxwuWD5sxdd5jxtqWwtoft5bkIzQG2TKM\nptdbA2d6udnjYRAQi8D2ZUQBw6B5nieHZejmVNXmPkUuwXVMc1ZtgR84MHK2\n4GPQN/7F4Bl1HjFdxSxfxFik91AYEYVnRkBq+rPw19jowddpSeKBBZkbo2FF\nO2G98SfXx0mAoaow5IodixQr5hWSaUabwwK+tiYF56vmOzZ6Cpcg0dL2g4Da\nCw4jmbzobIOGZ+bLmTRhmt4ptswAzULqp5+f04IHp58WoDcvTE/Za5uoUHTR\n+/A3k018KrH2ylBYZUeCYsm7g9YKM4FMrETB8bui491MI92VnKGfe5CIWaRd\nXo0ZFG1Fn8qtILBQqvy+7/w7QtVU6AexXayS7WyDjG6TbIz5XSzXsGhZwEMR\nfNZMfrbA4zAqxRD3dL3IO/p0uC6zoInADatmWBQokmFXRKhQGeYTknOOnpMd\nbxPAjh1Uq/8aMEJFKTrP6/bG2Nfzo7DD846hCM2aCPnP9MQl6IaQIu+HEfzs\nCs3g\r\n=J15v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-49eb2a-klt3xtjw_1614755868573_0.7704800162920025","host":"s3://npm-registry-packages"}},"2.3.0-feature-c1133a-klt4rzdq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-c1133a-klt4rzdq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-c1133a-klt4rzdq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"857a5a2c4bcca09b95fd0f14d14c53fc2e892c4a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-c1133a-klt4rzdq.tgz","fileCount":309,"integrity":"sha512-npJ7m+KGZUoJqYh016Fn6HSneTBipmHSaNLaiuFE6/FHGtRKwq+TysKuegIK+6U8sgsfAD3y1mol8gDcsxEj7A==","signatures":[{"sig":"MEUCIA7qClfAry+eLUmJtF0/4oFrBt/luNeOAs1FvaBVyzPgAiEAkIZ0DWMEGAcMimhboDRILSeN5/xUcXjwdVNxZlKdqww=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPz2hCRA9TVsSAnZWagAAQJcQAI2TK0F32V17iKb/IOpd\nQ2n6+Xs1hrrmGDhmyQjlG4vyic3rlE2F9MFgSu61zeGXwdtOr1oj31rXGOBc\nBKgtG7kCbmD0LOnkikug47rTtsnAmYLE0DPgyia+teK9O35gYyZHpTjDMh7U\nnhN52nzbnpE3hCnxnayKLTiWk5e8J6Vp33oQd67I/Zm6Gs82hwIfdLWu+2xT\nIU+jlAap2BN4K1TA7fz6sI3R9Jpz+JT+GorAp8RzRx0dPXruY7LukttGFPGq\nkm7YdIJi+lKkfqgldWoKoQ6M6LQsQx7WBxj7hLxLafkUOz29Ms/WlVB0S4Oq\ntufAcIsywg/a0QDa5reKtL0cWm2yB+hUkj4U7qk+BEQXYQM4Si/OX/gL/+rX\nzkbk+EFAm2c8crWaYIkZxuPigTfvIdNmpMrQRTdo6y/ae2gSnaJjJhbPGlIH\n8ETgp75y2m9CNm9yuUD3x8IpD4Wsi5Fdy4Pnk+GiJyt00UEVYyVFPDd5W0VR\nxjP5HeJG3nzea24PWS4AeMWf75XqDj9c/s9+SFsX6MWAnLoVYsd716hciXHg\nssbB65n+sKN5+ay/FD5ROiXKYqFvmg73FCWqM32VnMlqHtw7t/OXuRrT86J5\n2kLuftKpoQ0CjrP5kqSl1dSENsRzY8EVHDqeansUwhkaQY7Tl0J5ve6RqRCx\nsnMn\r\n=UOzM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-c1133a-klt4rzdq_1614757281026_0.054958207356325506","host":"s3://npm-registry-packages"}},"2.3.0-alpha.14":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.14","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.14","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9b28ca629fe440ff40f74329faa46e73cb6e40a8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.14.tgz","fileCount":309,"integrity":"sha512-E1q5BJl7tJidzHhSWecw2pbXi4oM1mUBx1AGYDA62AbLTEEwhdbTlG5WCAOAu/Ztk7dkj5sP+8oFFjkUKjYxzA==","signatures":[{"sig":"MEUCIBc/PSGRV3o+U8Y1o/1c/jMlnEOeFKEsrLLkJ+LeyDgLAiEA/hbplQ222cJDj0w9WkD1r+C1y2dwkzxIJuQhNxPSd+o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP2kSCRA9TVsSAnZWagAARLAP+gJgarWDqkoXesfluupy\nUz1qE4NZz4PRWHpIfbqSAuZtmYW3Lo/IGCCfdJJ6P/IJjqWKoLSqNxfKAtRN\nlZuLxo/m++Z0kXawbIUUhwGZED3iTm6hQUR4JY2QnBDZuD6Y46okyECFrzrP\nRv3EEWBlqcJ+G3YjaIKre8LsZdN+4wgBsKX2dbL8iXG+HPCPh9pAzp3pD5jt\np/iC19HhYQB5o4iauviV/lliWFvpg0qXKNselKgupXy97he3+dYjzN9WYI1k\nioJkd7Gt4IUoHphuQlN0+M6AzqF8hZPCStl+PY6QD9ks03bAFwHAxJB9B7fb\nalSUkRMwt40ZkV+V1BpZIM5kHTuKTGdCgc+QqfAp8l0GU+B5loa/yqXI81tv\noVpCOynqTN2zML3l94j29dJbI+0jZYNcYWB+ER8R9jq8cMtkw7DsK1xXCk1p\nE9H1y1fMlaS1OeVIbx3Qr7zA3nmMJt0X/BT9fO86CwsnB/jmSeuiUkMHQ6G7\nrJ83HnQyIKoQStcZNmvh4XkdpIhGNj1/hMALbua0jUlKmvU5ZcAUel3xICJQ\nDc6iGWA5XVZNPh3OEBxrsOy08v3BFflAOM4Nvrqmc6JvQhTdd1Wt03SCW9kf\nOUZMlqzzw+FnpeEQH+djImOoYK3+WV3TwVOem+qNfifr0vbAJnlenytXfbAY\nm3hX\r\n=ryXa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.14_1614768402111_0.9797690923729818","host":"s3://npm-registry-packages"}},"2.3.0-feature-18210b-kltm4fpg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-18210b-kltm4fpg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-18210b-kltm4fpg","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6e2514a2ec096bb8c8b88fa4a69be3e806a1de57","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-18210b-kltm4fpg.tgz","fileCount":309,"integrity":"sha512-SDO7+5274IZm1+llKXKwYsaIY3wvBeJBrWs1fmwfTzIFqvLHvgao48RxRUYBVu6L7CR1VyMn/zS0qmZO6/jMsQ==","signatures":[{"sig":"MEUCIQDmPzG+yHZn6RlHhsUY7kAr/IyekbCYAwHzY4JQcrwjQQIgOMfzFmCaNuo2stzAo8MqzywmN86li6lWW72ShlFHUQ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542771,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP691CRA9TVsSAnZWagAAmOkP/0LqcREjUvbh9ME5DuVP\n2F2jMAQFsWMPPHC+W73BJYoJyCzls7J+yEMwjragc6m6SaLeFlgFkJFZU22J\nUpW56gwttEKyNPbz0ANweC2oK8GxSLUtstzBJElxisXqx6CmYZs1I3bkSz3n\n90ST7UB4G6/6vt4M2kxI0b45PM8SkW6Vkiuuw+Te3V18RZsA6elBAyHanGtp\n24F6NOWJLfZgeNNWEqefSeHY2SK4fpyDHaxUoDf68BYYHMl90RLbJMFQIV/d\nD9MAbrCanfubDB/b4dGlQ125GM0s9lUWpRpol7DRVA300VAy1cS4AnIGligD\nBhbe+pyPgtift5b7zB8eAFySFMqMGDt6AdDrYpEDbjF03BzzDctX9/JMr/Fc\nLsi/ti5LKg0YdfOM4eLRTBz1tM6SB+SVRL9wmhofmSQBcFi9yyGh8BD+GGV9\nwPLmq9ieVRt19Hhi7DiZUILivjsKoivbA4YI9laHyTWuey/p6Ta52PwbZHgw\nNjhxI2lH/crfvn4BfslaejI2SPtfvRwubXvLRQ8ulQvF3Mygb8+JmRu7Jpt/\ndDnWbXYS/a9gOo7BUYFmz9JvQyN8vuUdDk4JQYHy/Jz+hb8tYM/IzWA7H5Fx\nZ7SU8x6Prmt2pAGvbyW9ogiof7PHgQAxIc/UGUuhhyNbs+j2eYTFs8atwzDa\nTzVU\r\n=/24M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.20.2","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"feature~terminate_process-instance_before_removing","@atlas-engine/process_model":"feature~terminate_process-instance_before_removing","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"feature~terminate_process-instance_before_removing"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-18210b-kltm4fpg_1614786421240_0.2719254920685419","host":"s3://npm-registry-packages"}},"2.3.0-beta.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-beta.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-beta.4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8a67db5a0ce79fb9ddc4af2477eaa044b80404ae","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-beta.4.tgz","fileCount":309,"integrity":"sha512-sVuh8CCnwjixMqvtoIW88Iol13fqNPdYfaUieHUriiaUmhKhlFSWooytMCvP6GYiy5J7zhxtP0nYq6iiKXJXVw==","signatures":[{"sig":"MEQCIF+f+Iq50XnOazaYpAvIBniqii00l89kCOLAf7l92Xt7AiAsCRsGokbAujseqp9Dd38EuCIdyVD9OAQ/hfwQSoyebg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQJ0ICRA9TVsSAnZWagAAu1QQAIrxS/a2Mn/j0nej1yy+\nZyJKBo/KXCmdPSGF7mS14P82EMPYD7n1toXdjaipJRN0qPNGa6tGy04GkOAD\nNlkSi1zXl7y5f5W0TInBmtTxxbH+tDtrtoCATWTwffkVuuMWspPskfXoqcO9\ncMn9Xm+ixipUr8jNR2GcC2187aVm7mHuP/DA3lrVw8ju5CBmb2Mbn+agjIAc\nCSuevdXgFX1ytcl8scUFfwOB4IfD4ZSb3ikPK3JVADp6aV5tx2RtHy9wmSnZ\nICO5a8FXF7amzxmn7R8iZAANv7SIUuoA+d4y6b0wiZzuJWwcI+e9iXyG7kHn\nxTsL5R6VHbUjrfZMopiQxKh5ZnIQEdCYBsu3P/A2c84AGDi1srtuF4dH2WpW\nv/O3w97+8TB9rHoFFM368emwVQFCRPDX97NAhCOEorOdgdETnmae1NEy8ag4\nO0CcCx4hHh0ipJaX+/21S9kSCX3veVT458cnL/N/evFtaBxcuIAkX+ybWGW8\n1PmFc8DlF6P5hrJl46iXJoWwqwlGp+ZgUPFw2Kq6V4128RSai9nfiJ2Efozn\n5n9FXxrhjr9nYEz9dsgselxw7FBCtywutYS9+ILO4bhCvjiPMURjez4wtsO8\nPR8Y2WnYI0LX6qFGPCmUm9j4fmjo4jRB8j6x2/31n2KmgpRdZoHQ+PWbjGfM\nQkpn\r\n=DC6R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-beta.4_1614847239758_0.33214766495537607","host":"s3://npm-registry-packages"}},"2.3.0-alpha.15":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.15","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.15","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"10336074ee153c56c16c7956820de7d1df55cbc0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.15.tgz","fileCount":309,"integrity":"sha512-w83kV2VpqqgQ8zI5mXNNl8jDVNlJNc/YfGOfPwt5y9mheXinxK5NVO0Qawn7UFCeYDQKVc/Pf7TIb69N5FCmOw==","signatures":[{"sig":"MEUCIQC/oPHIUYeX03G4+mlJGPYx2PQXMQLhVuEVPDSlJ4vDSgIgXAo6/irhYCRdsCkI+VUX1nCTwq7iPuFKv4BdluV4Q78=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542636,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQJ8aCRA9TVsSAnZWagAAYbMP/j6BjayNGeYAYeaI/Rmp\nK+2yrw9TNO+CtXlgeujEUv/bqbFaBWLITNlG+HiSSPQt0e6t2qO+eMF6nmuy\nm6zuESpAz/vhGSpL0tMYNftfe1axzLWTFsNM7L9iq6JA0i/6lfzo2aTF55qR\nq+i8EuQqQZluFki9Wb/orexZNpHcq6GvZhIhyqqV/8Vq/bMeLwPbjmGZ8BiE\nRj9p1AeeUO32TjUauPQSBYoVBumBJutIuFvKV3etJqPwXILbdO6CQovO9bjA\n7+P3hzYbZmcXa4db4CdTdDrGjWVb8w1Bvb3Y/Bd+PxQxNauClj7kKYYZqhHu\noXfKvKLiVaV8ojymO7EbBKiW3y8y4TpffUqgaYkOimp4WkmMP44qzOAT8wC4\nXx8gewOhY6v04wEl202Jm/w4Mgp0jiJOZiNI4Fy8FQQT8R8heflMyMZ1vOrn\nCTLSYE/290kii9NG08zz5xCK/a1lVihdq2Oqq7h3zPHX5221fCrYx+YSqxgn\nlBqGwLlQH5HEEhWrfmx7CKvX8+Tp8dc76W72ytkbjkrr5ip97zNl1uknTyQK\njbJQgB7nG0+zV8UdeSy1VjxPH9vfAyXyuWQQDgCxozGnzA4GNGNcF8q3nNy4\nGqjlK5JgN24xAOd7nrsUz5yMb26MTXcPVe4xsqnfjiDPPn8QcSu/QyVutzqM\nTucB\r\n=1eR2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.15_1614847769975_0.8674083285273917","host":"s3://npm-registry-packages"}},"2.3.0-feature-0870fa-klunh5fa":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-0870fa-klunh5fa","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-0870fa-klunh5fa","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"37485dc21a3c4a7042a699cd3939c8b6f15268af","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-0870fa-klunh5fa.tgz","fileCount":309,"integrity":"sha512-bQV/nSfSmp4+59+PsavQu9qXOJL7d2u2KILlMy8fwrICS/0hkm9uQM+o4HZqNc3aIxwQ21yeqff4eghGy3iATQ==","signatures":[{"sig":"MEUCIAQlyBQHb8wA68KQJgpIDmbszSaCsBhOQQGLeZ2SIPGyAiEApCOf7U0/iDZmLy5weJhODnUaLYdBnIhQwAUjCRpG1vM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542771,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQKR7CRA9TVsSAnZWagAAmboP/1GLQyaa1lpTYSoTP8Cr\n2414udtYN0ZeKjVSouOUmnO6lLjNhmL3Ig6jmkSf4w+NvlcTVg9QHZ+ihuR+\n2Bqm764MDcmYvElYOCjm8o2KkYLdtndxCTellV8UavuTVXtATX1T2q+G+BIr\nzM64GvB92CpBsvqEp2jyx/UoLMYd0isOCqkkxJoyks3UIA0+mbHlo36TSRnc\nYzVAVWqKcoK0cdg21w8cdmfjySrk5KApL9S6vq5aeLAN1POQqOKd/PZsPcD1\nElAOU0FDinmvgN0i2lVNfONBoL33k0Z3EeArg9KFrpcFf7GrziwtAZhMasJj\nP+lWcWAktkonz6xvTOOQzWkUiBtjbhjpGNjr9+p7HDjZiVVUhBEtI80xfIXJ\nkZrxgQcOHS4tePaueWQk1Ng/HJCtTvHQlv9yj99xFF5AkxtTXRwV14qWCVWi\nzMrIid0MK6o746AJmmecxI7n/L5Y2iAjg6eeL6VQ3ylIeJKgxt6e55//Wzo+\nJSC3+YglVWO5MUIEFg+IzEiVz2N8CvnzsBSd+b486iWJ5b1XLPxhauptKcEf\nqG8rhhPMpR9pS3CRKuoKaSyFxmq/O7hr3kcbqBrl4VGL82RF2JZjVtOiFq6l\nDeL6e4HAsguXCdyRQO7kGH/hXDnskoSYjV5YjpXp9zywbZbipYl5qiTXCueg\nt8UX\r\n=CFdr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"feature~terminate_process-instance_before_removing","@atlas-engine/process_model":"feature~terminate_process-instance_before_removing","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"feature~terminate_process-instance_before_removing"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-0870fa-klunh5fa_1614849146803_0.7005133886360007","host":"s3://npm-registry-packages"}},"2.3.0-feature-270ebf-kluo0tj5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-270ebf-kluo0tj5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-270ebf-kluo0tj5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9114c11f3f317b2aa92a86a3e1c45a738d8f9575","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-270ebf-kluo0tj5.tgz","fileCount":309,"integrity":"sha512-vlNAYjzfSUr8SEJbvchMeZjuQPs6i46n49o2r62pDj6tEKmNdUXWsDZvFTKmJ0TDpj/jskbxfl9qSPzc4KTW/A==","signatures":[{"sig":"MEUCIQCVEMIVAu/PeShoDUN84ujhnaHm5riPhqZG06gNJ93BFQIgBCBQdWCCdsua4uHb7pl0+481CD+Tfd2+NPFp4DFWuYA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQKgXCRA9TVsSAnZWagAAmbUP/RKiHYuwlRR5VNm0ktxe\ne8HiIL2WG4Rhg/2sBEcKf8U3iL608HpaTN12dRxtSE7FGrpU0iNPBLKrY31p\nWW8IZhLSSHGyfYv1tC0AwF/Aw4J8wqxyvtE8EW9s6aVkjb3QG2y19xMGPioH\nc1gBBphVgJGTT/FfUclcBICpzJnjLa1uEIqh8TdqHLooTY4xWeCAuXDxg7Bn\nwydjsWpD/EhM0tZwZFmFLQ8b04UvMPYHEWrLpj6WrGydMcc/NKhVaBEiG6eV\nhuc5FjnA/zJT3hpxcBBTRhZGmb2cUvUpr8xW7gxyYiuxWuKMXfhK6KxUanQZ\nxPRzGeLNjPpq7mKjHtVa78G7gX5N4n8f4nRAFjIdHLSZok5fvR+YMFHoBGDW\n9H8Mouw6+IsTGK03wliAyNPmDtG34uXiMGWKgpyz2938mj8zEDllE78S9C9D\nSHv5GUTTVZpqiOGpZ/abTgDNULcFBd8Hd0eyP9/TtAO46fuk8Nxr5RThuMPt\nMCuPOrjp/3KlIJdvEEm15IC5w2xj2p1YUGhpO29qPNmL6f9vU6lHp+FmPHkM\nBnRcnpvC0nWg4o78E3dpP1Aq+jCv59pdd+p+8JOBIPiNkNstOh/CypOLTWFl\nFTpNW6ImE33EnMah+8VBBWVIZjXMtfp4N5WobVqmpsYeCBBDRIRObt1iOjC0\nD+XI\r\n=SKdT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-270ebf-kluo0tj5_1614850070949_0.19527629509986744","host":"s3://npm-registry-packages"}},"2.3.0-feature-3ba89c-klupwszd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-3ba89c-klupwszd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-3ba89c-klupwszd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4a60f16c18afcc604d5cfbd29a57c3d81e18da66","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-3ba89c-klupwszd.tgz","fileCount":309,"integrity":"sha512-EtFJFUx2/xc7GX5LIyJIW4Pvv8H+1mqu8UjYRagVYelcF2Un7VVP9IZuHEZfSsLFeE65UKIXbW/twfL0mSTHrg==","signatures":[{"sig":"MEYCIQD8lX/E1X+nxOKMS+lMzK8Knnd2MtSFY3lOQSLyG7+qjgIhALQf8Rtsxaw1phg5BEtqf4MfClhqyC7f/TWJNSpDGiAD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542771,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQLSACRA9TVsSAnZWagAAEmcQAIVHcMTyhXJC57UbgkeX\npQLTZI2Rz306Qp1wh9TpjgRXV0tgXRluzeVusSiILqiuXBeH/HXpSdNQ+d23\nVQ81h+ihvJJkLfDM3f0EOC1JVs4RfEimZybg/7y8tems6AyBSqx6YCuzszSF\nx9svbPhrFruHG02AtoBrTbJJkt1KA1SZ7sUsEBj+f+MGRH9QNtTXYetLYgLx\naO7XuFa+32h8CXitq0BJeAsZGY2lr+MWpzJlQiMIZSB17m33oxQKOlt0gdWz\nt0xjvr++sjY616iFXxfUbrTnJU+u7Ts6TJqylHsq0sMi+swUbkRkI3C1b1YK\nCJI6OYpSC58pMMwo70P8P+I54scBRTXVP0iHs+0EVjNOHucYqcr/A2MgGZu+\nbjx8IoWJ8YuBBIXqFH4Es5nXMIepgw0JSFx6YN7vdA00SSi5Lg1CLhLYVS3x\n1i1PY53ueHJhyXgfG3yLSa8mML5YV+w5x91YBSPZita/oKJ/v6vVacgMRd2/\nRk0sOe7huDz9knmQXV+4cVclrxKbdHeeOAOeQ1NNg+FJ8NBcQt1vZqFM/SHd\nCwgkKbo5VMQB0ane7A431NkMx1x1rqYWpGwEu76mHnOuc8a91B0fV9H5pdS6\n4L4Y1aLM8qFA8o16ApgGjv2KbfGxwQ347bpZcE3AjZZfcMbnPbmMcjXsDGoC\nB2+L\r\n=yoPa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"feature~terminate_process-instance_before_removing","@atlas-engine/process_model":"feature~terminate_process-instance_before_removing","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"feature~terminate_process-instance_before_removing"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-3ba89c-klupwszd_1614853248058_0.37884366603035513","host":"s3://npm-registry-packages"}},"2.3.0-feature-74a0fe-km1oa7ad":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-74a0fe-km1oa7ad","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-74a0fe-km1oa7ad","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e3f4cb0c4e3ae2921fdf28f423262c89e800110a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-74a0fe-km1oa7ad.tgz","fileCount":309,"integrity":"sha512-UfH8Kq6gk0F2gxn8DC3S8hV/Z2zOHnmBRgIVKQ7SNg9OmFyqueszQ058gTEcHv61B3Z0OT6+ZJvBdXdNPeKXrw==","signatures":[{"sig":"MEUCIQC9UvLIgdm/tElZBhsmhrdWo7xPolbnfsYAflmzUaDcvwIgRvjOEIwmqBsuL1/7JqtTlZ1zRPmK1/xf3r5m/ZUjiH8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRx8uCRA9TVsSAnZWagAAhIAP/2BuclmTNrbcZu2mzWqv\n1gAhy9qg6pZcwQ+QhMcusSc6IdHNOi331YkDaEMPT2JN8Jd9QKUnZlnOf9qK\nAcNMeVGqyArLs6gKpRJRsMEqD+Iq1zhUDRKFDSFttD0YwiNwMXW3eE+zHaUz\nzN/3UQFQawCbUg088CPN8tu4MEpWdiATZCXfXYBFKlQNuNtXLm6ph+6L6LJG\nWOzOLHwPMS9cCbxLTaNVf9++Lt6LL92pZe3uJDCBqQd12BePj1FsHrPfh/OE\nfnMtnTwGsXygdLI8O1R4o/C9fQ7PMPab3Qb42+OzR/4TP0bS86Bdaxfb6Qel\n6FLHkFnrJzOcgcpPTbSn7+BgpJ1mgsxUKmB8bZgu331Wrp1dhOPVw5rcxf80\nRD3B4eTtPjpLy9teJP1lI4tLwmXqfbPzkhZ/nkzJhcGeJ93rebDFF/iA9fUO\n3Gr657zWNFJT3Dr58kM/BB8d28N52RjxOPeW33/rEmV30aRcKSP2/yR8IXga\nURonck28PzVDxNIE80G2vwo3rTiqDJt+I/rhT/gQavJuhtOKSCmcuE6+35sw\nKykEluYOHJXs1MNWl8WUfSrLgk0VxI4VJD/5TcRXKk39CBCWayxFaKyhU21A\nTNRtYzphDON1s/oVFNh5FsRekRMtO0GopOdt7ePt7+395m2WxiWatrVvM8Q7\nRywS\r\n=6spP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-74a0fe-km1oa7ad_1615273774457_0.6715158285586738","host":"s3://npm-registry-packages"}},"2.3.0-feature-d1f4a2-km1p5xsc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-d1f4a2-km1p5xsc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-d1f4a2-km1p5xsc","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"40d5207a20e417dcd7a9272d399bcf256abaaf4a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-d1f4a2-km1p5xsc.tgz","fileCount":309,"integrity":"sha512-5bqDmYhf0pX2ZURUUnqvNtyO/oH6pIy9mToEitDdDk8/Yy3sFbope9uMyl2pLo7wIOsmcLiLY+YHcf/64xlQiA==","signatures":[{"sig":"MEUCID58yGuQAsK/MBMuSr/yJBT65RZ8WBTO0GEvOK+xLD2lAiEA9TVVnfAE2ld17M7lPPECUjGKC/wwk3vyy7Zobcq22vc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRyT2CRA9TVsSAnZWagAAKU0P/Ar9KdTWFlvDhfhEltb2\nAKwfymKhk48JRzP9C3Guowu0kffALnlwikIralIRlYKgqeGjFxojkmyjdTjZ\nJ0J8592QAMZUqigjZ2cHceZ+gKsLb27EddgfIG2Af5t2fS/NkKCcgxxQjlaE\nS9WOWThRB5j1PBesI6wc2wNemxkPawMZgVth0VycFVx9LUN85hPj/R6ptcOS\nHzvPxuMlYt+DB0RUwRV3bh29UNJPAfX8rLM6O0JDPQVqcLehaWmfdtuIfF+R\nVMvvrFTo55uOBwDJmheogJ6dgHK1Mh9jN7qKGwNxOEm5e/8iD5SLV9KeVoD0\nwJKIAa+jJQFcRtYfhdwfWx0mSLEWXX0leUmVB3CfzlGaWUqiHnm/AZJuY9t+\nemwvX+eFDjNFw4FSfzr+BIklkQ0smatWl3hKqGljRC4JowAGJc0ldghImTod\nj3oKFPPjhpTzP8Rf1oxL8twU49O009k3MHnL5ppu0csd62dznxQcT5D0cIYU\nG4V5D18c0bpFQ2aTurusbl8lwk4U/KeGljI2tluFWVS1YUxP/vy4om/GE6LE\npTOW7TNJXNBvVwxIBtGDmD3fs6h0fmomTsJ4qScC4MpV5GBZx6MkLQ4b0Uaq\nLhGAd9pvZv9AS7jOOR0Vre2NqH9vx/TgZy2W9g/OnybQNfETWiKpT9ZLUxKm\nHyLR\r\n=TgIn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-d1f4a2-km1p5xsc_1615275254263_0.32531052579625386","host":"s3://npm-registry-packages"}},"2.3.0-feature-7d2b5f-km1r0tj5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-7d2b5f-km1r0tj5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-7d2b5f-km1r0tj5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3d98ee2a3e7e53e1b78b97c7482977caaf100e63","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-7d2b5f-km1r0tj5.tgz","fileCount":309,"integrity":"sha512-0+mOgMEzZspJ9SjjCyBTYc6D6Ysq3NkQ9q5dhyJHZQruDSIQVKssd1p5AaJTR3Ko9TNTS+RRg0ucaeimF9yfWg==","signatures":[{"sig":"MEQCICdb8pcvNY2KUgEjbHpw1LtQLVLiQMiZAlX3EHGY+xkRAiAVEUedFSPIfB+pWWdvWGDaSw6Rj8r/wi5EvofMVX+HwQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1543174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRzElCRA9TVsSAnZWagAAbfsP+wd+6DEQaOL80gc4/b9T\nyFS3VnzPifI9J3w5FrYUZ0uEE7t6rWQ6RD4jfRLmZr7LR486aO0RNWWQ99PI\n+8Fw4OpFPlg6bzGhqaV1SDUS3ytoxLRaHGR9iVZzF2WRl09Jo1QfaLitbqQE\niqvcErJ5/Fb5OGXSpcqjWDmLCZ9jX/Rvc5dKoRvDSKM95Va8dsLZjazzl2Ap\nqzC7P0Fb1y1hflIYizNh++kFOiPvTIVcHVso1rdLU/Cz1I2QOqZBQtcF7WVI\nQhfjb8pTvDqUrStDj47J1sMXl3MOn0R/+bX9YKd4I1xa1IJUKNHNb8EQuOSY\nlBF1K1t+0TQLfVW8HCPR7UHs5e9pGh13bwM9QaUDg3C7ZAk0kVK3XWao/WMN\nFlD0vk+HocQmVmFsI88JLVqpVGGOzzo3zC4C1Tl0wDonL2awxOKJDdTOFYSu\nxPteEp1YrBdi0haO7YbX0oz50qHD98iAOeyERjEAe70A3TV+XY9HtOcYjy4e\nHeKo8hmtruTrNgunGieqDFiRO+BwOzJTdN4WXEz6kqd6Q3/3UUvenFe2xtjF\nCaXdUdGxy1pwCTFvYKCkqawO+NOSd2rpxoMgwduYEtOeOHM+wrRub8lJ0EVW\nKfZcRwEIfzCxhvkVqmhmhVDwiuKDd2G2X7l4aMVaTkszSpC8vNsO7PynRz6n\npoDm\r\n=QvxT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"feature~add_send-task_specific_meta-info"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-7d2b5f-km1r0tj5_1615278373247_0.9150098157130682","host":"s3://npm-registry-packages"}},"2.3.0-feature-511054-km29up3y":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-511054-km29up3y","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-511054-km29up3y","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9c48156a25e0b12e66c4c4e10f8d61fb844ddfac","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-511054-km29up3y.tgz","fileCount":309,"integrity":"sha512-CjyRsPpXGnnZuFCX5w5tigW7qQB5hZmPivuMIMKBmAZnVSlRebGVMdu6HSozX68krnta7HIP209mV9SNvF4Ptg==","signatures":[{"sig":"MEUCIFjBGNmEg45LwZW/gcT1dzQpCenQdJVxzMrO/wJj+1oGAiEAoU3Zh0Jc19Mp8V2jQfcxxV3hpHHZzmL/aoA5vqvGSFc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1543174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR6yxCRA9TVsSAnZWagAAhEYP/R56cExS8TLjp4LTgZCs\nKt+4JIHA+hzb2y5cwnZLiZiQb+Ws3jSBOIwlFnWUYyX/g4fM5waNFZ85fN/e\n4yS+WIMHq0j/GHOf+28OubUaESgm2UC5rKquLKJEuLYckfg9X+7EKZnC9rjO\n3dJ458MvoJOPAAcu+fl8eWO3gxowYucovWtZk3kzvEli5I4ko4RgOaYbaKCE\nTJhNB1GYxL5cnssrFK9rJoRSn6IiatOMBPMbyYO5eXO1A5URCbC8J7HaDLUV\n6SDODZOIHAqiLo48IB10OqUYrD3j+nMOafdavcklV81zYcNCTjOAi1p9hEDm\n2lYV43CUX3ZNAHM9orb/uAFnb0v2FAowm4VC86b6WEI6UGmIVg/6XbeBgrfB\n5LHM+78icpo2mpwGJtJ0lUWZk23+SHgAJ6E/rUq/4uWlDRXbN77QoATKxO4a\nFNiJ9Mxy7KuJGtstbFKWVB2syhMhv9WxRqihLxa69SEKrgnfW7Xo2stdWhq9\niWmMBpv1a2bfc8lRq+Tl/arQQoc2CLVI5bVa9LC1gneLl4dH7518h6uCPJgI\nCSTKZbEWhDuFazRLMft5/GewgoX/NwsTuyJ8D0YVjae8IEu1YyNW5I3hH7gE\nXkJ+wOGgs81aAOPfdLYxyOeKxKumcTxLgk5glFSKdqtqjY3leBHsB7Y7Csbn\nFlwi\r\n=GS0D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"feature~add_send-task_specific_meta-info"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-511054-km29up3y_1615310000988_0.232558053793686","host":"s3://npm-registry-packages"}},"2.3.0-feature-05f553-km4noyhs":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-05f553-km4noyhs","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-05f553-km4noyhs","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0507ca9e5d17e64348d4871edf38c6e68a37e809","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-05f553-km4noyhs.tgz","fileCount":309,"integrity":"sha512-VriIx8ScGpnIAIbPUMM5z5khtENvmVZoQPXR8/OMn7RjZXoGaDK020P6iSyN5EBoddpu+Udey2SHIkNepsM/dw==","signatures":[{"sig":"MEUCIBlguWZfhTBcB2UXZdVeml6FB8r7wL1/uUXI85C16x30AiEApWM8S4SpYFm2Q2HrZN6vHlvHiUtU/wrIjKwuUZWGl/0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSd/pCRA9TVsSAnZWagAAqwoP/jKFxwK5QMsUDjsU8hD+\n9MMbTyt1Dh/AahXi2uiT1Q7u8PaCe+8/Zs2G5twDJixmSUSIYDQvtE5Zq0Af\nyJQgAewMRrBb3PytTFK7O95WFsDqi1hjKrvhPCR2debPNm3Fn0OafbpZT7M8\nHGTTHbV0HPOo35xC9BzngLNHBuVNq/V2a07Yd4ekGxcBqkFDPzBFWeMd3vRr\n0sWUmjk3dZYU3JyzAmKkFsFqgRdoKvU5J93+h/5GqFv4Fbc14f620L+JtB+7\nJFUd4b95G8HCc+yOaaOkUmHAAjEyv9/RtvsnAyjMoLj/c2LgpBdJW4bpHAX6\nba0Fav9OkMiZid3t+sgxoX4aLDhrXtR6dd5/X5fTkMuPOV6F1jNplS1zqQ2l\na2MexIP9qsTuthRDK3+fnuvXE9oVywoMv8VOsaIj2LMzFlz5epTt77fheXz3\niGvxuxi5NGaxhmF/7W/m6XDu0CrKJSoihgEkREg2i2WsEUdp23s8pkQNGSBl\nUiFmocmDJhg+zUP0+0Mrpvf++rgRXebDhPX6BUAEAj2t/2XKey5s1Zer7r4c\nBFC5fRTnsS+6bJm39Bikvy1L5SJ7Syakq0gEwRBIF7xVVT6SurftECAytERz\nwaw7n6uIE3v4ZHwqxDsicMrMawKPXv6qsWs7Pp/YGfJYfv4g6hMwXdWwonzS\no1Ea\r\n=AVBn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-05f553-km4noyhs_1615454185141_0.4301071483833401","host":"s3://npm-registry-packages"}},"2.3.0-feature-99c927-km4w2hb4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-99c927-km4w2hb4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-99c927-km4w2hb4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bbc0c1b5604741a0de02b829d30ec66e37e21eab","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-99c927-km4w2hb4.tgz","fileCount":309,"integrity":"sha512-xgMSwetV9HgfrDgR2F0QY8nsDoj84nb63kEXEhpCp6RDE0Vitqw/xwrw3g5pVbXlTljQvZ/VcGxsI9JFc4CQoQ==","signatures":[{"sig":"MEUCIQD0Izt7TIQL4iZKsLUviSm/nrrwNAYqFMujKty57I81tgIgNsEz6JekHCTKLF+b2KbOO6NWtUpLWYxUYgKkwNx+PVA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1541146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgShbZCRA9TVsSAnZWagAAvkQP/2SNVUMc/5TDLJ92df9c\nWIRpsVKmHUh8EyPPe7y9P8DuGxOFvUlVr92KulLBQCUmQIg7wk6qnh0puwUX\nynN6Igf6ZkRVyiIUf4Wf/2Q1WV7T+nPQT4tDGJaVcGEPsNism45LYsKcEO3T\nGUobbsWWbdzjgnTx548paOtRqd1KKGZbBcggE/I77TWaq6vp/xeMlX1B52al\n6jfVjy8x9tnvSIMnegke5g64eIzk6EPNdGJd2zkEAh9cdED/hYKAXePsB3M9\nvAWS+Hbth1ceCrLNQyGX3ePrig8A048Y7vN5IE/qpSwPgjcB7BM8GAZmVPY0\nVgXrfr4NLkgeKaBoWa63gZyRrQSa6Xf7vAIPnIx0vo0FT6FBKyR8iFiHNfy4\nudr6Q27Q5XO+XHTkoTAizZ4cqyXln8OzABA487aTHHhuFROTCo0exU0m4QRd\n/iXUpeqYjTzSwgJb6mf3G2Qa/Y+4IwqIbKJ2FxQyjm6gMHH8TcxItb4NIfC5\njEUQYLu6feNsWXizMpJGguC3vTT+iZK/F7x5SzOwBAuD6giIDM+QEYm2AUha\nhAV0o0dlE487I6XxV5tisiE4x7w849yJF6MAh4AJ0EmLFY9ScyB2bXxSlBJS\nBV51kcWbFHTStCFRxpU5I5/ceCnNVK1WDlNBDfiqeFfud5PkcI5QMrpzJOr0\neWhJ\r\n=1eGf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-99c927-km4w2hb4_1615468248721_0.04995764818699833","host":"s3://npm-registry-packages"}},"2.3.0-feature-2b8e17-km521476":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-2b8e17-km521476","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-2b8e17-km521476","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c380ae7af5c5fcd3acc4c6ab133569242a381ede","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-2b8e17-km521476.tgz","fileCount":309,"integrity":"sha512-pC6wDyTvxBRNxBKHspT8dScto9EdnzuPBFU9f5bQxGNIt3S9ZUfQ69H5dwJjbEGiptuMOoC8Zl2dS98gmG5Ebw==","signatures":[{"sig":"MEUCIDfEdPsWzFcJBlZNF6tkgwRex+a+4sBGD/ugToBHWWCoAiEAsJ7wZFBF1qMaP301/Pgq9F/VlDm9CAdJpBTg85K1GY4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545015,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSj32CRA9TVsSAnZWagAA/MQP/i9UT3v4CZFwQLvscWwl\nrqv8/FNcdB1Glctlr1LO0LNGcnlHO7SbcWVOqmePybAm13AAFcUWDEziy69H\nlzsFTNoKqT0DDqey3uz8m1z8726qtL2ALZ1ShLQrKz7TnpDwB1pH9ULH9cgm\nBxSYD25aPnVdORDOlhR+uA2NrsYJMaSA05/L9HEH+a9jNNeNIjYeEkVC9khK\n7YZHxoIYmIFTPj2WHdcuA3MdCvEREPgk7oWwfzTUCgZyAWwCKuOiWXU0/JOU\no9MpAmJJ4VGjSpng753Rt+5M4Bp97vsV0bW2icYcp6ipnD75m1ri+L6NbVIE\nQiM04ruNbyvxA/WtzpPqn+kwc2bNfNwLeIY8jrvuMjGj4NXxFS+Dd9XlJj2X\nTJF73oOgbfnHeVT7eLgzkHWQunWnchhVHNPoAVV2rJS/z9H6DeRfw70V9wdw\nMutJMJ7neASeD77ZvjXoK97yQT7infpdFw16LMrqihl8vUv35Zx1sTRUDwXM\n2Vg95KsG5EC0541qUkSw0uxsEU1mL4tL6iFtLUW8BZrXpm1V4oYKhevXibMI\nkUS7bFZ/3rWKPvO6ipp3RduognmMOqQyEhMZxgEEE9SHqJ4XD7JIvBy+GxKJ\nQREghYRX58DhW9KPiW193ymIWdj0UlxwcnRGLF31VCIb/zyWv3B5Flo0zSEU\ndgkI\r\n=UAFU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"feature~robustify_event_based_gateway_event_storage"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-2b8e17-km521476_1615478261466_0.7269878886832535","host":"s3://npm-registry-packages"}},"2.3.0-feature-99e6de-km53bhsb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-99e6de-km53bhsb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-99e6de-km53bhsb","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"380ce68ea5a2659aa59611cb4300abd6cd6674c5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-99e6de-km53bhsb.tgz","fileCount":309,"integrity":"sha512-qssl4HUqtQJWs4Ap6wrpkWNHmY0/U4OAKn6VCqcdOZQzyawv1O1epqJhKVxzu3UCQS/+5kYq3C2BP0myYEdfYg==","signatures":[{"sig":"MEUCIAeC50r+FNIlThxKEUvcoU9T4xjXUG8+jim7RBp1SfZAAiEA3FvK+pBfUp6rA1gYqDysEASvXqlTGaEwkCZQZVCMaUU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545015,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSkZqCRA9TVsSAnZWagAAu7MQAIiaTq0VPzA76jvvrfxO\njd0XSNX8LO+wRo72ZNO58uKeSoFfR622p6LekisDINMpKhNQIze0dfIBUgyZ\nO8SJK1vh6/tnabCo64aKKPo08zFeKmnTu+tO+7Mfzvo+tjpb55kzfNY1f5/H\n/GDzd49v9Kw0ofcSvgMSwQ8vth4a6N6Hg53AN8srxWuMq4baIEp3MlT3GXBv\nLx4ELAR7L9e/0tGtAMv4VW1TbzcdaK3/w6bsxzIMN6L3Q13tc+X5e+CWsTyo\nyg32kM+ZVisfy5SH6Yvt+gbQbwndbpcQzGkigStpLnqyM8m3E15BtoZwdwDe\nMuWaZdmMe+Z96veBvLrSfxFYEZNmjj9m1zZN7RjeghshtwOjKIlFQ1Phnfbo\noMhBHknOGnX8Xk9zBj7rv08VjRbpWjG9mS5VPgOdE6nRAmv+ClcEZpzUSDV2\nLbMno5AGyd9GgSMi4COz0lXBY9fPnhC4ogg07FZOt3tKKrLfl7rnP4VbFyqe\nBIP1SZ1HVZGnCnqMX36UWuAD99gxux+JImVsVp/IKU7LG+I8RT6kYE7uLcZr\npoE0tv/2P3vgVFLrPTH9nhzGVSzX0xDBpMINvryUy8/U+eVkTGJL3kcsq6xY\njsxmEV+7CCwMw13L5QJbZm5BOI1N6JgBYNnMzHbx1kdrDVvQjkzfAcF12i+h\nXa1C\r\n=HygP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"feature~robustify_event_based_gateway_event_storage"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-99e6de-km53bhsb_1615480425381_0.2200968315047056","host":"s3://npm-registry-packages"}},"2.3.0-feature-61a080-km53nno5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-61a080-km53nno5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-61a080-km53nno5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"95a6a7213341e17463ec55998acd0f0e87ab71fc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-61a080-km53nno5.tgz","fileCount":309,"integrity":"sha512-41NCNzCgTPGFBPPbBdy+5SYPGYFHTK/mrULT3Z8kRq3uEKImWyWUWl4iNpTuV1o9hvy8PaBOQFaxvGwQ51+NYg==","signatures":[{"sig":"MEUCIHdfYQZUnSHb30IiEFdPA9u241Dvmggs/79061L+FFBzAiEA2Eemu7HR+zkuT1GcWk3h1pNr/oXiidtIgJkGQAvDNy4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSkigCRA9TVsSAnZWagAA9bUP/3EGZTklrdwt83dJuU+C\nrjtDb7nhfA6gpSSU0tugOuH7xuv3fJhLWKEAQIGo/TChkVZsSNmIgLKH6YYW\nipRVKFqDjFWL09gsW+gVRLn65hdv/7EaGE8RZzxA+muxeOZ2GxF5y1uFv8PL\ntBfF1yxG5okrqjAXKOz/d0tfgA88k+jNeCbkclBfSnWdqiAHC7eTDDzqltIv\nfQNE6n+iIsy+pZcKz+JNyv8/a77nZvDz//TA2h8g1ioaEUOnjMhLirdyCIo4\nn7nok0ST2Z6iXRR4fGTxA24IZV8GuHVKnXqtF7IdF1+zz7vuCdGK8R8Oggzn\nVFaxEHYJHmY0c8SVZkeDqDQBmuyQCfL/A3OXS/jbfdtzLHCYCRz5klfriYz1\nr2JwX+er8sJ2qlvrrGNr9lhk5O66Mp9OvRkXJcfsKCA4j3JPrgR+8zINkqYT\nH7t93lpRHx8BJi45bGE17algHaRMeMqcFFK14mUwffOO/XwvldDNe7l2gXoP\n7wtIooAAWYrPP0Lz8VJrP1ZTkppJncTMg7sT/CjPbM4utMP6z9Wo5fmjT/74\nxBh4lpe7R5Q24IJKjuyj7pDe0gT7E0p1Ow0m1iiBK0mnnXuFbfJOncXo6o37\nSKOtN6+8aePLCmDxeN4oZddEUhN2MzcU4MVAaL9WcjID+hZQj6Mzjomp3v0c\ngE59\r\n=7Jah\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-61a080-km53nno5_1615480992125_0.5352433079500925","host":"s3://npm-registry-packages"}},"2.3.0-beta.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-beta.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-beta.5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5e993551f054cc5375e25792193859719408856d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-beta.5.tgz","fileCount":309,"integrity":"sha512-emUwRMpk015mDGxVG2VDmOav7jxjAy3QxKDsXCy4qSYyaS1DKqMVIILAX615vRktEOuqSP8a6ibn1IjG/h3D1Q==","signatures":[{"sig":"MEYCIQDrBPgUk+F9h1khX4cfhi6NNUfA1+ebKApSL8fHHbaRvwIhAMSJlQJgpcmG0xUbfpl3A3xlOJwGl1fY09q52Uq2zeCX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSkr2CRA9TVsSAnZWagAA/9QP/121iBRdqUFs3sqnfRv9\niOb+McZrcqhSasl97HcyIBxgWbOksJiXoPEfwRjArpQeN4i+GtYpLxk3IDsC\n4LQvIM/rjdVZKp1IlpVUfy/MJ7dpR3qfDPmYysd3FSDbNeb+P+/t2lgDODsc\nMHNvEFx1tWXFSEsCXXKAl7r+SmwuJnHNMo+Hgbbx+0aqgArNiLz3HtZfgdZn\nFfTEfehViUlHDgyGhgGvwdBC4tlbT/0CsEzf8P08Gui9mkS6IqBJkFUVXOV2\nLCbDzKjYj00HDxXfiWdiVKAPVrEumPxlx5f7hvL2Yh+wvyoT1kD/WYUwJjgV\n6caxGINGkyeVJNc1gIfWOTPXStMIwSheFFz84veV1+cy8alj4PJMR4w7cB03\nBt5OxAL1SYETqx6A08wpTA6e9J7dW4v45WA/Hvb1RmHq0KFk69bb1O9DKD98\nB4cu+YQpkxpyUuMtj4VaK3t9Kl/Y9mUtORoDbqu7ybom3iybHZ4gg4hiVq69\nIS9rYIDiYYB3RipDvC9w+oLWV2G8RHKZXL0HdFziYurn5wEMEz0HhStwFDog\n8IwvnQT7QscNy/NASEO4pqDxjsgkDPvjcJcLEdj5oTT1mQJe0543+2tamk9k\n+2blZUDwCagrXYRs1uidy1JzTZUzmw4vne3lJaZKYIgton2mzGzs8pjIv1CO\nlfvS\r\n=HzKv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-beta.5_1615481589389_0.6490202374369654","host":"s3://npm-registry-packages"}},"2.3.0-alpha.16":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-alpha.16","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-alpha.16","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0ddcad5d79f977da5693202473bd26f3017c9034","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-alpha.16.tgz","fileCount":309,"integrity":"sha512-1iN15vOTeYmCLHaAD6SAEszfdMmryh6U/MAjMQLTYJS7Qo/FPG9bBwMaIXcJmMncWhP5ETyhxDi9k5+2IPnR5g==","signatures":[{"sig":"MEUCIGz69PjM0sPIMFwzql38EnCx29Mm8GnYipzgbeLNOcrJAiEA31y4dOeog5Qb9pRnBtnj5NuhZq5Qcbz9ivWXLDMfs5Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSk4ICRA9TVsSAnZWagAAgr4P/3BTAZ1IkEnUW3wPKWTV\nlnv0zvGCePxny2Ufxq1fpBpR+C8OVQ1pQ8QgR4FYXBbMhA+lAqqymbopL6XG\naAre0hhw43cl4jFs1gi8uMRoxAGlPUbxUb+TLJ4YhzYf11nCADER7C9twmy1\nCOaZQhDVurLipXAbLMTJA+B6skaEAY+HihcvTUTGezqnGhXLn0ZxLhvUSFYU\nLaYveBleik91ZJBi28nKgloU8S2lLRsg8uisY1gfTcjgGQwIGr5t4kaIN29+\nspiz/Q2tIlSOTUxC5VX5Kx1uQtQu+epOwdWf7g5VexJs8WVfU8z6T+m+K/qL\n7/q/+F2xTIVz+dAxEkupuufLVq7mynKDKfJsSlginZow4Bh7g9vi1QQArkt5\n7YKardpBPd/fyEtIRM7YxLJ3e/TvYhJmRm6pJ4MG3KuLCmBLtlQ8Ci00wp5y\n/ed+59xb86UnZwb+E2EJ6V+nD1eUOJTiQqSrNo1i1c0xVfE7cPrqaJfMPJPc\nV9CIjJupTzPZ86vwr21mVcSl5Z04D3hVsg4p6RJds5K2pkvgLxQNwf+Ze5LF\n584Vd0XefZlfQpu/Sqaeb4mgrb8DYYtFvSSjBgtNeaPcKHAue/zNrcvz3eDd\nsILXgsWWrAqDmVN8Mye9Tyv/FtDeHOduCg55th5rH9O2RUslbLHycxW5wNXt\nPLrR\r\n=iZsD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-alpha.16_1615482375644_0.5387351299269623","host":"s3://npm-registry-packages"}},"2.3.0-beta.6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-beta.6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-beta.6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5e226328250dc1ab92819edfbc04e58e54e9702b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-beta.6.tgz","fileCount":309,"integrity":"sha512-tUtA03rVb3dAMGy7l3tTQA3lARanSmcglNcWaxmE3FOgQelUCqPNLEZTX5SvOeKVNtH1ztSwjViJXwVD/JRfsQ==","signatures":[{"sig":"MEYCIQDBc2QejVZPDJisw0eoidH+410md63NYtIU1Q2acLep1gIhAI4K4hJVRnBIvMSkEC30Ll0Ko9zjDTvRjvA5o/4SpBK8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgS3bJCRA9TVsSAnZWagAA7BwP+QGZA03kVUM+zIg+mofy\nf+yVi3ho5uen/3Qc5LkR5/6HqlmK+Ifkxw5xuJpsJPcaZZgTFQN2y7LxXy5c\npe1k2njiqbZzdjmyFBXy/St5fhNC0gRD/UQPLgs/SaChMo9Ldame+pXK+ure\nZYKHbGCpZo3Lagg5Eu2g1C/6Ta+0+2oPex6TigyHvG7piubHN48UNwDKfPgo\n/IOa9FxgIffL1In5dhQiEMxykbhw5NdDLzTvDEDUuhDsMQmZBh2rjX9WTqUl\nBhm6bkXHNawPchJle+N0rPK3VViEwwdT8++wcCKucoFAyf0YvR49Uj4idljT\nAndeRuJlhLP3pYiU/72JeZsMInzbO7lbfbHS56TAJXIAt7pajihlC7pYZzt6\nRiGwt05Po45iTmIxsZrFA/tE1vV2PsM9BmzTq7+qAds69KSezIFHGc8rnkIg\n/WsgX+PPJUkdhRv/qWpkgWRTN+A6cvZtqA5CLE5r6arSLJaZuneCgcbJYptN\nRy+LMlklgSBb+Uhqv6nJysJwdkS4Lw7GKbGCgyOyPMayrjBLEePXWtnC5Fwy\nAE2YOcw68u9Qh3FyIgyGfO0auY2GrNNL7eLamM0S+9otBOp8RlyZn754hFlk\nN2s/7zni/u8KnPLS7vYfsG9nYgEvI8QoRj16Lml6i1xOMK4Dwu4/xboTOyTK\nnfnw\r\n=sr+b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-beta.6_1615558345058_0.8823575929094349","host":"s3://npm-registry-packages"}},"2.4.0-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"43e7158f44af593fb05c755fb2aa0067e32c961c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-alpha.1.tgz","fileCount":309,"integrity":"sha512-TjsSqpq1H9NnWKBVFkJClPMZfuZnc3kbt+fYq59I49351kwCfAZXDBlgJ/c8A6Zas7GVYAMJ51JwZ2UAniBZyA==","signatures":[{"sig":"MEYCIQCg4j0wuyzgtby+3Ysu+P4hz0Q+n+MagRGWQ42xhBO16wIhAL7T0GtfrI8zUwaSq3v97fpKvzoYaA2/YiGdncyicFg4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgS3hMCRA9TVsSAnZWagAATHgQAJbkbKQepROnLvO7z6mA\nT/DB7ZGbaxsIPEeqJ/M/8s7vSyIzMADusTQIPUr5E+wQF7c79YF5QNDBwvmy\nKnJBXJpDPGzADmwEb/LsqypdeM+XXuFKeBO+WV4YHJ46IpGmurTesVahH31m\nJYEsecGW2O4ApX7Abn5ocLB6Ws107BusvsxK+2kzoNzJ2CxxsfNoMwunGMFW\nho8VBQdVr2GLLCaI1E0l0VO9XU2tu53treqzn5rAtayCBB3LY3AgmsLdh732\nHBPufF9VqSYAx5B2jZEdVbVrdCuj6ZKNsVt704BINCK7zP2DRocVR9ZxP3x+\ntCTzWq6d1N1QVrs/4MU4v82LPjdcOTkFtJjI6Ln1PN0qn8y5lf8boln1yACQ\n43k2iPho+cyNhFuj5gAuJfvrrhLDR7NdQpWaI6qRWfltN99zn6oQp/QVpjHM\nH8N9a4inrSLmaTPKyYwG8DdlSwR4mr9XgWEMEiA7jDFXRsXQJoZk5WqgGNix\nIvlD57EsI6m+bRs9FMfauDR9/X/Zr0x37cwVnKa6p/YDrNAOORjPmOBs1C4s\nup2A10iE8XeT0t6Ne52EFHBxJ3G9PEdxqEV9k6ygHc9iYCNe/cevNGErNot8\nucx+fL/8NE5GqqgBTbGbYFlMIX2nZnWNk8Zxw919RsxmyeQwlG1Gsq8wOYv+\nvYxn\r\n=2F2C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-alpha.1_1615558731998_0.957025735826043","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a6c9cc4919da2e2d4903599a0fac7140a34b92ec","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0.tgz","fileCount":309,"integrity":"sha512-sd3lcmrQFGpkcyznXQTff9m/Lbc43ANs4BFrreYWwG3rgYJWAR8iyQkNuNtpEqjMYstXTlsF6YrV8OuPaV0Isg==","signatures":[{"sig":"MEUCIGqRJaCS9iW9kjjHPFPfR1S14pyJxZr0UJ54duRiCVXgAiEA0HD0rnfOquoo73k7I9LG3NdMl37tZ8sxroxO2IIOTt0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgS3nKCRA9TVsSAnZWagAAeZAP+wVVoyfXU629sAK2FtLs\n9Cu6aChs4hU3x9gAM23sK51jgy59Tll2XFaME/uq7iRZx5/ZHUwnAkaW6/KM\nfxhpZJg54jTCCHbGcN1MO/yxbEJeIhcqr8/6Tb653BzxkhRnrHcO/ajYfncS\nBw1123z+gtn+5aoA4fkRPXN/xcLrZxc/mgN1J84UOTGkG4XVE5pfvR9doBez\neBuTt6YukCNNqPcSwAP198N+cFB914i2KRO5yBJgsyU2Di3NXe1cd+H02uNS\nK/jP135w4BiSrg7mqHeB9q4ZIfKot20lDZPTbS3l/E/+ncYFixHHwkUAjEhu\nHt6PjLWW+Pe5V9GPBb+lAB5FxquPs8hUC+Wz7wlL4ePPYIEN0SuARddjWxrG\nPxmeaUNMflr+lt/Pz0LbSW/vvEEeNsrZKJMzEanbArTFrnXZ3J35LWD6gjDr\nJ9vYrB18D1RJvkxNRtyODr3sMRtRR7WIlxf90i7QGlvnACEReEMsHvSQUqKQ\ndihmdKagbBI51xyu/+ga+V37L8GOGTEbI0CIl9wIlP4O79J7QHXXbcdyLWhJ\nt1ZmKOGPEpUKtj3oczb6qWlZDwq9ypueaYOg5nGQ+PcsyJ3W3QbRunm4knnD\nGC8KEjGYAO4wONlvOFFla3AU8blV4CoEF/joa0w5qha+3qvAHya5UowmCoSM\nBbd9\r\n=cu3f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0_1615559113804_0.3498560189657949","host":"s3://npm-registry-packages"}},"2.4.0-feature-af4107-kmasuvyi":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-feature-af4107-kmasuvyi","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-feature-af4107-kmasuvyi","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"028311c6957195c928e9e671ec5a4058de2d830f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-feature-af4107-kmasuvyi.tgz","fileCount":309,"integrity":"sha512-Cu63FuC4W+Wx/KrBNnpGFPsPWhNchu0Mq5/yn0aBKuW93u0OYOdJgyJ0PC/smgnsBGOo2knBoYP/E7LTzPUoLQ==","signatures":[{"sig":"MEUCIQCjmSqc60K4MioG2nkJLKrtRrvwykMZaHxezXp9FjU68AIgHdu7MST4WjX+fbzhXD1pssN8N0++6we40DIpvkwbDjs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT4r1CRA9TVsSAnZWagAA8OoP/i3hfcj5IyNdEYySRFQg\nMMLtwSrs8q4jYPZEKmX/gwpk5d+RIb/bGsikujyAfl0nsRxcVQL5lTkZ25gz\nGa8EubpBXfXjy2rTQrkde+kh2u5sRcp2AmSCAb4Z1E94xSV6mPLwrfnoE7c5\nKmitG3Yw+j7T+JlHJ1h3wy2kd17lsQyrwN8Mi2QhNlrwBi3Xh4ftFWSSzuuV\njtzwKB78qDBwISUxEBATARijNLYIiI/lbiPWnq4dWwaCSwyc+7EB+8NWH9fI\n7C92GucZsfeUzkK85qUyvOvhqxBnB8k1NYM6LwFT/6j1pGx5TlaWHAwtG8Fm\nsm99Om1VcBoN4y1hSZklRB63EPlKpALI1ACgjXTByUKZHL8o9KVxd2Xrd9Ip\nDQM0Xrb8b+TNd65NYo8K6K0f/LGmF/N0pz0vat35w2G2x+bFejE5jKBc+jNR\n9bjLjSHk6p+V7VhsUuCuKlPbz7sMb7pZG1B4V10VnGyMar0X6xhGJdg6jXrR\n+qbYs1HwQiQXRY3F4u0QXbBgQq67BxW6WC3V/eSXa9re1zGYgn7pNlxRQ049\nnbKfG9THXcfOMzdMBYp/9m2xE4E5Wa2jt61gCe5sSPGXu3yAMAsxmHhaSPfI\n4aDFmrRcltcYtFzW9faG2SPN2OkmP3HonAzRSfFBEaauXBa/RLq/En+EHEFE\nW2wD\r\n=fK2z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-feature-af4107-kmasuvyi_1615825652519_0.21885366838270048","host":"s3://npm-registry-packages"}},"2.3.0-hotfix-7751f9-kmc89w5d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-hotfix-7751f9-kmc89w5d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-hotfix-7751f9-kmc89w5d","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f9b5ae63622f12753736697e8fdcc9771c61c89c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-hotfix-7751f9-kmc89w5d.tgz","fileCount":309,"integrity":"sha512-VCt449ktNz37H3lQEGxviHX++G7ne8Enp/VWorHmUw5h7RhJjZL8Rv3w4aaubhxaesDwLweIve3OBCu/6SCsXQ==","signatures":[{"sig":"MEUCIAi0MvZt7YzQlQnTMpW8UqfjVqNEhnD01ypsArrYSCoIAiEA0fplZ9AlnWnr2ITZ77FJh1PkC87GgfdwxNJHGIntkYA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUNxQCRA9TVsSAnZWagAAEc4P/RwIpqO2lE6cd3zP83ns\nQ136Yvy5pcMA4FNAV9q/C1C5fkzEpIVe1np2yWX7IjDm/z85zgCXFWRdezj2\nmYKU4XYjqRCvbuxAPMA4f9bMsbHgq0LDOTDKdpspt/scGM3wOTVNTOnPlyrV\nE2zFgtrqxFgu1MWpgkU2eWUJIX1jp9Ux+101dLbP2piulgD7XzEBlkV7dopt\n0AhgVnKXRQhI97sxIBmIkB9esO/ekSANA7TN8Lf9Sht9i4QwWFXPwpvVMt9W\nUFU22XSfUNw0Sqf++u6BwO7rhsobJyf0aXu5XoJHvI4cB5bzoliiAvwquXYq\nGkMuacvtsBknF+B5zRB2tLsBxYn9TVfHTZzDTGPDHi85ib24KF3OTu4RHUB6\nuHGAY0NukIXjQUFnMmGt8Rm6UbqBBF977roQFXIo2zCzfmdJGYT4mWYlfttx\nywMB0JIEiwDLfP7PYgzxDLXllNI6f6GhwJ/+9pEnEkqYyfjG180qUAHUQXjP\n+cLDeTVg7Bp2+WQX8RJq6QMLa9Ts1PpsU5pb8I0VNfhRyto68tUZiR302+yd\nVKTs1VtNs6jGf7HD0R/qO3j5zzM+uI/4FF1pYZkRUeM0biFPWi20U7rWoHGR\n/fgE//IjmI2z0mjBMjdI+brtPzrVVhG4CPFR0dqi8L12/mNoWrrD1r90YVLV\nCCXp\r\n=j35B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0-hotfix-81d04f-kmc17pue","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0-hotfix-9a837a-kmc440zg"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-hotfix-7751f9-kmc89w5d_1615912015678_0.8352991017462834","host":"s3://npm-registry-packages"}},"2.3.0-hotfix-1e2327-kmd6qxgp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-hotfix-1e2327-kmd6qxgp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-hotfix-1e2327-kmd6qxgp","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0c73ec142695238a59403e12a75c24f0ec490693","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-hotfix-1e2327-kmd6qxgp.tgz","fileCount":309,"integrity":"sha512-JFu95ZAnYITITPeFr/dQ4h6w/Q7JKrZrhR1g3eFN5QRJSqNqagDXpZBwCvjH+B65S9a7BTSgjJwzLUspZOJoNg==","signatures":[{"sig":"MEUCIQCRRXEBmwyA8z8oH0VGEoUczdHuaD2WrRUevv3uMDCfpQIgfw1ppOBILowMhnaqBxa3KEXUZ9Fx0P041/esXu4pBdw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1546081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUb54CRA9TVsSAnZWagAAQyYQAJUM7HSEc8WJBTHI4NSL\nA7Ioh0IgvHYeJAcmPUlPV2bWJQudLzqYs85gNdRKij7FnbdQ3s/wK15iVM5l\nCRxjk7a64e7euf2FnPGH3J0ZKvk7lWQzMKOzgutwCXj0x1N0hZsUfedr359H\nU/KTcYOCc7PoWNJJBpFTmdUBU5X+cw18WpAzLNZDkZop5Iyh6HWTGbTDi3bu\nUti/cCeyPnyX8RsqbvHZaKBL8A+SbiDXrOyucRPvtiBgdJ9V7D8ac5mA5kUo\nYUCunoO0ejb22rE2ZOY/SSauiw6fFJLoJGCcO/KoXA7IDRX+JPRZlmiSx9T2\n16ESHG+1DLXm7ZiqDKNfYjyNfA60YxJaf45/mFbnMr8WIB2vDGEYffQWAVC7\nIvkyv4xMj3/t6eX7OJns/CI2nSj6siqs9qgjA1WoF6rACFDHjWtoGnUtA47U\nKp2A0VXsLR4LD1CNKN7X5RA+DkMYJA4YpfB+a2qVXt2MlMjyP0DttcKALRIe\n5vYVs/M+s5L8u0Mseqj4LTK49QvZVPCzwXYcaTGMhrzTquO12VlF20Fr7ho+\nYl5vDxU+0frvZbPnIhnRj6GLybnjRaljnjkZ6s3aA5ENuUgpVMmuL7y3LUAM\nW6SbU0SNK5HciCjDChPxH8+2BHFnpoefdV0SqJek2xer0rcbyS9WSAfT8Yk4\n3LPR\r\n=86we\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0-hotfix-81d04f-kmc17pue","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0-hotfix-9a837a-kmc440zg"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-hotfix-1e2327-kmd6qxgp_1615969912246_0.42020537932522495","host":"s3://npm-registry-packages"}},"2.3.0-hotfix-eaf92f-kmd7zxv7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-hotfix-eaf92f-kmd7zxv7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-hotfix-eaf92f-kmd7zxv7","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6f9a6b582b1a0f4f09043dd5ecebe73ee70ad7fe","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-hotfix-eaf92f-kmd7zxv7.tgz","fileCount":309,"integrity":"sha512-EBtQXkxeUgRI2UskKn1440b0eSje7JHHSXybUNwCOkCoJHEaA70Ycs2tHbT+ZaWYIrhY58M2trOmoxibRfaJHA==","signatures":[{"sig":"MEQCIFq8LYjnqHlbRvEHLt8vvLHlcOLMCaRuUF6xASwY323UAiBwfiMTuHv2iX/HZ+QJ2JAWGfcMyGvcMz6H+eFN1U8SzQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUcapCRA9TVsSAnZWagAAS7YP+wVbojxBQ1SpJDyJg7/P\nyrtn6INcrYtotAg2O+GNjil0ozK51b+Gd0uXRVqVydXhViMR7FCrD5sMFsPL\n9IcYpApUpupSQqrmF4XFwtOyPP9srVuNYnNyAvbCQmXO+HxeGr1v9jxRWPzN\nIk2BvayawfWSC89q59gC0p2vvG61LYCRRe5YcMRHP2DoJd2jqP2dKZbMxsy8\nccbfmiZvTZnkzlK7kCRkELUCFwLmcJk4kisjJY8+yo0U6IJJhD8niJwBU09U\ns4NQlalR5lfGj2kH9T2eN+8CWVizjhrCJN5QBc4XkfF9hf32MQpwsJJyXAjr\nvSjZAdqlyHDV38viRWHfszCn/zz8q7zZsowEKFxEgtqkLDXUvXGp+wyYJscU\nGwzsqGWonxM4si6RXhao0g051g9WgYUiWfixnm2B7RQxnGRvInh3SLc3u/Qu\nFb2DGLvJ9b30uWwJCCy3a2y5Ea/XrTukV/SFSnQzELRnOrNvDi3Xnulz20iV\naBLp5lzkJ/5KWG3P+pfdPFErf/JvogEWWC7UkdjLAf00ZnvWaB/XoyHabfGS\nDx4ctSc+YC3j739Zf/evMa0jdTFB8BNBb5+0BfqdPidPcntckokoUwU4Q0BQ\nYv/PkQapNfTg5PHCAmxmH1gyvVTJywdf7M8muLl5hswCKjxQK+MwETMxYJ16\nyFym\r\n=qYh3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0-hotfix-81d04f-kmc17pue","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0-hotfix-9a837a-kmc440zg"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-hotfix-eaf92f-kmd7zxv7_1615972009344_0.994976175507865","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-4d058e-kmeoulvy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-4d058e-kmeoulvy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-4d058e-kmeoulvy","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dbee67b6ee8563e82d11aabd7fd4b0cbbc808195","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-4d058e-kmeoulvy.tgz","fileCount":309,"integrity":"sha512-Ct0SQDYRmxosmmNsEVlfNq+JzQeKmeFebwV8C4hPfEQ9hM+haVK6odEO6dF3FbHazsCZX68QGP0Z0Y1IhHA2gg==","signatures":[{"sig":"MEQCIEo+gnlIANKeYK5BRert6HF4y5MLsD5gIIsfwSU4WGwlAiAO+IJK6by9qa81D+N3hLxOq+1Hoq/EDfuA4SISh1bSYw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUyFzCRA9TVsSAnZWagAA4w4P/iXzz9fxLUCw2N2htpYU\n3/+d9aW5eRNeAqnJ/fNsWCaDcG4w09aWM+0S4ZajS4EAMsY9vr/KLsSW6dsS\n45Ak52hA7j2jVJCB+s3N/RAy2ClCIg9ZE6unZjk2qFeRAwiX3vGAUI/omNLW\njqCAYHc7ZCrS1TP/DoqO62tmbm45FtYEpT97/+9eW7jolmgyq2p8M5YmljEV\neoLr7SmOqMeV1M37sUmJmNmwob0Pa5Vk9/81gs5Ac8mXjXN0M7T4QQwhEUJz\nj/E0saLKu8OTF3BzHATMcgtZdLWDur+XpDvPfOOPS3wEBYA6Ixivtn9yoh2P\nUcth7MttKCq7Osr3h8omzoYqqYgSaO61pTLsm1FOsH7z/YUYaQ2pduwnarQe\nRqUo+CMrzLznEmSX9oYZbHAQWc8YBiZQvlikUpModOcVzPXLhnMG9KEQ7Kzj\n/tk/n49UQVCnwTz+HJ8IORRHeeWvNlluNbglItF3e662v4lhe0PDTIu8fdvw\n8Q6nRkKJdTTK90YrLo2CqZlHBoDlRtEp1i6EeEXsoE1d/uQhmYQrj9EbNz2F\n5nY/n7gusyGQ30tg7afJXmoU/0b19G3uLDEBz9jqhFDMxeFhQaG89URZ4gfL\nOZUP3/ZUJJkFI+EpsKI1QYIdPYuq0NT0YBS8fkermA/O6LROnV70r4RBvhM6\nbo6n\r\n=/JG8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.0-hotfix-81d04f-kmc17pue","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0-hotfix-9a837a-kmc440zg"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-4d058e-kmeoulvy_1616060786407_0.7636406808633163","host":"s3://npm-registry-packages"}},"2.3.0-feature-2a9892-kmewbav0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-2a9892-kmewbav0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-2a9892-kmewbav0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0f8751591db3c6e64ac13186abfe9c165cdec23c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-2a9892-kmewbav0.tgz","fileCount":309,"integrity":"sha512-34j0w91Du3Lp+dxd8ZdBeSLkNTHDe1bHzOKQdgjlorQBxFXSOaXeq0qR/V6XjRqrk5Jkrn+fbca7TEPR4+98PQ==","signatures":[{"sig":"MEUCIHMJpu+P7NyNadclB3pkTCN+tOshwYUabJeYjsGdZs86AiEA2H5nDINQNkkklEUAFoFIaVDqOQqG+hQQG/s/ec4zAMY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1542651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU1JpCRA9TVsSAnZWagAAtesP/2S5gMeFOJ8GtE/uvPpt\ng9P8hkK+Q6MWd1zbCL3IdqJzoQKYuGDswmIeEuoOnNrUoEcoKU0J34LYmxPw\ntT0uNAVTNSB9Bol+lIzuswEo/ugYT0MyR4ymiXtrpR77/etTkWOLHacLeZks\nRn5ogZ45ptD841/i6QM1oEHGQS0HwYh5AnhEiEwXKNTeL/jokWT2U8v4xQYR\nVQgsrGDr0ru6DTwqM88J99xqaCWS9o1LkJfUL0ilXuf0O8084p+OokA1Jggv\nXd2RVA9V3rt0tbbdugQCC3l6o6xQt+YOr0T0vKNVI02LQd5gKAd1NBuTtR/f\nH/LQC/9Z+iT8AtfO6ojShHGAmIQ6qU7agIiAoWFVCSJRkkpBynK2wCO6RK/U\nOmWBHxydyXdVp+2zgyBsNlbR/czZjf1OlvZ9vUqnynLTS3a3KtBVtTxgjide\nl/IGWmgywO3LXOK3ne0yaiY1unGKteBNFU0PePYaketoqKWNQsF9RSqNYbl3\n3exAaFQ1MpbFpQAcgpDy7bHu2pRkYox8g02fQcFhyGBeSkic5UsXAJ9x46Z/\n9902UFeodx8zg6/E9yIY5uG6W+xjEx10NqUFKmAyB8gDzWUVKmSFnhScDzNl\numS0wwqq0EMzUdvgPZr2qlRq72xqhsdss+Bv/1Fc85XM5qlnTfdeEDZ1TgxW\nvGIp\r\n=UY5g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0-beta.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0-beta.2","@atlas-engine/core_domain.contracts":"3.0.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-2a9892-kmewbav0_1616073320784_0.029615471989157927","host":"s3://npm-registry-packages"}},"2.3.0-feature-82bc0e-kmgbv7wg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-82bc0e-kmgbv7wg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-82bc0e-kmgbv7wg","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f23f9ed908c563996625a6dc060315c2945b779b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-82bc0e-kmgbv7wg.tgz","fileCount":309,"integrity":"sha512-h2tdBafJyBXzo8P3TWKo8mNze07H+f7sIcgDf4FOOMFCotVEjv737lM8JuEG1pltJIdCrbeeH4f2Pri0/kOMiw==","signatures":[{"sig":"MEQCIAq9w9UYUqS1qf1TRRhYtdSd6PAmdV1C7WBKbeGmtoDrAiBznIXCd4UHQRkZqhwsre88clmJe6Vk8DFIEjefjckeCg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVKSlCRA9TVsSAnZWagAAjb0P+gLarxXEfdZqS2hu+2d+\nP5qjfIHNUaKq6WirPMpNCJJ2U8/Jcb8SXl9RW22UoOFzSDggksHJpgnfwd0r\nmsluW1YvxEkLzpcdmzwa4OPDsCkT/GfRfyQOqpyBWmqEJf6C6dsLQpfUdsrZ\nNPEKTLJH0pyzR/sS+B6tnV5HEIL5zgCyYa8TGpHIOkyAMRAZuhHvpXi52bc0\nOJ5ruFJqoeeCFEwAglSGMWYheHJhlQOJoZUvFAHDAQ29F5moNhY/igsiu1dM\nMhM5jb5tUbHD+TjGnV03MQWME9ZbNUaCkHTeZZfwN1wc2/rfThm0UCm6ptjf\nA1Bsp1WhR/dXOmIudumzZKhqtt/yxUgTACZViNHE072LM20BuSBp81Z/qRou\n+jTXCPs7J1drx73dEOljeUdsRSoCbBLmS2plz14czGebfgmmNqZloOu586cg\nssEfUf0hXF5VCHcZCgGWTSHvznx8pdFrrSuX3fFROHQ4cIXEJNrM9ytlrY5D\nOP8ZMsNmt+rUHHvLX/WNTs5P/2jiblpkmSrmlfHZWW1n0jUlQylLyIEJYPC8\nWkNKHT9Cqq1iG45rAJUFFq+/p+kj0bKbwrQDB6rps4ijBjDW7fCJsKNLRpih\nwjLI+oLGZrQU1cTudNWV8UVGqDkTJwstXtVSLCeBDKmMDcvTR2eGqUrDDtiN\nJ3y5\r\n=yKBE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-82bc0e-kmgbv7wg_1616159909278_0.6556784793799826","host":"s3://npm-registry-packages"}},"2.3.0-feature-f07ccc-kmgcdqqa":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.0-feature-f07ccc-kmgcdqqa","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.0-feature-f07ccc-kmgcdqqa","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ce80de4525e92f59f97c5d8d0cff085bb5be3c12","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.0-feature-f07ccc-kmgcdqqa.tgz","fileCount":309,"integrity":"sha512-4qca9m64/byzJwvNeD4yxGq4YcJ+6+VTKi7eUDwv27X0BFkjsAehdSd5C0fG0HUyXMCLbhdbtZb3zZa7tZzIAg==","signatures":[{"sig":"MEUCIB9LenWrwBjiGYtnYQ8io242R0Y9VdLDK2U/VaXOQ/+sAiEAi3a4lUdgRfFCVIbjXy6OgSl6TSPVA8FcO9My/jQ4Le4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVKgGCRA9TVsSAnZWagAA6DQP/RI4o6UQF/xG1Lo5TgkV\nPAyUdaXYXQDkjkS2rBBp1Zj2tUO9Qu2ImNv9cChtBVqXhjKTlpiKW71dfTXR\nkadI3m0D6DSzp5o217BScJaQuegLrWjNy4n1EOOTqr9APhHPLBgSAgcfJuS6\nCyweRmKOgmg2ffB3fO3CpZVNrYBxKhkAlZW2fqeNrbQoDWEhOf+ZhsJiOSi4\n6cN/kNrGy6ATN/fbDjACG0z+EoBgiQDgyf9lvERkro0aWc8Yeh80VUEgHxGm\nlJ9hKoZAbfXg8LxLf9Uq4XA0CxC4nbtHHUEXMik2OnYCRUVXC4QvWiLjuh4m\nHSDqstNY2TpCtyBDq7p1lmPQtq+0Azhq93A4ek2nMZRSepUmBJoZPLQ7m4c6\n7a4uKjz3zO01vfQdYxZHNnjLScbTaOtenQfG/7EWlt2J1leDuWNoEGynI3Du\nvsIp+XhwFqh9+QP/zQgO5WzaaIWMXxYQUaJ3j1WJ5ACm+g04/mMfwYm6niLt\nbnW2HTMyFS9poyIhgSKYJqGVERivbrwvwZFujCpWJdSwBGTzUtGRt6DMKFPq\ne8pZJdsolpq5vD/aln9wehpFh4D0lZtI5eUr2POuZaCYRcRo+IADHCUvEyC2\nt8eH6xu+t0GMgPkshXDsBAoNbOcH+GFXKG77aA7RuEqaHnqUo951ezXxCaOF\nbs+I\r\n=TyaS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.0-feature-f07ccc-kmgcdqqa_1616160774471_0.5677908097448787","host":"s3://npm-registry-packages"}},"2.3.1-hotfixes-a3ef68-kmgg0y5x":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfixes-a3ef68-kmgg0y5x","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfixes-a3ef68-kmgg0y5x","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"672feac833f0185909e03d4eb06966ec1ac51777","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfixes-a3ef68-kmgg0y5x.tgz","fileCount":309,"integrity":"sha512-QHwul2SRrx/hPUXbb+OL95uam+YqnBS4ykv0Sc+/Cty+PSipnq4KkhAAQZO3lcSfaHrw1V4tqNqHlSh95rBRyg==","signatures":[{"sig":"MEYCIQDYrlwhQAEYES8nE63tBMsQOJLZ28FhKNhTASwiNX8GFAIhAP1Non/i8phl4psAL98u1wMerbcDwlGV8+acsRNCZMkO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVL/2CRA9TVsSAnZWagAAMyIP/j8F5wwfq3HeyYLiFuZI\nD1m4Ct01H6DsQKb7ZWX/Rn/2lx9F1CM64XeutWrvHWs6/6IbABAqIR/0gB99\nhU2RLHKMmoVXLq4u8DDSy7rCit0fxH0YdHcclSJERJi4bDUW2yY4YkTk9N8W\n6qlun+I4II5kXqsSiTGOMGyEbd37Idih4Jx9v5/dDr5iqRiCKsRy01a4nwNZ\nrRvg6ITCWxBzv4jZxsy8XZun6DmwawvGTMFFuHLbNhAOtWwxJpajNekV3c9I\nYzdTbcmm63NXC2Onhbj26CmdDcfuIrulMgSIKK2eg2OFLVWAE4omIiYaGbbQ\nFlZycD3POuakmC+QB3tqsJplR3eRxfdMbcJKeIM9s9qY6uj9D64xpd+FmCUE\nsDaiCuMpOELUypZ78WfhmvKycj5IDj+S2t8wHg3dHNQ92ydWkf8d3bxNLpMN\nwo5tjY+2oaajImd8rWEKnkEtHtLQvrlSXMFr/iSmqHOuDk+VBtWSTMLufpdC\naR07HPX3jw/X3gmJkO2V3bYikqK1J3amkzgzkxhc9ZoVp/Hz3idDgn1JE6Vi\n4Z91YwV/iI1idoxxB3vfvdlQ2mxrtKClTeVhLjbx9o1Xb8JUKgA++cQwVWOI\nMn1JE4rbTT9U2Fy5jcBvy6D5UHHG2d1W3akV7JDKlhJGA1VxNtKOFMsywRY+\naXrU\r\n=va/0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfixes-a3ef68-kmgg0y5x_1616166901540_0.33349738825368536","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-cfe51b-kmgg1h79":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-cfe51b-kmgg1h79","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-cfe51b-kmgg1h79","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9f5ace4a69473f06b8ee3f471003a7072ae39133","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-cfe51b-kmgg1h79.tgz","fileCount":309,"integrity":"sha512-WADz9Z0VmyyqmncUD6Yk61rySsQ+VMQ5iFwr6pzILHASYKiN6R56chxPC8FI+eROFBXlX5kxZ4n1jruEvPZ9uA==","signatures":[{"sig":"MEYCIQD226UzwPAqRSzHHWCDbQM9YzkZfg452fwREG3I0nPsXgIhAN4A4CHpnjL7NRgV7gXo/fgXDMW9Olul+OMtuRv8ta7o","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547281,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVMAKCRA9TVsSAnZWagAAsBYP/0dNKW0k62sWachh6TXC\n1clCTKSXYDrcTqABEi+cSDHgMi/hEl+ikvbI2jCuOWQcr/LdqJAPuL4Ym8cy\ni9/d8Y/5KC0uLPpRTtGv2PrugQOJE8wJnq/WW4rH6IyOMTNqhrdkFj7+nRLp\nU/+rWLiF3BEyvmTswHQslQ4SKqF3+O2fc1bsFpowuUc+GBYT9rsLVo60pRHP\nDegeFUW4pDEG8VqIOUGO0WQmsnWCpgcZ+eVoek+lCufLIDgzNOQ3aZHF9QuJ\nxtjKMqxTpcPk0iRYPZaBR+weZzxuzcgtXMEpfJKBwFHDAK/qvbFYaMgrJAck\nvgbj/B/sIx+5kSrCUV4WYjxpglHcThJjRKBBL67/uJsVgOXEKk7CgL6yeFiU\nps0jwf4JkRHKGjv78Jc+GstICmnMbBc0POmvWBkz6rOnEDUaA/jMhSMV6QtH\nAzJWODWt33z7G7Z6coPVr8gzMehvU8VAKSV7VWW1spJz2eVrDs7Z4p7zYGbb\ngIcmyv3v7FEjewLPv1VvYOami4DQMbFcUuQk2VGeJwxLLrhxq6p5HnJdX2vF\n7AvjmOw29ZlWeGLV9ArWZ13LE+1OcNV/2Kz72ba0Y9PjV4m+WBsCVPEH9Jer\nTXvwzPjd6S8VfMyiwPtLpSuG3sti8Cq7vl7vqvhBtxpUNIBp+663nvPY9WWP\n+q33\r\n=Tq25\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-cfe51b-kmgg1h79_1616166921840_0.2800311827166877","host":"s3://npm-registry-packages"}},"2.3.1-hotfixes-31dbda-kmgida93":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfixes-31dbda-kmgida93","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfixes-31dbda-kmgida93","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0e5d9cc30037ec1a066c22f83d31869facb463f9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfixes-31dbda-kmgida93.tgz","fileCount":309,"integrity":"sha512-UdCkHmW3HD3PWJCY3j29HMunDMpXLURXRctUqSh5uhtleQHpsmUhEsD6JdMkgznww/fAjD+luKc39KcrubN6Zg==","signatures":[{"sig":"MEUCIAyUw9+0Q/2Ri6L/tSV56qMvCrvgX8PH9//hrHsv+IHxAiEA7Ao5e2JPfQZcq8Lgt+8U3NjtDt+veIF/yV24QgbKIck=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVM9PCRA9TVsSAnZWagAAOnUP/3ASfzMOgotBhjR9KCkH\ne+ZROKESgjZzrUIUg+72Kv2r276CprAHSRmVL4VFPD3oKagVOiGau06J3b/G\nNHe6U4jCSzwtPcuoWNYpKqrF0SrkfFQ8i5S/A1PECgO0dVsnu+hhICQ7EqhV\napYKA6Cv2xObDIODQnJBIYnFNoHSfjOPR0Cr9v5LVK801Qo0bFgdvgnPqPMv\nNWXsZ1AVI8nfChAOiqd14j3AKFIWo74mucYgKKNWphG0TZnrYoVBWi8LB26C\ntqsNEs87bpAjQnIuPT/0B60oMgdIaw6FIrqBsricJXcDBezJHqjyX5rcXYNJ\nvUI/+hD2qqjMSEf0jj265g7rJ5bijbS7n+ha1nwgK9A70uFjJj8hQwxcnioq\n8OAo5mUpzXtE2MHks6MWZTo/2CSBz1GMkylanEGdPArcPf2q6BQl2ZH/0dOp\nSRMctZew6/TdwSeDm32wS4TI4oenBwUaNaQ7Ap9uZM/Rk6akeEE0wOSXsKZd\n6PjkJ99Cuuok+WIzGxmtC1Ef5kDEwdq8TaOXlvLxvceO2+cWynhQTyKkYjrw\n71oyvFfKnseyL3Z+FwDV0w+Ex+aJI/SRbBAGFNbdismyy2sj+B9k+hqsmFGX\n8bRyd7dgIbtLEWoBeugxtTzBbnvCVCXOHoo7cc0VoFYN/C+fgHVfAoteD8Oe\n+rAD\r\n=msW4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfixes-31dbda-kmgida93_1616170831268_0.7597101310006151","host":"s3://npm-registry-packages"}},"2.3.1-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f3373660f5559a37be9d6d155c583361826609b3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-beta.1.tgz","fileCount":309,"integrity":"sha512-x+ix70FIurSpsoUkThydBwMoH23QAmhFSXXvSTwnTV9I04yRweSpdLC2u555MHHOLwhnu+9a/B4wIAXkkjpOKw==","signatures":[{"sig":"MEUCICZxxLNrcRj28S3kshti2esZ0XNHN7u6S7+ft/7kJmP/AiEAghaIbd2Ff7c2Iwzlq/GYTy/C0jc55AtGtIRonO6ogjE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVM9rCRA9TVsSAnZWagAAir8P/iVhW6bjYKXNmrpreP+u\nZULjXYYx+pxEoFr8fqT+Ndm5DhQ6VH7JcnKjgg0VSjh+aqB+sDydROYsfNdN\nnAYxP7LWDn3EOqkz2U111e6uvz03XiLBBbaL2vuEYzDE2XB61ACcCTu2LJ3q\ndE1aOp656+/U7xxViXdrUsZCxz4z/tHS/yXem5sl6IrdaaUkiqcfka3lrs1m\neR2LkiQW+gOTfnOMdmn6Rnm26hriDJ2Hr+70TsoP1WFA/T2oJcScEas6faKa\nSkQcMD5AFaAFmk+qk2t03XLGLCYWMUHvAREbSZRVzt586enw5n7sXapcRHna\nzn6ad9W2ERatBsSZ4ZelU63WJ+h6Hm5J76kBn2G7TeQWkJCcVpy7vFnPb36p\n0E+F6OU/HzSBGbUzOkf1iPdoaG7TdVSKioq+4ddYtTMkwi5uvJgi8KrjpV8+\ncK3RsT5G14Zmqexe51APJZOoq+iMWjFivjBSnskoCxoTk8mZcq1+QwGQ/SmE\nfrdFNPJtcLnZHTMon0UliCtiQibipmqmUWaNAQSyCFipTI25NWHvln8vFCOG\n/qusEXsd3Xji1TS/N756mUcEwipBkmxXHIayLwJD2X5nR5DTRbSveZXNAW3O\npH/tcxGZ+IJtdq940CbeQ2tyPHpcubvcXsWqGY98or4P2ReL1T2IwWaG3Oc1\nugnv\r\n=3NuH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-beta.1_1616170858814_0.8761103058128439","host":"s3://npm-registry-packages"}},"2.3.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"478915bed0d76f506623676b8e23b620f4408160","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1.tgz","fileCount":309,"integrity":"sha512-gCwx3Ovg7YacBxEar6ycNLfokxO4VVKooaAkDtIUtKEfI92ItVtY+p9d6u+hZb4yG1YhiVlFkBIgakoJRn2Ziw==","signatures":[{"sig":"MEUCIQD0AdsnPKoIRLXaRlwSF6Pc/8lEvWqcIPRUEvfCCQEcJAIgBGDr+cWlFLSgrMOQLoSJfacUC0duxd5yi5XZ4ZDpLXA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVNHCCRA9TVsSAnZWagAAqDgP/AwMXRzO86teVcqaY0Tt\nDMcdZ58gnU4BMBuQH88/vcE8l5JEgpyHOXdBhAvdbo4oJjMko8vOz42rw00i\nd3JPSdnCTW0WloP7UXcwE+Ub8vcha/cG5QwxceXzNBsOdr5s37o4BEx7gCsO\nqlrjTPhsFk1hHF40y0/vOvF4gDHJ7s6BcGw6tsVS4PshNmcIaXy97tfJCF3P\nHhaBonMfwXpBZj784LCy/RMzpRxpdFzZAnVGX8Gekm5Tw60k6ni1ZZoz/UA7\nEZhFxm87u+Wtt6iDhzCNSTgjnnZ4NJkWVOvEfCjzTElIvn2VjVt+T+k9gQ9k\n5PGfYOU298Rot0a0Xz3ERl9xiaQOz1+vclVVdDeOFEjbG2js52x4nelhNzd+\nCw281G29MBxb8lgGNPxG92QH4hh+6zpMVLIzpnB9PYWhkPXOTHxO49GvuMqu\njASuWcgBHF3EK2R/TGq+T4l1IBNaV5AGJiWl2xtvY6SD5UCVP8E64pn6KEc1\n5ud5C4Q3pjx/dNXavFkq7sU0ewSGFcgof66XzP4lEX8fkXzKR6tT88fBoE0l\nNWnVnjq4oMD4MnrcZJtdsSduLT93Z3Fgbfqnu7qFXwLsB/as9ZekBvOuzAds\nJwvX2PH7chj07DtSOn7kJRXr0ZL3Tq3ocqAPl9JIuMuYzP5K8DaiaTdKEvhM\nlkY0\r\n=xwYd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1_1616171457344_0.3799965658252462","host":"s3://npm-registry-packages"}},"2.4.0-feature-770417-kmkd9xph":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-feature-770417-kmkd9xph","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-feature-770417-kmkd9xph","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4a6112184a4bb06a2fb03104913355b060bb7b54","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-feature-770417-kmkd9xph.tgz","fileCount":309,"integrity":"sha512-qXaUiAX4uYmPrnF9Zfpa+A6gzRt82omIXT1ok+7br96Lo1ZiRjJi7i/wPvVGT4vXzzwseGJz8uDBYxMZ1uFc0g==","signatures":[{"sig":"MEQCIHKWSEdL0XO8SO+QSe67hCHeyI5D3cn1XudlSPWjJfGRAiBgVk3b6fjG4xlVMIlaS0G2fdIPjeZEsvsTgeHIU4Sijw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWF60CRA9TVsSAnZWagAA4F4QAJ4fa6oYVayQIqF0gwFp\nZbT2E1XcqzbHd1uZTPa+dPSLVV1i6TUz3slmNeBlMQmgY2O4LQsMoSGVZd1Q\n2dpIsTia8N2wGQlC1hUBH4Kksps4TtojEO8dLbPV3bk1E6SkCSZ/HUhHOCeV\n/MX57yPnVAmCbbX7DHPfUfQNTk4gtYMOGShMBq3+dcL5pvCRk0/M3Hkrf+El\nGFgL4ruNDfWLoh+MKv4kZ/YI0XFwMvCft/K+k4JjGNtmcYM12LFvWvula/4k\n7deohGkG5pQCDCurPb/qxNlLjsPoaZzJxuTPRO325RBdMM1TWswZt4lAp921\n9CDHpmzIAWzxIvlUrbGNuafHar0563n3caO90PBzOYc80GIxxZS1Or/V0C5f\nYW/+iAramkvLCDNnXnY9H5n/l7xZk4lfzFT42rMdUoM6i/gTDs8TIhtLEGxh\nOUHQzRcP7bIUgY6Sqd4YV0buXNx67I13h2nCswS9RnBpKCKXy+X8Issb5k4D\nNr3l8+00m1O6WV8YdiCFMDt0iN0lbSQ9naPGPEPlKFufDKXZ2zuK+fGdrjzo\nddIJllc+5Q1WBgtkI3P9TX004TPHSdmef4qRpHKZqxZWnUfzGaQ6GKKP2hcL\nMwyXrivMfqWW3HQQIYhYnLKHcNDAgYNFry0bp45DkqMAP7NFg64XI0dnqyKn\ngQbz\r\n=Zvaw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"feature~terminate_process-instance_before_removing","@atlas-engine/process_model":"feature~terminate_process-instance_before_removing","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"feature~terminate_process-instance_before_removing"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-feature-770417-kmkd9xph_1616404148094_0.5199024016057765","host":"s3://npm-registry-packages"}},"2.4.0-feature-c631e4-kmkdo1gl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-feature-c631e4-kmkdo1gl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-feature-c631e4-kmkdo1gl","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5c1785703d0887117c2d9ad8f24eca8613ec7c21","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-feature-c631e4-kmkdo1gl.tgz","fileCount":309,"integrity":"sha512-8NxTIS7LaQthFO9RvNIOy4YBXJWp4VgYFQkKbykLck5t5S3uyuBDMIllZYNdIhzWWBNZkI1Ue2NT+eo9nAWEtw==","signatures":[{"sig":"MEUCIQDtwAoeCPlL4C3yoqTF6q54E1qOQsauD0A8Nlz1IgClgwIgKbZq7afiwJYo/m6h/MWId7ERLuoq0NivOi1pBR3XS/g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWGFECRA9TVsSAnZWagAAiqgP/jJI4CT86UupBEnuF/Rb\nipm7VLsM/Pk0SoVx0RI7SHCe9Zxx99edYpQ92/5D2AxifOXx4taS/FKb/Th/\niVW2+d6Y2/9FMZzAEXv8bIlEWIRPdnKx/vH9gci8b/+e+h8A+gDzJByOwahO\nqqPpxwAJ7RA1DqxsfRWzQxzjqnoZIOSDAmKhurF58Ims592p+/Rzlsl/uD/c\nRyeLT2+HrDO1M7gtAawKyGGb4nb1W5JPsKl3NIQFddG5FXx0C3kjtBQa8ap6\nKa1Hmt+7GgkNQHFIRUaskih58vyXiOcg+INJv+UbF7H6EXVwkm/gW9RfoPKx\nfOLqa2FmJXLV7yBgZ44PgH7kmK991754ZqIsAR5kqSnudT4IXDnv9geeXeTf\nFKBUQyfTlmcvMRsyLThEKLw8OCbfMJUUNzo+i0IOlHX3y0TH1J3r++MsFx2v\n8TxYEII5rGRI/YxFUNtocEmbGnq9oS23Emt7CteDJUEhag1gBf+rLdyGY0qG\nXQQi6S/FykgTT3gMiOliu6YW5eRSyoSygbSt012V1MLZIz2yhy+eFj7y7IkT\nHn0LSvM4F7DsmB4qrYwaTplml3EevqqHzjl2SPxarSm2kBTn5mrSkgLTNqCn\nbi46mVq7haYRTLGMOqXxEfEc7Gaerf2gY3yfkiojfMIw7HsuAqQ+h4jGXANG\nnPBO\r\n=f8xe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"feature~add_send-task_specific_meta-info"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-feature-c631e4-kmkdo1gl_1616404803646_0.8641045925169617","host":"s3://npm-registry-packages"}},"2.4.0-feature-ae0fb8-kmkkdafl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-feature-ae0fb8-kmkkdafl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-feature-ae0fb8-kmkkdafl","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9c2e82e415863f1b109bc5f592c6a188efc7147e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-feature-ae0fb8-kmkkdafl.tgz","fileCount":309,"integrity":"sha512-JasNdqJKD4V14DMfnPB09HfBPppaEur5M5VjXloiikxyS6u+W/T5ga2UfNv6RzKYu8I/UT7kamDeHflS7J8ZEg==","signatures":[{"sig":"MEUCIQDk7tFkptRS+lvPTMyYY61iA0Oc+ihl0tquaR5zcjD9MgIgdSAf3QgYuCjpTTOjKHczkd6wa5XVTMdewY1qAnbpsTw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWI05CRA9TVsSAnZWagAAdhEP/15kUo6parKFke4XDG4K\n7gf13Gk9ZIzvDccS9ByxjNNtTiS6CGty94c5QYYos25RiqtT9TDSmyKKW8i3\nUgB+MJg4uZfd58C1YfHQqeBknV52qqDLM1LMWTQtPSIPDLGoeuvuFPvQGmp8\nIGBPzy2irWJRmGafkdLpD6RQ4CEYtak6OtPAl3YphsjPK2iFal31TMyTiVBn\n2f1DJvfu2y2vOr66aDorqYT8Lgi5T1VgbjN22cceVrUlahwxEl7HeLqFRqoD\n+395v/lJUl6nhMknkf20Czpynqg/eFNV26PQaTILS7+7UjOHrXAfl1Poq9Jg\nb+y/nJrXufsD57mNq9D0SkGtYhtGO/DrzxATLaO2BM09pgkNn8kYymDmI6uh\nb1SJlSah83TGXfT7tM+K8M67vyoxhvXrQ+EpTtG6uYYmWceJUwxX5dwenlhQ\nQOxyPJHWZLQwqBCExlGir+g32otvFEbS87wasIjdlpCC2IzW+NQBQVG1mKYS\nxSrWpAkxAbjWuA/YgIcmXaVlrlz6r7Zyo5lsY7Ux9YC/oy3Ch0g9I4ptVdgv\nZqfqsL8HTNmpiWsv8w8S7J3AlWNJfqUFv0Gv4fQ7p8pVa5dApe19bGvYzbR/\n5sjj9+KkG1cgVX+FdntOZA1VPdegCvEBEbTDg6RUcQ6UR+KQUMeZB0M1YrHZ\nl9Wb\r\n=yp8X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"feature~improve_deployment_error-message","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"feature~improve_deployment_error-message"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-feature-ae0fb8-kmkkdafl_1616416056821_0.6657423846992443","host":"s3://npm-registry-packages"}},"2.4.0-feature-e319e1-kmkmrqyz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-feature-e319e1-kmkmrqyz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-feature-e319e1-kmkmrqyz","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5cb5f0081032cbc297c8f4db54627b239717f495","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-feature-e319e1-kmkmrqyz.tgz","fileCount":309,"integrity":"sha512-flKOmGGdimf2G9Inv4sLSKDSSHyK3j+32ioQPIAyvR7zog/aQb7eqJtr+TXk+FIAb19oKnEEb6oY+IKytUW+FQ==","signatures":[{"sig":"MEYCIQDkfllbmARiHy/bA09qyscNTj0zcNTKQr7pPsKdj2JSAgIhAPOUMqFsC6/RSZtMUDdnld1RP6BgJrUJyouzmcbL5Tvr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWJz6CRA9TVsSAnZWagAA66MQAIkgblLPEsHzRGi1v7j6\nFd+Z/KzVo7k/e/afRopI2hJhQ4/3DphMX+E4yrbzEFi9D4x6klnw5OL3OckC\nOkL7bE+GmbFYrhyXgKQr1shgrBxM9i1w+j/u0rizDtnHewX5wIEWpOU4jatH\nOvtVc2K9DFdhETc9dAtrPSNQQuvOtkl3h+LzKLmbu9wKCeiFJOtPsfHOjkSj\nDCZh9YrR7MIQU8J1WnYfVFLHv4s3mw8d1jdO1UiBFxOS32i9mCVHYiUG8DrK\nEigU1pzd9H5a8i+COsEUJ0v63PrhbWPrfMsl/ZJcUz3TkLqY9U+djv2JdkVQ\njFGNi56Tx3Cy6oj1iMslgS/tKZksdHFRK8WGUhZLXM9SU8crg63IhMQQWtmO\nTBBcRHN6EW3SWNxsmNlTeaXnBETk86DnBzLNKyU7DhmIT4UUagBJWJFq+inD\nY7R+s2kTflKi2WioQ1KSr9S1IYK2iMPmbcK+t7nX2JJpS3z/aTZ02Yp97yMr\nUo5+KqXWZ+CJdqGFvthcc6DL/QtupsfVWTT60idOQhoV2DlftBJEBbYvfLKU\nb7IPFF4bgUsyLkFYAYVcNQuzrsADTadktsPcLj9K2b37jcCVVqhsP6hZ+HmR\nct1h4yXNvrSh6rkPbBm9p1ckz7AK/UcRK72aWRcc+UliPJk2wYOyuslbP6Ey\nWa2G\r\n=3trv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"feature~improve_deployment_error-message","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"feature~improve_deployment_error-message"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-feature-e319e1-kmkmrqyz_1616420089617_0.8656609400203863","host":"s3://npm-registry-packages"}},"2.3.1-feature-c2eb5d-kmkr96y5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-feature-c2eb5d-kmkr96y5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-feature-c2eb5d-kmkr96y5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f7704ae4021f588b4b753eaa864a1b96d1885282","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-feature-c2eb5d-kmkr96y5.tgz","fileCount":309,"integrity":"sha512-gSJG4rqsFhyyqCUP5QZkBAd9esmURNyJfer5kH58UPaYF3fQt1OsQ7k8DTCwryLlmlBlXwnbDd18e0eJqjFy7g==","signatures":[{"sig":"MEUCIHmr539O1koKe5jW5afX5NgwB1wxAimSJTkiJTANyICxAiEAo1XjpKEgPRscs3fUb5pJwpFKIhjRWcIw2qGQpRLoRCc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWLplCRA9TVsSAnZWagAAJLAP/2agtgp2pt5aDxr+5RkA\nA6ZQNaCUYtSz1A2egxbpJE6Wb/h98xvL2fgvL/3pF8smlmwyhua/qqE51eED\nK0leBeatIvcL3zCh3N2AgzS761kP/Swc0o1uFSfdmJ2p2okxezTMhM11lafA\ng/wzOEgDJudpTPjyFJBfzI+IFDfDa/7EJI/eJV3jKi1hpet1SBZplkeVMPNB\ndEtHDdgG02JT4j/GfPjM7JN3Tdj2zaBHsr8/F7l1twJ9j0aRatSeGIQOPF0d\nlCIrsagyp+Kfa6z4qmmBJTTeGQ0eUrSojtmQDzcqcI7FVawuDkzXhGjlFqrV\n7HUJ+dfXe+hCH+gJgrp4qciCsR5ZL3AP3lpjZiT/y2mLCJPs9m/pF4uDIIe1\nGuRMS26v8+hGMz6JR++PMyMCLXJiSM2SVSJCq8uo/8M6mGEp1mH5XiSBddkV\nRM/ZUTnNT9DT9PPwTyzfVGCnSINRqdUW/CEQpQw+vTQP0sRM0UdFo+Bi/Qyk\nZKWAf2OmM5jELeMo4UboV2cxtAD/Hi0yYShy8x8/VNJIELkik7oFrBStSfFy\n25fBwu4HytwfRU9s9ZisQ4Ny/DGKUAnZO2lIsHvjejN0FcHcJ9WRqVhHgw7/\n2GU2mPsZ7wWOKAqwV4QKIgU5FIXADZrHP/D06VHAgL9IZMTlAO5vNlhHS4ZU\n/js/\r\n=wg8J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-feature-c2eb5d-kmkr96y5_1616427620830_0.3641326457072367","host":"s3://npm-registry-packages"}},"2.3.1-hotfixes-759788-kmkrpht6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfixes-759788-kmkrpht6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfixes-759788-kmkrpht6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1ca193f3bb746990e90df8d3cb958ffa371b0976","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfixes-759788-kmkrpht6.tgz","fileCount":309,"integrity":"sha512-lpg38ef6pSSb6s2CCDIM7FfN7VPBrBfypCTV4yhls/bAG3lcCIXBT6FWVWYBI1wZRFEPxDf5tyWq8KAqDOnSYg==","signatures":[{"sig":"MEUCIACVOw5qsR4w87migXUOkvjWX8KkAks6e/Gw9SYict3pAiEAnYPz9ePj21PWSyhShLb+fVKL94YLKp+LKeDFAXX+w6A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWL1fCRA9TVsSAnZWagAAWBUP/1Gv+8FXb7DJ91N/y3HF\n5SYdhOx+wgBTtJ7rlhvmuxczUp686iG+KjBGTBMK8GPgDDqt4aMqFBRlZlwT\n+TpI+QeS08jJp8a7yAp13IJ61BUhy5wGB1idtc7bnGkgBIVPfoczobuHV73M\nSn/O99O6hd7WEnjY+vRstlH428RYGs9HOyKj1FSHnUcLnC7Mh82P89EiLGM0\nV3lfqUtX1Q9P/U7+rD0NKEZUMo7MBKbJEU5DsvY0NrxwgLtgVM4g2SPqu8xq\nzm98bkg7j+/Rh43EQ+wCzumr/PBxjkUN9ZnJRUk0la78b2YTXYZy1B5nyLy6\ndZanuRhyBvx7F43Ubm80ejcR/aDwS8aoPeGmGQ3OyPk6mX3z6d9tDoQzJcWS\n4U4T2lBdUtHuFRtMnUqPNLnDN7ixPHrlG0zRsp7x6NG3qUHg2brEUeGVyMAJ\nlUrR0+qU4iyOmvW+ahD4uqxNLAJ6N0wLwzHB47/ZoBGAYJe4OSKWwLVqtI0h\ncScZPxUZXuh/rtYY9MoFraiaDC+MgvNv7Rbg9rBQruQpZhRTbn9kkulpnzf+\nLCjjfc6P9v1D/RIKIyiZHTBNeCy72s0oHKDJQpWGihi8I4WP/YAA6HSjKstJ\n1l2smNc1QjeAo5wLG66gYD9xBMeeiYVoCxFYBCTz/Y/ikJfe3NLaXhYdmTQe\nzJOM\r\n=hymr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfixes-759788-kmkrpht6_1616428383363_0.8602452429411909","host":"s3://npm-registry-packages"}},"2.3.1-feature-fa99ed-kmltchiy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-feature-fa99ed-kmltchiy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-feature-fa99ed-kmltchiy","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"88490880687d3f5e0a75dfe992bb3edcfc72ff28","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-feature-fa99ed-kmltchiy.tgz","fileCount":309,"integrity":"sha512-BSCcsmGhR3yBp1nmlS6tdY5OvtxHQBINwF2Gtf8RvH3x8u9oK0h4jBKENUTL3j0etFcwqqFcEaJLoWSM7KpFTw==","signatures":[{"sig":"MEYCIQCQDeiKsUWHYHr9iJfbQBl1Lz0vVKMSXNBucjEotreirwIhAK8AR7JW5vIyemrwn92t5HfujbuWPQC5+pu3WlgegbCY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWbRQCRA9TVsSAnZWagAA34QQAI/W01eXfXCzjnbJTjEt\nkL4xo7oPzyHxp+RtHjTYzwCssqHRkhNM8WKuJdqNW4MFb/ye8cqRg6EnsP2r\n4w36JNerzQnrQQsh/SuiqfYcQU8y5Cr5+/PO9uCDpnK+EMhX09ln2oeTuxnv\nMziOgA3vJwSJWR9kMnsdDM7VbrOnFb1Fg1HO9Ryz2iHcEcx2bBf4q+SciF0F\n4Ah+A+3UPy2kqKJTkIwAvxGb7FOE/gay70t6oKwvdzTJj4ouQaxXwAj4HcDt\nbNrufFNhC8BJEzGd+QfVJEy9iqA4GNssifOT4p6ixQCoMHSED0BbM7JB1JUO\no1ux1jQfvvOZFjMMJ61TsUpnsAQS8804Ckftf/BY+l+MuggXW/ynkSbQoNr/\nG3deLKC/T4MJqbzV4bvfGIRD9kuFdA7Fp0Y1T++FKXDr2VEcFn7rvDqT5y+c\nVxXwtzcKCGakUUIZ/xCyNGzAS0++fp75e/0qnuqHEKROiSUgy5BxyUsJiBE5\n3JJ4KD7MOsFQy1mLl90Z5ECu16hyvdtcLULbRcHxQOh04Vk+aoyhTUXs14uS\n+c0reCc6CvwlBZiLXKD97HsF6Sb36KRftABJJIvL9t+DDn4sdxv1tz9n4ihd\nH8gSgFCI55H1fESObjC/CF6WzkqnvV5SbyoKAtVjY7XD9Cs+3TqnS8vgPoSr\nHk0/\r\n=zV9r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-feature-fa99ed-kmltchiy_1616491599577_0.8207753139195058","host":"s3://npm-registry-packages"}},"2.3.1-hotfixes-0f69f1-kmltxa2k":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfixes-0f69f1-kmltxa2k","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfixes-0f69f1-kmltxa2k","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7c9ea1766f645ebc45df0671f6c9399f9bdc1f97","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfixes-0f69f1-kmltxa2k.tgz","fileCount":309,"integrity":"sha512-IEcTj8ez8BYvSIqZwntvWkBv47us1/pNA23gnWCoizZE0f1lYrt0cIxbq4lVaEVaaGeNoI3IHfJD+XJTYg+YiA==","signatures":[{"sig":"MEUCIAxpYyHTDdpiOCTpJv6QFE3DhgHxRJibaXZeGDG8IHl2AiEA5aShYt4KkLwac3ZCTQTy3F2a5jBX81erPYYU4DjcjsQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWbgaCRA9TVsSAnZWagAAbCwP/R4KXui79BT5e3+p2dKs\nYOmQ61M4NufdnvJxx59W8fJ63EhJhGd96bXvZqYCO0V364cO1ix4oDoE1SMZ\nUtlBay+RVTSYhGT7Nzsy9yRZhgyJOsQ8Xby2ou9h2oAJsgJg2QNJGlJH0MLb\nCqEeK31ifnB+ADLpjp1GzngR+Kw/ydCsl50FEL8XPNwu/UOlI5H2NVcvScn7\nsGhLyr7xmu9JH0EohRGxOAYvNmMyu3twTfRF+Jpc7fySsAaPhyG1wtRxCvK+\nRvc1hGUycldmx/c0TYa4nh+uevWXjztueh6PlCg59mFDmuLQ8hdFd2ypLQjj\n3nQOniLPbNS6nRV6dKW7IaT8ZDEotmolICIePwtS2JqeYcDg1AP3IQS1MBsE\nA875+ZBzuXnD/YgEk7lRmSRh8xmMTEQpt3QYRjOLEnhxSXlPZFsYAfY6vZWQ\ngb+gPsbPq7iWbkyrotacACaEyZb2oR8tMGU2FrmHroCqEtxcjbwqfT1FMKVD\ndSRoChana5jdgbPchnkK3wvRA05XjwVV1ImPvmmHYfLnZZCOnuSfq7agpo1H\nXjp1uWIZgGoruWCo3ptL4RUlMcLCFAYRksJL5ZfyMCxDB3jkjm6/Ygaaeqa0\nhtU4vp8JIn539tiT+7tqdjeEjwsydxfFw0p0xafR8trPQAblJSTyF2VS8iOs\nRE+Y\r\n=uQxs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfixes-0f69f1-kmltxa2k_1616492569600_0.7192335820584919","host":"s3://npm-registry-packages"}},"2.4.0-feature-36acd4-kmlux3wd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-feature-36acd4-kmlux3wd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-feature-36acd4-kmlux3wd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"34a197e1ee13845ed140599f9f065b2cf330ad27","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-feature-36acd4-kmlux3wd.tgz","fileCount":309,"integrity":"sha512-xNSn2nQMRPn+4U978hZBl2RUppzlpsQopT6bOs5KrEVJue9keO4D75DKBjomihg5q/DeqbV5eSKUDwcJw5KFQQ==","signatures":[{"sig":"MEQCIDXy5nk27//0sjIOgNQDMbG1GB9W5XEocEcwTBKrn1VCAiAY+s1j/o6tfIvc4zg9J6Z7/T4xWwr96mwoJBuc5C2iEQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWb6oCRA9TVsSAnZWagAA2PgP/0DZ7AcZv8KfEp0XdlY9\nkp07HauoXGFJNgI6NRj5gxadpAl5LLjK7T1VDA/Rwmef2ZuJx2Tcl1zrfRmF\nD+cO0OYEP/WXs1FKktOsEoSEY1FolDj0Tw6wIZWmamk05y1GPNCSxdntjj9V\nrXwEMX4rofph4DTfaTpaiwsNtm7jnw5HsgUGAdorD1s4Gy9hxHzLGN14GLJE\nUfTPpGATw9mtEGwMulwcq2CGIORTHiOt67qbmCl1AIOC/xLJg5nIxm0v0NyK\nqoS3jsMas19S1V0HeEaoFtFwCR1gBrFC2p1WRJZyEOkXq/8NmlCcNbMflYWD\nOL3yXDFVDV0nGvE+xlCkKMD/o6kCafHBXr23bKmuTTiOY80Wv/RbQuE0enwf\nVDip4FWb7mA1Gvr0s7Y/oAf8+9AvRqz2MNH12CqUspgfK6x93CoA02voHau3\nubOYz8Ao8zESZAF/TyiLKLcKaUzQpqDUK9O0v5+uqygssuB87yj83fPeLwYU\nIBnUinssJFti4i3dv2sAy8SY9ltq94xwspRw+8zgCT8fHgmqxiPHxPAWoEHs\nvx+AJQiDRN3QgFRFRsY4s5T9UTE8UElRqPGDZM/HPaFKalNyRCoTBNykblz7\nrz7Q9uNJ+QlB1MP/slGPooPd5X90uBBd1mfrygXRN2vLEUlx4kyO7Syh+0Fq\nOGmk\r\n=K4jq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.1.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-feature-36acd4-kmlux3wd_1616494247818_0.014876384978573798","host":"s3://npm-registry-packages"}},"2.4.0-alpha.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-alpha.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-alpha.2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"76a9fa45a7225b9ef586dd004fa0d11b0d7e95a8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-alpha.2.tgz","fileCount":309,"integrity":"sha512-RUNVMTEjxzSrfcR1lx9ruEWXMBZO7YLmMgJB8aAgL8qCLbOmXJ5gEaQfhR7b3wKSvLtC8bMKYx22BZ0Bmmz67Q==","signatures":[{"sig":"MEQCIDKws6dA5V34dmem9jTeD76Qs4GSqCCwrckBQK8M8QG1AiAA5M3Ok7m8sm1701rz12rcQp6H+V7Zh3Iluv5JUlyF4g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWcHHCRA9TVsSAnZWagAAr6gP/jKCw6JFKbrO/LRS+ajh\nl3A6Orzn9JDUlxma0duXi0nO0IXg7PfPCf3CnV3kHJjaP6e9eEn2vKYFIZwa\n3IgFCkwTIp9BkPv77v5anr4qmslEPeKQE+tDaNZw5HZjlb5hR8T+KoemwZvv\ngmYp+8B2EDf1jID3K6HE9N0csztINT8MxqDOFIpaWhRnZAUA2aK6aGDgzvCO\nvPm2YqLYGjgrmXUVwjcOJc4UuWp+PTkp4Jkp9YmlRJDCaFig83mskm+aEvBx\nUD9gvKsjPCP0RQEREqbh0FVoZ+qzseH5j03QKTWb4aUP5Av6ty/aZcNUqHCE\n9XBi1saUn+G587sI0b+OIeHpMdNyP83hIU8x6dyHzCXavfPTpqXSakEMc7fI\n+7ynXcaq/DqEIN+UbO+CPNO8reIHG0zvaAZZsdDlbbmvJz3aEmnExDI4kWxY\n7U0Jh0Am6tqqOiFHcTbzGN8BbhITFFrLKMTu5bZu+FYdIeTRQHC737AIuXNJ\nDG6UghCjYVB2WPMdpTAb4PaMRPJF9bzq5iy7mIVFuTit7bMsPBDiMPTQxCzW\nKQulmCiEuogj3lKHfbJjeFwET4grZiStCVNHgNFEjHVwZBygaCw6QnN/8yQh\nMWEKq3jL6J9v0XJbTowWgf69ncA8gQn9CpQdI3hVz0jet82Rro6fVyjWP3GF\n09Gd\r\n=bdcL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.1.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-alpha.2_1616495046704_0.026097681150940133","host":"s3://npm-registry-packages"}},"2.4.0-alpha.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-alpha.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-alpha.3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c5afaeb264ccb082871a883489abf5cdcd9ba4d2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-alpha.3.tgz","fileCount":309,"integrity":"sha512-8nY327ldR8v8Z0TZ3GCBPTbBCnTA1+Yzny3sAodyK2JYou/V/T/eXsuxC8498unUK+5uzdheWa66jcdNBXiASw==","signatures":[{"sig":"MEUCIQDr4uBZxXFJOppl3+8SWnfjnJdz9wpL7Omad9pwcJPs1QIgWYmbPqEx7KbnHrqeEYSoO5+COHieHbJo29+fJ4wIfOw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWdEyCRA9TVsSAnZWagAAPhkQAJR6SHHMM/XvcLGU6ZF9\nxpwjxE6ucWN5z3mVgxZPDmjz+PVn8DHrLE5cJchAprDMXzVhO61F9tYaU0Yx\n6fwImHFvBn0n8zMJIy41h4K7uDWBTefxp2FtSNJCacKsym0UqPoE5PCBj45d\n4DILPwjvXXA/6fxIbl5zsD5MwHloPQ+z7ik0yM5xQki5L9bmOD7lfqbIOJ7F\n7PvLeJBeIdgdEtrudiK1p3f6HFKX27MbmwjNiy17RnaVuDwOuKu12/hitEEw\nfSK0bKBUhuuY7jjlCLgblp7+43HcskLoU0iTK/Zuo1HP3CRcR+gwq+Hb8cb+\n/3iHDJSZplDnKLOyGXURFGThdLNxaPjSAxc1GxSxGhywMn/UzACUiOIU0kta\ndGkA0NiuRR+y6h+mVuQBO0oq4f8fRD/yCCuwZwqdeZqjHx+BtTN5ZVF4d3y3\nJ3cOPW5VQei60F837Tftb9g3TVCIau48j6bduvGFXxt0P8+GgZGMdmt3mAJo\n8Asigw0omkXZ+OLqQ/r3SICW+RorMZEYVm6ryL6+XPyGvU4ysXJebc7L/Hsc\ntA4YsAnsHS+Ta+sYPGYnw6dCZFWn0xh0Eku3SiiCdkTxCEn9ksM60kq9uMQj\nzLsOhwjRMsckpJ+G80ikMGuAReRJ/gRaWYVbEOXR12cts506JTDeIP5MWr+w\nyC6J\r\n=RWLI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.1.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-alpha.3_1616498993669_0.8040054713889189","host":"s3://npm-registry-packages"}},"2.3.1-feature-f6b0b2-kmlytjga":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-feature-f6b0b2-kmlytjga","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-feature-f6b0b2-kmlytjga","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3a25a89c5c07e2432d6491c6e967406d8868cee5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-feature-f6b0b2-kmlytjga.tgz","fileCount":309,"integrity":"sha512-C+R+bJK0KyqriGETbCoYpkV8B2o/7S6Nl++Gyb9EvAj7xDwPJ3ULnhXRhgzX6nDetZWl5zZf1Ph7nk78ad544w==","signatures":[{"sig":"MEUCIHng8xomjRHressMFoazSYBlfnhn6OPuUrQLRQu/oebVAiEA0vf5RnoLpDGYf3TItzt6ZJ2UfMxnUQy5Yspt9ORa2lM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWdg+CRA9TVsSAnZWagAAG/IP/3OC/aeR7tclGRHwtfGo\n53Q/HidXKqE11F02ziSVwDSqJn9wa/qlMxVAC+fT826TEmeECqlIm+DSYXXF\nRefQeDXimsMLposdqWR6lzsD44pv8XZnIpibbnUA5qo+YS3f+O1gmr9n9U/R\nyNL8TTHi6GjljOhtAI3qoeWpiaDBFmqlFG0MPbHUUAsM+cABLPSaL1G77nX0\n1PiBpqiETONRPEv73FRJ9fTEHF77x4TQQxG/A01s7ARk5eTnY89tEGFhMK0g\n0asdQyxi3DdqIkI8frozWXD3q1B8GdckAVSp+yN6YHcojRuG2rrnAGVot3Yu\nwkTjIdfvhNevknapn2x+xm5Xk/WkO0SyZXwciMAhgS9IhNU7PoWSE7SwLlCl\nesfirr1Ydk0Tu2ogzfznbxd5Kus/TOe1psPCz4dzgirb5TFh+NNCO82iX9Kp\ng+YDHTNKTfSz8Y1hOem13mhao6TBYarkCdGdDFfSWlY6UcCDDDxUwW7Wwvz6\nPmvPJQUrr0WIhYH3KCJqXWF4WYxExvnJ2/qUEKh7dhm5edGwW/NNhIguGC25\nwmZKrUACmRwOCVt3UehBnYeHhZCt7Ng5pf0nvmTMPWUznF8z3F8fGW2ctFZI\n+TN7y+FB6khR5xM2XkgnMVBbNuQKl1KME+3LRPty1TI69cctNDXw9uOuZFCL\ncsoZ\r\n=giTR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"feature~terminate_process-instance_before_removing","@atlas-engine/process_model":"feature~terminate_process-instance_before_removing","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"feature~terminate_process-instance_before_removing"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-feature-f6b0b2-kmlytjga_1616500798095_0.08086103595261851","host":"s3://npm-registry-packages"}},"2.3.1-feature-8e3447-kmm07kzf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-feature-8e3447-kmm07kzf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-feature-8e3447-kmm07kzf","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"21981aead1cb3660d252990f7a53a92883948426","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-feature-8e3447-kmm07kzf.tgz","fileCount":309,"integrity":"sha512-Gbz58s3Pr4wasjKYy5GtAARpQOEWgX8Y5gYvZQ2yvYx1agqKYLFBzv3S5ngnnxu5rbV9heXnQFiJCbqLm9dGqw==","signatures":[{"sig":"MEQCIE5qmzd9BVqCDY7oocrjrBmFgWEkHZ+AQZAwaAdtwx73AiBZVU9gUjbGZxe6LSxauZmk2AX48nezAPoLiS20dNFMew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWeFbCRA9TVsSAnZWagAAfLwP/1E3PxM93bPsUeSsvJes\nVgLeZL/oiG9CwZ1RUo+LKfixmg9xEsUsgANN1KzF3bEck6oFaybXo3Ib1iXs\nnVutLap2Sgz58q5hV9FPFpkxM4QS4vmEUMzR/c6E8JVPYvPo4Po1g+7rqw2F\nfLTiAnKY2Aak/Pk8HC+nRiymRZDR2WI1Qy/dOuXh0YeHGas7KTkpY0/rKNO9\nkdrNN6TQjPA/TYa4UHnlZGaP0q8v2x6qCc4anPrpwwIaKtLKVDLt1np/KBED\nnveRd36zhIg3Rw5r87JqQiX/i5ue+RKwDalz90L4Y1YiZEpGJUg4J2IVEhU7\nZ5fPaPxoCwv2CXsa46PtldKiRZ4RAA2IAv5kgzjXpyf53a9JGQY3e/r3KZvw\nob/hz63L6Bj3VX9aJdlWbspfylPlFJMe820sVw/aIuHZHWKOfMQY+zv9NGW4\nIgT3bqzXKGsl7rdd+AU9oUzGQDnOQhjmOUXdf66rExDDwO/ajlqIPJ6baCJ/\ngbU80PLY6Ag7laJ4ps/4vZTQn3Lg84wk3n7pOnIbKOjs8rCZqk5/3Vjk2MF/\nUE79wi1AYW8QKAvux2SR/ryqoM/SlfA8fys7MBTzsEsdl6EIcyVWTx0d+ovR\nCrMl2NmkaxtUpgDQeMQe7PTgS3JNxj7evxM/MtYhv5yVXMNx4L93qQ1kPGEI\ndH7K\r\n=oSuN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-feature-8e3447-kmm07kzf_1616503130731_0.5387046771803325","host":"s3://npm-registry-packages"}},"2.3.1-hotfixes-090796-kmm1gx5f":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfixes-090796-kmm1gx5f","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfixes-090796-kmm1gx5f","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"54ccc9b720c0cf5e4d9b262d88a03237bf4e7710","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfixes-090796-kmm1gx5f.tgz","fileCount":309,"integrity":"sha512-ym19UY799A98yTBtyTYhfVApgI8suzVh10+V2Mikhv2WOB7o2DGqEyqtN/Re/uKoyBxum95J1QUeAvube8vnww==","signatures":[{"sig":"MEUCIG74mmg/azgRMBd+mMYrinZb4sIjGjQchJXzKsbEw5o/AiEApePQp83s4w9ytMX1uBpcCMVR3g5DMIcQx5W5B+m4AQA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWemcCRA9TVsSAnZWagAAoXAQAIRJN5bWttIuO8gYTCc6\nq30Ztg3yEWchKmRkZNBTgpqM70SXzwtf1hsqv8Uhybyr9bFMO6flSffrqnsB\nguUl2vr592DEvOJt7OkpadWPGAM7o9JKzyHWSy4CZ7ku3zBCv7SS0Wx8DHZN\neW6OzyYrl18YDmZdmrUmd7wnVoAxB085kQtkGk24BcQoNX/sbxRH9IhzWksI\ndEGdg7zNbF1poBBss8JtKwAdGby3oCCoqbaMG66SA7oI+NQkFRfH8mviP8u3\njyE36Mx4mRRSw7djI+G5M2bov/4AQVecepqny4a2nnbU3YwwqajYORLfs2Lh\n/v3TYJzrkiaIOIWAlf9u+tg3ENOARZ8G9zgtsHXYywkFY/yywKm+Qk6lLksK\nFW/ahROefH6LhgJzfcPfr2+8wWtWISD0lb7aiI1uUB0/1BxmRgMLHB6GCFf7\nuH1iRb74ARuDWXCM+4MzP6Bv9aLENdoNU6k7H8/vExj0UcHkOqOE45jt4tL0\nJlRk6LsrIstpVf3jklf7q9CFN47jjybDtu4Jc38OutpdjjKyjLaEZlht2VBE\ncQycURtOiz9TO6OEfpfh4ViBgOxOpVGHNpK8J+Uem2MUNmCIjT6KAWsS7SzT\n8PVRpqHeZKzhFcCYbBrJIC1SBsgk60l+78iEssWEe/pi/SdKwU1lg3Efsg2v\nwWsV\r\n=tzFg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfixes-090796-kmm1gx5f_1616505243497_0.7823540582293946","host":"s3://npm-registry-packages"}},"2.4.0-feature-9b03ca-kmm4lpw0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-feature-9b03ca-kmm4lpw0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-feature-9b03ca-kmm4lpw0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a99982f659311b710de46d27d2333cf783be8d6c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-feature-9b03ca-kmm4lpw0.tgz","fileCount":309,"integrity":"sha512-Q6mlkAV/89sAzGNik2GrteMUCKFeEobamu655JpLqkZhxEeDlmrounzRrOEUkXFalxy/TdTh/aVYQE1SlF0mDw==","signatures":[{"sig":"MEUCIF00yDgbT0we/nmANhn8tqSc73t65gPPCg8TxqRFp1l5AiEAlT1QqUMgKnTIf4dl74NmjNhm3U5w6uVVfiF6v7YFU0E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWf40CRA9TVsSAnZWagAA3QQQAIHSIuwue8OC00+n3qnZ\nNJTsr3x7bpaWeX8783RHaNZunsWl/x4WyRLNOzZXnikIzfxILcRZcui3bbeJ\n/DuUP5zYcFns5hV3Ang4HasCQWMn9iSPeu8PztenKzS3NYjJzhdSLe2NXQS/\nxZ0YKOowrWvLnacd+s61BSIVlQ37t1tCN1tRynuTYpXqHrH8OZ2BNA7SJ4Fv\nQtgGVzoIxHRECtUM1CJ8Zcp7dLHFx89KpjzzBqz54n8+a8NLfprhMUXJY1k1\n050eq34dt55YXOw+eueMnTkZMq6t9/FV25vIpPvFNw4KbFM7fAX0ND7RFu0q\ndFaFEFoA7p+puR4CvRhcAKJm6M8DhjyCpXqWk9O1GII9Js91dcgh8cZq21n+\nweENLsYTLlsapty/VZ/5nH8vzQQQMSq/NTWzxIpl+M/M/zo/sv1ajvWyq3io\nvW115aPPSlrLXlwhdYpGzyc78H88aLjzYJHFols+7eJ7SkL2Ovu3P3ZKZYII\nDtM+n9pafQBCikk0j5osnhHLD5yHSaau/jkIhoBS9GpTpMUCcArgjYTWBJn/\nby4G50PbvyqvuhAjiifNkccxADGoBnnKN9zSSBSe4QKguyzZTpjpXMZH/JPb\nlc0jxZaRYgXqNTuhMvaMZ1FBn22aSNYVp4A6cDlyKJQZGmtB78vNqd7tmEFO\nBnwn\r\n=aE+N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-feature-9b03ca-kmm4lpw0_1616510515963_0.337006559326962","host":"s3://npm-registry-packages"}},"2.4.0-feature-d9d5f3-kmm4zh49":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-feature-d9d5f3-kmm4zh49","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-feature-d9d5f3-kmm4zh49","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6e57ff03a6d3fb9e660e969179accc527cc94915","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-feature-d9d5f3-kmm4zh49.tgz","fileCount":309,"integrity":"sha512-+Xgw+4NnudH6svP9OlcUw3/IDR67x7ssEFSyAqRo68UokuJyNiTuc/B7fSF41Q9gNKtnHRK4bHiqdsBR71JeEA==","signatures":[{"sig":"MEQCIGpqptdayfPddPYEXLhGWFHwZ2BH3l1V916HZO5Q7RHOAiBUpRQIyAYwhjghpiq9ezqlrrYFZIkCQL2q2Xmp5Fr2pw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWgCyCRA9TVsSAnZWagAAE8QP/icFl0tIF2P4+wYUZjkD\nuV3dVYDEFxBpXMUpvev6yX9i6S3XTVY0Q81lP1FBe52CdM6ggxW1UDv5H6G8\nkg/IzDTafF6flZfZFWO12SsZseFMhNkvjto0qpbkc6xRjwdEQsWObTf3Jf+H\nQm+Wd1CwY818Vp4YeKTX88d/at6BZB7ac2LJdaShyHLaDw5CmX/sGRP48T/M\nUQrTv01DwejvlyNw9qbFCeokQpJvElfo5LRWQZrTQmLwfyR6+KQR7mhZYiVZ\nXNQneWAgLnMVIdia3SShvW4ppGQQaujBTITYuD/+apUZeF2s8TxLAldwUur5\n/sVgsC3+5Lz2lXiUnVixZrROjq1FuB3B+++yFUs67P+OiYYh0cxZIpGXgfOw\nFP3pUlAmDMF9vWYKVVVUH8+CXTX99Vrgku8U4lHbX5sBhWaBJd1lb9gv3p2e\njn/7JOQkalLWbDN2N7hse3m3UDvrsnwxRz2ucc3CxAyehFBam0xPzY5TXDnp\nk2+JyI2yGMRqIVnyo7U7xd31KR0RXhqtOlyRNtYids2wjUsFn6uo9kDPhmR1\nAgmaNnoGnGrTNNKd08B2aXTtB97Rfx3lKTUCUb4X6c5b11VGXh0y8fuxfBU/\nijMMmnxR5QNJHa7+rPxypMNFsUDhoYAAx+Ld5AyGhyoW4if3JDEs+T3ZwiAq\nV1Kk\r\n=+7Ko\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.0","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.0","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-feature-d9d5f3-kmm4zh49_1616511153881_0.7038393051128027","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-487b77-kmm5h2x9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-487b77-kmm5h2x9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-487b77-kmm5h2x9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"18c27803276d16b90382b7540e978d7abf46c22a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-487b77-kmm5h2x9.tgz","fileCount":309,"integrity":"sha512-u4rTu2uaGWvJRFquguDuDNXrax1g+cmcKcFPVJOvASkqHjgoDiGHxCgIT6XDcwg9ah39/jPtjZTpXzeeudIRhQ==","signatures":[{"sig":"MEUCIG+ucu8ovuFN+W72/S59AsbWXuoXsys6fggYPZVo9d23AiEA0GenDrnr6SSjzDdtiCGhZYYXbMWXj+ZAHhD+QTNuedM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWgPjCRA9TVsSAnZWagAA3aEQAKKZ0On0ELwXrbcvKsTH\n6y1h12o8KTDpcK2gvWpXB+NNuRZztJiq1hTcMiYQpzuU/SsnPwRRKa1jJlSg\nkvanyc+xs2X7HZz1CcJWQdUE+JS7aVbshZjLSuBJ2iIhTVn/k36Olfy+ylGR\n7pLopeRLB0+qoOIeCl256tHwx6wPcTOfIqhS122Le0KhhPOy3x8bkgfb8zn9\nyO02pL72Gf+qar+Iu2IRs9hVxhHgaU68ZOGS4YcbT0eCeN/FzNbw4jcL1uhl\nwiLx9gY6APZt5KQNg0N4vaX12R4s5TbwQOFDV/2tvLKU39l7gePmkWpb5Y1T\nOJTgd7bj+NI+YrSpMO+zFjayjmKemcwHxfsoqwurN+J+4/qb5a/PUPP3cwMo\nLYWJpQl9mVhUmepPR1nW4/Xi1ti71GCB8qECQRYphaOnlafdfIYwIowu1nXW\nflvg3OYxmD1Hn030N4Fnfu3ovQWGlPMRO8hb7idJn/jsjIzOUr2tJQmz/R1m\n+g94pejpApYC2i005q8mp9xdVG8XIPxfKCtZ5DChUe5MUJHpj4oIYV9Af+ST\nEq1wVi1jFbo9rQ9rUGe4eS6pOPFxn12IH+boG1FaMgtKQ8q+9LSkTxs1zumu\n+nJdZ122zLVrY13fimzkZLF/Es2uQwrnbDxcgkIKP2WT6JkAijD8k9J7l25G\n3U75\r\n=BGBu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-487b77-kmm5h2x9_1616511970528_0.6931990843542231","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-90f003-kmn9q79p":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-90f003-kmn9q79p","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-90f003-kmn9q79p","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4859fe538bec1f9ed07005519f89bdae1bfbb9e3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-90f003-kmn9q79p.tgz","fileCount":309,"integrity":"sha512-GOEpmfsXffIbZf4E6MC9n6JH97KG37uJdQRO848i1aoMLlyb+NLzAW4wigz+yNfnZdPim2JaE0ex0r3Jy1nlPw==","signatures":[{"sig":"MEUCIG8Xu+3T1P/u98n7gb2cAjamHtpD4QAyVg+7u6Ynl3cOAiEAyb0iArylXseF2y339fZgxEF8Z0nnqWPKXrXMtWlX1g8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWwwACRA9TVsSAnZWagAA2JUP/2R/ljuBzlXeu/B5eR+m\nEQRfGpNaHPhdYPLY03NcWaHuVJNpG+QnH18vStg6T7BBwp6aaefcNc315Blr\n9xvlHu6yMVx8GqxqKr0gCuafkF28mT5uWZyiTWyB3AZqdJT9Uayp6FLeiZvQ\ndvHzcRCWZ0VjgUf96ZtgsN1LrtWcSptZaFaJM8AO16d8BssipNF7iCk8c44l\nJQPysmK+WSxEtDKxR3qJSobiHFjzXXf8dxcA+nd0HmvokoWecdtuhP/DIG4b\nvTruoCRszbTMc+/Kq14UzVl5NdNYLhPFd0EDSRZE21rEH8rg+0XVzWbPl+sZ\nk0MgD1/sURLfAkpUcdc71dWyceK9JCwGav/QFNm2w+AX+UWPFgy2hWVqsfXy\nCB/3XNo7Nh/7Xnlxx9PuwL6fE5rL2pV37HZNoN67ZmIz4VDZDto/e+B/4tcY\nSpse35LXRiUaghwdNcyV+ibsEpfel7ix4O8aefozqUfrv0TjQMlN1N/5Khyk\n6OTp2JvOYxVpewqu9GrenGHFNY7h+dKU54I46d39AW8GAeDu8Xor8auqKz0J\n4487dHjU61nvOXh8MLLSJawAkuZuY4K0u6xn22mZfE3quJ5d79GOjNYo456+\ntU65sLKz4hTJB4nWcafIU9ATuPBxPuvi2RS4SB/i8X8wXzpwgVBCKuFeJgBc\nc4Kf\r\n=gUad\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-90f003-kmn9q79p_1616579584350_0.6389518024622121","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-5dd459-kmneo7ki":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-5dd459-kmneo7ki","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-5dd459-kmneo7ki","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"86c895e04073b12f09d059750f59e968f73d485b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-5dd459-kmneo7ki.tgz","fileCount":309,"integrity":"sha512-fAds2GVT7jXUA/5xwiVLdDO7KSFi9oUJpy8iCoGXuKS29b+z3ZuSlu+k4LvQTANafLE66SbEqXq/ugICKDmaqw==","signatures":[{"sig":"MEQCIH1QH0Sz5wziGO7cE7rfExDsL83daqj3oyNyCtGSlRoDAiBNM6AwXy6/ENgcesQ7Lvwf8NyFsPhAa2gtZmtvc50HUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554029,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWyxxCRA9TVsSAnZWagAADC8QAJqcKfYkgNHdfD4dMH/K\nmHFypIQ89Q1LZg3UO7QMCwhV2NKJanJhrfnYlweo7JPcmUk14wrMUGg1wyDH\nw26T/JW2Aely3yhT3aa14raD6L6slJJd6gJtWrL0ECL2epQ7QAGlbuFlx2OW\n5KreIsRIY2TprXzFlFkChF6K6LpYoQom2YL4P3B6VUWRNTHsWaqnXdwN5Pw0\nnmAIAimdlVEEYaYtHvm2kPLGmqWC+nciPSqLRvK3/p0v4XWHF5bNVLpL4jzR\nal6CYXTKLB8CAIqx2Y91GVDWGTJEyPQQdaxwP1WQad2O6CS1xi5C+tPRvnlJ\nnDWpF7MPVH+LEDVGkEaND7ZMgF/BpvEOPvmW2D1Bzezjw23FDQRG0BZAUcd/\n7+S07LU4gpHPe7PBA81An6eKTkzio4TiT8PHAuJvobw9Y3vJsZJ24i98Ofm8\n9yGmGHRSs5MuVF7yJL4kgclf8V52iGmkUmNWKZ1XjuWBV2RB7HcEor16oV+E\niE1tt6faRmuYJLhw12eIBh/gpla8Wt226852MpYPPvZsNpLYkE7hiD8VYHJB\nc4+W9DPnO1PeiRQFTThs4cDRliF7qtZSh4tqchXNg8BOuQ4DBeSdD+Bo7xEt\nAGLGG1t+tNA8NbW9dTLKSUE9P/AhoOkD/0Mw+pBVskHHBe3Os4KmQb9XZDFA\nnS3O\r\n=7RO3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfix~add_process-definition-id_and_process-model-hash_to_atlas-engine-event"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-5dd459-kmneo7ki_1616587888378_0.7098203522874964","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-367759-kmnk6e98":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-367759-kmnk6e98","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-367759-kmnk6e98","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"856390a5d5b62b33a91cc42e905e76c4497c483a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-367759-kmnk6e98.tgz","fileCount":309,"integrity":"sha512-OSegJ5HehPY7+fN8/8IOy6MYew+xB2t4UBjHcvUqTF8KvhHKDBuRWA7cl+15LYuaYHqJXKviQnu4dmDkTYiyvQ==","signatures":[{"sig":"MEUCIFEsez77QEtS0b5imP4wkU2duG2TRiE4QSjGpGWNRs/yAiEApy+thg4lhJKJ9yZTJX1jRn/eydA089IRuYvLCaf4pSk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgW1CKCRA9TVsSAnZWagAAQisP/Ry7dynfw3Jm/jP4zvmm\ngr1trgaY3vOjwhFsUPpcuk+zP4j4Hor6B0g6hhKzR7dUJt4VF6gMltHX+Lp4\nEBXzLmZ8laGQCjvJQw7IO2Ga+nNAK1UnjaPNWrgdYgWDsLGhSNv7LSrMxqqg\nPgV2sw0g+MEidak3gkJPin8I5cczRrD6q74Ri3iePaxWg0JK5dgecUvqVHUH\n33HnRQcL+pe/+np8EdacJDhi3kwKTA265rAsrjcb5p/EKAGJUmkBSiEKkEOg\nL1fQY6QvSgoppUWv902XlyZzL8awLcgUvoj1Tmz40/bevyoAx5DxpS3lWY49\nB0PsKjW13zngakbolcLKGm+gQvwsf/Bn/wHrhOIRwermgFl8PTxDG9kWPzz/\nqN7YaVozqOCzsHo5ESeqwVf8SyjjH84LYG/tcZ4kUZ7va1cpLoBhsSkIkFHR\ndhwt9F9jZvLm4UtOVGJpQCMTzBerEC+zRGv/BRxpZ85h3L/FREfEMpLu+eYO\nIePAyMQy2l23N+njswILrSzfiJkQWFJC65KX34dutB0RPzECcUV2ddfAXS3A\nIZVjDJKOWguUPh3HhK7Y9Z3bTU9pCf4eRqGQbgermsfySa2R3RlUXwK+0oF0\nvvxpU5XisoqqG01YiqK8oyDlrKJY9PqgQ4mzKKaK0YrUxNilGIPr8h8qvrHO\nv0Go\r\n=064h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfix~add_process-definition-id_and_process-model-hash_to_atlas-engine-event"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-367759-kmnk6e98_1616597130016_0.8580582178267946","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-80ad30-kmomi2zc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-80ad30-kmomi2zc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-80ad30-kmomi2zc","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f33c5f1cbd821e35344ce5588270a36c21a33693","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-80ad30-kmomi2zc.tgz","fileCount":309,"integrity":"sha512-6jVMdMdcyYEL42UANbUysKxjhEKA2LIhf9+Wqn7Bcz6PRcqruZ+4TjvZACzs+rfmr1L2W5wKOKZVyP3uygkA1Q==","signatures":[{"sig":"MEUCIQDUqcdnZlf9VomeW6h1F9Fbt17s2iIoJoa/eHMMrG6HNgIgG4BAaPEyO2SOAGiJRlfjjP5opV/qu1hAIEZXwBWfdJk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXEv/CRA9TVsSAnZWagAAnr4P/0VKD4jQq2tEEB29BFEA\n03iY4v1k9bITwD3ZjprtPL1r1FcUoRHEC2OhGf4Us2Qf5lFrKlWyuOxBx6qk\nU4+JiMsOl9JutW05zzzt7z26ZHnCrQ05sJ1nSq3HrCkvnX/ocND/oLbdldXy\n6aYnjdeZWdKzErhu2PlHfGxQX8x7eOs4i5CJN5IkmtcTKuJRrvrT9xQBkWGh\ne5rjbJh7bq5If1bGeBdArbZorY5HppfqMb0TMBIRpUAGSf8dU6zw+UfmBlx9\ng5tvMzbNA3fI7I0/tvB4/UiLDBLciy5szggnQjhmJf9Xhn+/pDxXloNieyQP\nUi3EHgqKezyf0xzf6GYGuWmbqK5UDmIG46uioEPMBE6DZRQ+7pR+bMiPJNR4\nzUiyoEAmXYK3Qq0+3Y3RWFyR2UGrgRUrzZRqCYr+EytfOHzLs4XvYXJO8eWJ\nebLW1tr63xWsMw2l72TNjOlDQ8FKVh+ushffWaHO5vgwE7YeV3iVTMSSy7gr\nJcJj8nT627dbNOtdh0IC1HphIMNZTy3JDtUZeaFYgCgv9KmijSk1LJAsQOmM\n0SlFLOxQSfONzVJwPZsDMreSFtCFCxtiW60J9OrK5vpGhZMFOfsXt6ec2n8x\nkyDZ7wnJsMdmUq1MTj5ySD9OOPXhzOxYL6laI/LsxfKPm2SqR+ycCYSS1Pay\n1Jwh\r\n=2ZWi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-80ad30-kmomi2zc_1616661502900_0.22387303868333852","host":"s3://npm-registry-packages"}},"2.3.1-hotfixes-0b4ec6-kmomwpf5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfixes-0b4ec6-kmomwpf5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfixes-0b4ec6-kmomwpf5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b41c2ddde75ab5579f3ed7b621cab5f9fc215568","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfixes-0b4ec6-kmomwpf5.tgz","fileCount":309,"integrity":"sha512-9H6OGsmHvb3bQ1RjztRGSFEM2kP+qdg8bRJJDXIT3L/xk0MWu0FZ74lvRsgbtO8YvIqcxPcXAjig64JQRAP35A==","signatures":[{"sig":"MEUCIQDIRkkTawzOgtwoN6hdLiau3VQM5lFSwa4GXvYt+J/QQQIgGl7UQeUAU1Ab8ZIlEMHSnscN2V5psRqzWOAvDxd2o68=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXE6sCRA9TVsSAnZWagAAk7cP/3pOTuIFd4OF0R/0wriy\n5hI8hEjcRSOVJGrDRikBfeCfgKzUTBM1/ulNOIqb5QFp7jSVYN4Kw7Bi5VtJ\nfiPYvNh6mSqZG2ZAPVHmxctKAkhMHgWXBH9AaS/V9IgL7MYr/ZhghykzVFNC\ntCGAE67OVBYEo6fsetXjRiB0d5xZhLqeB1ROU91eVPHCooaLc8pW/DGDaNBX\nInKxdZDyBdA4pXdP9T0nW7/GK7vHkaiFcUgFFUC21Hp2dWYNE6NNNr9fKdiX\nrOH3f6LqwGau/fYpK9ep99Dyr0EJfRWAb1kXWdyIO28NEN79Y10GewM1VLyG\n7p6bACe2mUaaELjDt/GMLx3QVgpY+ImyFW9n1lX5KBufZpfegjObynnhK+AO\nPhtNy5bctOnXDHvR06wNZbRSetJJ3YnaSwTKSZJy+O+hiTmEs8vkxQV0+dxw\n53+LvOn0mhCD7pFxW5czDELmGnUH9ftjZmzQADPdBgl4r6R8CkfE8aOwlyrO\nuMeFGKL64taF694Nf0RljZRL0c314GxVdoEHQrn6/ptcSsl7X2s6NtyVyEbc\nMdbHsEq869ArYuXXpEcIMc3mSNS1hM3FnWcl4fpa3m5vRfQRxujNR4hczgGF\nvzN6vy4UbIWA2eSIlgvyg88Y1AHIihpHzw0UY3DkgJBFWvHbhtmb4BN/gO9/\ny8fp\r\n=p2+2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfixes-0b4ec6-kmomwpf5_1616662188469_0.9148186951278325","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-5acf00-kmopcsxp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-5acf00-kmopcsxp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-5acf00-kmopcsxp","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8666b4c81a4bb639191f30b51a34a9b5ad3bd7ad","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-5acf00-kmopcsxp.tgz","fileCount":309,"integrity":"sha512-qN5P5YSxY+aYj1CiJaDORC3LEbBEkz6g4V/a7akANIbhdPx2x4K5IdZ51avZPmQgiSLyxIpq7uWcMQt94K9zrw==","signatures":[{"sig":"MEUCIFF/031Vd244EuRxc1/6ZyCYNvkGN4lbL/dLq0KcFv1jAiEAt0X2r1O0p6SuE5rZGjY7NndWtOPxgRbN2cNzkQXi6pw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXF6+CRA9TVsSAnZWagAAcfoQAIxMYwzcQ3vcfOvprJLP\n5qqDilCOxhnYxXxfZpHnCWep+ljmmIDPl6W723TXHJg9RPasgaGASSLiB2Wt\n4OvP912FdcpCzngbujJP3nZnb3Msuar5fZuRc5f74ZZYUtbjDpmaGEjTKwp2\nh1LvXH4Ays0b3FFxRYcFkWjXjuKCdxZfC5/vHzRrjGTU1D19dkdY9pRExptQ\nfkmpjI65Kf28mJJzn72xcIIFhuXFu73lWIUZmFBgXRMliDqd7hcHYI20BZS7\nA6wxC4I+2LaCnM+unhkYyG6QNOEIZaeS2wE5BzmmclCufOi9aVtLt1m7siI2\nu4oWEsmjzlZXe+/tqrIvu14ePmXg0TqpChrsxWfeP9vx5uwK9NCdfHXS8rx5\nYkTgsEjV1975Is6+soOH87W5pmMUa4UT03ERl6HSc4kij+8hjZ3qdcN8BJq5\n3VEeB0nUAeG13XOlQufXms1JOJ3hVjGr5UOOrttfnPrQIS8Fl+RsIfF+EyrI\nr/ceuvEMcCpfgVONtDGoMUi5mN1cb1bze8SxWiCBP+046peVsSWLnY6droZt\nCroJOGwF832UNh0PAo1ffPYHIHkr6JI0UWizz22G+iPDfzrUnxd0lRFjt+0v\nGyC0KvTvOqfoEYX9xxTq+gq1LXtJu13uqv0wOHeNZ6zbqLD05smXThJ8IdQ+\nukBp\r\n=eUYO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-5acf00-kmopcsxp_1616666301422_0.4617495417693924","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-4cecf1-kmovqy9y":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-4cecf1-kmovqy9y","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-4cecf1-kmovqy9y","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3da257538a3462b3f07178c54eae432d1b11df23","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-4cecf1-kmovqy9y.tgz","fileCount":309,"integrity":"sha512-St4Vc5DrCXkvNTHoysLzFcyn7opuiPr+HzfCH75HFQSuWCBnW192qPj7EGG+baVT0FBDNEHAS4L9NeO9Ne9wGg==","signatures":[{"sig":"MEQCIDeVo5gHCKZc3dfCRMA/DAXL/tpAm8TPro08/jVUTN4AAiAWxM28wX7915BI2tKM7DN4dwl5llllc7BusF6FbJeKKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547275,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXIipCRA9TVsSAnZWagAAdAIQAIwuHMBsAZUaOe+zUyW3\nJCqsrCpUb0rKZFuW4TBGEUPp3rcJUzc/OLCtLBM+ZB2XPdQ3iis7o3uZKbtJ\nuJUWaWt19mi5ZbWLxKFeS8BH4/QUlG8QHWlP84gpznGC8bjFb8RRnprmLmhB\nRLql01nh9qYq92yahPC7c8pKdDPSZgDSpu4G0yUbhOcfOrKbJnk98bYU8ImY\ntgGhxC6rc+M7RtWjlvuYjl0P8cT88EKNoNiPgckNTFI8AUJ+zvSezZlIjiEk\n3jSlg28FcvYdMZSk3MwygMapKSxV9PObLb5ww+ywmalLKooq/mnxg2DfoXlX\nc7/krxiu4G8UJY74bK9VwwIln0CF+beCYPOQmoe4twiOfWjS7zP1pyHYkZnO\nZtX1PsULwtdwl7aKjNNyn5/9qeIg7GIrs6kMdHFzMch23u7rah3KYp45KjXd\nb4dJzTTdC1JxbvCI/LESlNis7XEMvjjEOyg0SjuT2K+T8FePn9vTeGKSkryf\nLz4/xGhuDrK6HeLcKQAMyAdOIR9drTmgP6KZ+iJclUdYzuiHjc9tMfc7YgJ9\neMjC9tCsYXq3MCjySmDSTnlQJUoQ6FpgB/B70bOTmZ5LN/f+fbQ/8xl102aO\nEJo+NhIu41Rjj+jzKsUzkNI5Km1wOLxxyKfWJZrxnEdwEmayDDNYiDoCEoUU\nagzI\r\n=Dur/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-4cecf1-kmovqy9y_1616677033260_0.9428184529190649","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-186bb6-kmoyaujp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-186bb6-kmoyaujp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-186bb6-kmoyaujp","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"128d6f83c44eb755996c2fd54c657b940f9a8008","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-186bb6-kmoyaujp.tgz","fileCount":309,"integrity":"sha512-waO1QsOVeKAg4q/bYTIwUP/dNHynCKMnk0Wkd0TimCx0MJ95DVJ4rm8OuuP4EtLoEAqw/xp5AGIogMdGWmLLkg==","signatures":[{"sig":"MEUCIQDPwdu/wZVBA0yMpZ4oj9DS70GuKVqnqJBBi3uCfULXoAIgUarqmI/HbgfV64V37qyF/DdnAAwiBm8hjXeGmX1iJX0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547275,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXJloCRA9TVsSAnZWagAA72gP/31zi0oGfKjceDZNMjb4\nMY48aFtGl8GvF8ecUMlE/Im2gmYz+fANSy30YleFa5nKIBEDE++Ko16ys3+F\nl6q46+/zsgqygLuRjXFeCyPJMZ5h2HtM7FiPANR04gcOmGXGq0qNsUfZ91lP\nQb2LMZ7DHBzd74P6JLwzkLGt++LuxhKySAh+fQX6EWBRGiitq6SdPPM+odk2\nzTHPqUj6c1sMgJVGd9iXKPg2quVhc3Nt5qUU6OojvUwO6b08uu/OjnY5Bn2u\n7/h6muX2CL7v/+a3+gJNF9jOlazo8kdSELHaLq3MZCHEiB9np7jgjqOgeflI\nMjXnBJ+mmtGKlXDvSgTiJO0ctvwQMgKGPwPMyDbiFfL8UtlmqQIsHnXZCbge\nlkoxyrQW4nwMsy2XNvaLO3L661eXbUnk6f8vCe1LagRNV00PBUHDisPPOYOn\nPrOBER1mPW6fQdhM4nTPVFg1v5oYc2dkBr2MgWH2qEgZ+sv0bHT4/jcK8yZP\nS25RxH6eIu93sMAyP66/LXCRjzF4O8e0cf51XWYSdwKHJbcQ/EekS8iENCmk\nbyEHmDtV/NWSNqK/7HuTHoN+gPVQE7gKGEYhxPOOhjPY//ni4p0L61qrtJuo\nTKd77tQVOVvkVaOxfg18hY/2jL1BHoDz79Fi/Uj7cRWTrSottEN4QtOLPsp3\nf/w9\r\n=fTyK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-186bb6-kmoyaujp_1616681320376_0.3618383980820903","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-10859b-kmpcpnlz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-10859b-kmpcpnlz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-10859b-kmpcpnlz","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"545b22c0a5a415721851c73af759e7a8cd67f201","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-10859b-kmpcpnlz.tgz","fileCount":309,"integrity":"sha512-NOXYwXijQUhpnh4Iv2ToYCanJlgvefZkGOGF485ZvOYYFB3Ys8bg3U9JdVw1GsV6gejItQ5Y6Zd6PRn8p3tqvA==","signatures":[{"sig":"MEUCIQD4PFQ8HbUs9aoyf+UcwiBpxD8chamudz4U/EeZTJtXpAIgZ9dfP6xs0pGUJZcJ4Uuv8YWZ14FhZmmyaPjSd3c9mHk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXPf6CRA9TVsSAnZWagAA4lEP/1UsVn+uGdlQu6C1WXF4\nuQ+faHQrygfSlp81dxRAH+DXCC8kWE/Nxal1zJqFoYqv7JJPtSuhWH3pLU9t\ngHLgMDo2hM7abblUJ81iypnZQ5A8YzG0QxR1NVmxDz5KKdAgIEiPDyR4HLhi\nZDhhTsyjgZ/Lt4iFEniRzLNLwcOHseGtfQv5PTW0vXfmjhlH0Oq19wBr0UqR\n7vLoUt5AicEr+r5zTxTJ9SyHzjHBsuVJB/wFMS8QrqHpwRnlt+sDwZyS1Hj0\ncaiP13N5SY4GW5s+AZzPC/zJ3gSEgEU5OGOH10m8Fi5XHB4V+Lc+SQbjMLrz\n1xSLcT30smdeUJfk8QQfs7JZivLAWlPrg4tISCeCiAn5S04JPmnXrXQULkA+\nMQsT1KSCRhXS9hpTGq9sxFF7k04Wqcf/ry5Clygfg7+zsA2o/7BgvBORMIpQ\n6S9GSScslxw9ow6e/do24y43j+MZp2R7spZy7zEnNlLRMzrz5cjEjTf6Igos\n7q5Z7J3qgZT97JfpY01QXbuWdV5l/yHMAJ7yHyhs3eajNN1aqYjUM9SCjiAt\nry20LmzFjStiyHBtTOpUaVVwXAmoCUsIquurSex9UufA8WsKoZRv4Z/a0e9N\nP1bIJ/yyCixCUPZ1GuA9MjjXlDCin5pZnGB9LFMhP8n/XN5vfSDVHQgLBmy/\n7+Cl\r\n=558j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-10859b-kmpcpnlz_1616705529328_0.4145313405559783","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-79e478-kmq5ls5m":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-79e478-kmq5ls5m","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-79e478-kmq5ls5m","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d72b58b9d17e5a283fbb2554857483c6c1f7cdaa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-79e478-kmq5ls5m.tgz","fileCount":309,"integrity":"sha512-zZBuv66Ze/WzHQJSiB9TVrq5+W454h3VzpQX7Zs90Unq0To7ROJjcMd5J4Drin789tambDn9ohme84U0SoznqA==","signatures":[{"sig":"MEUCIQCXSnNSYOkunMIrZaR2/M+ggEDGQftEco3a85C2pKNRgAIgMhrpvfV78tMu2eceKIlLqC6gofEOv7tPoeA+Ecurbgk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXbWKCRA9TVsSAnZWagAAh2AP/iS6rgYjnMrLYlPfK5Co\nfETzU4fCFZmUrGPnoSQWjO3C8+7YMj3vy0pHSzOOcFnTGELZwFlxReamqFwx\nltrvhUoMESFroozX+//Gju3f+RiJROFYFbzkM+9WxrPu43WZfPkzHtDPYbzU\niYa3T/fUQRQTLMpqovL0bfTKS4hZygrc/qGYzibnV6kQXXyiTEhGNolDZ7sb\nuC4pnhWJ08gx5vg4yqgWapNU1d/4BUZMs2n7t3KeCFyVt3pWAcdUuwBY1CaV\n0SlkBJPbIKpOoWzuZClZZx2eIGkRhi5EVJ1bKhr27mmRz+lUgpAcUhELYD4M\nB3/MwRpbB7iSLZjA9a1/Wg4WuB1Hhh9WlPz2b+e3b5Lf75Qo4gb1mvWwC3Dv\n0XJ+ud+QszG8Ns1x4uvoh6Xh46Os8I2w7QPcJjE1tH0yPbYpZTnOJ+lPrw3S\nkt1VzYgsIPOmtYrBw5AeyPBQ6g8d9/EheWjD4dq7UkvfgwVTJix44XXTtHLg\nygsvQ4qvGCzOGV8ea1KF3Ae2BceBRX0+AHgSllp6NIJCgHN7X6MOSIoBWugs\nOUTStTSLv7SoLrdOFdrkb79OUkMdzEVxQ3YFxvxmPRgagwCHiShHUTkewXDv\nLMjzk4ANvY3+rKKFvFf6v6M6AGuGkPZg4ZAIkE1j5Ls9wA3IuHfzki/Ppvf4\nzfis\r\n=BMVQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-79e478-kmq5ls5m_1616754057524_0.5917157303457414","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-843d8d-kmq7w4ji":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-843d8d-kmq7w4ji","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-843d8d-kmq7w4ji","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0cd2da37f63b459faf823ce07e19dd07fc707c89","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-843d8d-kmq7w4ji.tgz","fileCount":309,"integrity":"sha512-POtTO/M2sh/FHE9mki2/CPNwSN4bar9GG6s1hsuY5yYpeVbq4FsnKYEjtVdLieKohVfZt70hZ5qF/5x0uRkLJw==","signatures":[{"sig":"MEYCIQDRR+YaJrKDCha3Go3fXVsCTQmzNGCCuh6auiXS8C+QwgIhAILRyNXWHVgxPiKa29DVRn9ZuzVK1ZTHusqdidgxoJNc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXcSMCRA9TVsSAnZWagAAlTMP/0CSDhb7Udg2lZVbCRI0\nFax3oFwNnZmgv0WMNXt2WufLLAYrN0XtTaGjvkp4H1dVm57STXXrYG2NGEhC\nuuRgqFZpPxBZBcjYve6EbLOcI1NCuRSL3pnB4+a0QTdE0Km0PdmgTPMWWdZl\nNzk0jDgHemocpc4/oMdoHQUjWnptjBde4uBvaR6YL+Bu/dayrgQyf7GILU0+\nStwLhATNbr+hhkyk/o04Yqb6ulnkgUVT7YpPx+//OicUQvPUrHVidxj3gWl5\nniDaYj1L7mQ1PKqw6Is3Wwv+bcP8G6SZg4VkCtNfjjUH75nVBKWTbFnw7/bm\n+0qHd4iR+k3aGgUq8Wy1ED5BinoAPjdeMSV9qskIuZktmUgn9Z5MM7xFq4/w\ngYz16koPCEC52gWRuzoNGyPnOZCIVa3A97LLT7j7dk8vBtdJ3sxW/klJuqHG\nOzhhbAQjL/1QLWkMnqt54RntsW+BpYM327ajBs6vilySPe42wAIKgZF4lEDW\nliAOJ8/c7xB0KIg+lSsC3jPzByzV7BDZpKN8fMKtbYhgnWWIse7CGMhbtmJU\nmr9KMql+tS1q1MwYFZroEPaIbYegxzbW4Vx6h5+7WyCwIY9Dx9+ZPvOsD347\nS0nHU1HZfXndSlUpWZrRv/fj8xIDr5jd+0M0qNoubyM2miqV4/X6QDDLhFHA\ntl2t\r\n=SbFS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-843d8d-kmq7w4ji_1616757900391_0.032311122015822535","host":"s3://npm-registry-packages"}},"2.3.1-hotfixes-dcf73e-kmqaccoe":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfixes-dcf73e-kmqaccoe","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfixes-dcf73e-kmqaccoe","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a26033a6ec4ad27177e97a5061b4d4ca91e12e8c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfixes-dcf73e-kmqaccoe.tgz","fileCount":309,"integrity":"sha512-DY8V4GiLMeieOWdV7HUFA7zJ1nVetWymuSFO5lA3XzqXn+M0u+57UDlMDm157pJ2LacZxTmIJTVRUio1tHBAJA==","signatures":[{"sig":"MEUCIACGRgUwfsA/gQaOYQmdLCEhIVmddGzlpZMLk7N54qmJAiEArYtss5CGBvzogevZYH7YNs1NlDY+PvpfOe1Xw5QiKR4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXdSdCRA9TVsSAnZWagAAWUgP/A0WgDeAPe3d5hcE4pfQ\nbArdS9E8DKvr0u+4Lf2l1Cw+OBNy26uii0iP1bOdVmVc91IYhWooAXfGI3rB\ndImIUTZTNsREG0RizafPcsLd8YQOZR6h4siP4FmvFDGoy7AwDKy8ZZ3Ym7gH\nczcMaouCELaWNkXjHddRmvvAAfg1bqHU/z8RxXFApff2McTZPlZj/BnXsCgv\nSo1XhhyxkTVhR8vTFLNcetARhk5TOz5Yrop1lw+lnvQ3zZmrHuExiLm2t4Wk\n2DCpUEQXFscufpWYtFR3yNs4ilxkBg63inIWvp3qKCTkPqR09T0YhCN7L1cS\nKXh3dGvqOGcNfOpEQVKv23v8BVxV83D6q49pj5o7Qbz8ncb+NglxyYAorOEE\n5BWMBIu/e3tHNslCLaf8uMV9MD/hgxF2GKiso4/DBB94kKjj7NupxqSLkfhi\nmTfMKo2HcZjmuLER/Y9R3RrYBigIp24tB7fmX6tQu1R9KZgeRRg2LPy+6DAY\nRFNHQ0aOlreLHrlpKJGzHwDdt0gUCCV8wmJfUz4nYNAkAXy+aL7kHYqWt7yY\nvoUx3jsgilH19Uhcm44r+sJSs3YMQRtk8LrNui0K2CtkcU3afbG4CWbDJQ3u\nQdLCtfjqa3Fr0JNjMIa/JTPE4+/vEQ5gPghoOPpaFVUpBDH95t/Niyc4a9i1\nhtlt\r\n=9MAW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfixes-dcf73e-kmqaccoe_1616762013376_0.774768858341967","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-9bed67-kmqe3w98":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-9bed67-kmqe3w98","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-9bed67-kmqe3w98","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7b39c11b65d6777de46ffc9c709b7d1c7727858d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-9bed67-kmqe3w98.tgz","fileCount":309,"integrity":"sha512-WCp1G6HGz8DWGQJkTPRxEY95TB+wCdEsfpuD0GmoMVCGcMAOfoAxWtfrgZKw8wiQ7Vyii/+HKrIkk/DeyNW0tw==","signatures":[{"sig":"MEUCIQDSKR28v4ENqeKd7TQVbcbqJ3NflaT8hS8Y+DXDCpTFCwIgIciqHSczx8lXh/NDmWy3VUAkQ5Q1kvRWlv8qCacihEI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXe1UCRA9TVsSAnZWagAABYMP/jKpq+pi6SLnjhktu3ct\n05RT1/lc6U2UmMkvtq57WhOA5YlocPEfqD/rgcJfgGdCYGi7XltmFdZi5ay6\n+P8tf1mJuV4iHAv1RfDwEHLYWF4VUFWW/KAeYlaIo8l/wyYrvuC2xxNl8bdr\nCWtAPRWnUSoRtexyImk6naKbiDACAqSbNb8SqIOEtTICejQZjyTf/7fUUvzT\n78ywsZUcpTSFwUUTpIPV9/tUiYlD9sg2vWf3TET6/39TrK7eKqXh6yDQ6EMY\nVG57PO/E0HK5mU7618D4BzWx2/pb+Hz5QwZYObOTvohX0sVMrV3i+AcZ17FE\nmFBYrNw5VC0LmXQLYf9W5ejZDSNmbX7y7kTkwIF4NEwQS8iSI0EiPR8KXQVk\nye33Abc2cF63vzFQkLekVTJiSGivZZItBFbVMVyqJJzv3qvKiCW0ZaAPs1JC\nGygJWGa4fhQUn8C88/jJoAOjRIcIHTqbPYQV5ZzSpk1EvElYIBBSmFCK/ooB\nIPkOLuULubPm4NVZtbIol82XhuyPJOxhp0iWIP11/EmniMkzogZZO4bY5JXb\nJLPBa6BiZiTIkEA5dHQP51NZCqP5MKx6t4csbPIKGCLtlS+vgZNRhNJ+IgzH\npOydCo8h+d73ofRL1s2Au2hV1OxyNWp6WyOp4L5eaevQ7xNo9J6eJ3htwofq\nyENP\r\n=5fCa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-9bed67-kmqe3w98_1616768339446_0.46659064132429573","host":"s3://npm-registry-packages"}},"2.3.1-hotfixes-325084-kmqeqxdo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfixes-325084-kmqeqxdo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfixes-325084-kmqeqxdo","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1ce675963a9c880366a930ee3012a806eb00b156","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfixes-325084-kmqeqxdo.tgz","fileCount":309,"integrity":"sha512-EqFSoIDNXfsmPne7g37twm3gdYnrGz8EDsOpguSQvyY9okN/bdFYX2XNUW95o/wttwudG+GsG8h2r3xJH1++RA==","signatures":[{"sig":"MEYCIQCsWgkGoCLfNgtiVWW+/uZDpHF/KVA9R0pwjysp4QFoIQIhAOVLksn5XdU49+BLEPSD/DedX+jf0fM4Lkwqv0jgMMbd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXfGFCRA9TVsSAnZWagAAto0P/AxGGp6icQ5h1/lRTX57\ncQyptcMgs8yfQn9pzBsTSy1jjeiPMNzFmYUUnEasakSwjnmBptwNRG+OalZj\n56Ty1QU7Sqp0RC4M85hPJReq9s6Q+ZDORr4gycOj0m0KEssHkeMC/Xu4abeb\nL4PwIDPy+Iect4wjoAUviVsdi3vhi8YOSu3gXLoTOYoAT8zDMr/1EBTN5ruI\nCwNBFe1z/S2TdlkOESheyJUaCugi4pLielV5HKxHEd8nxsv3w9dE+hpzwXiw\nx9tU4P5HxvqCW06ysXHA7yAQOezB8/rdiTtlx1ONUkIMM/zAefDnUBGiL+xW\nnwyxAVnCFMHB85HitTty/OLAJdT33vMnA+X8UHpOh1LYLKJ45QigcqHFielU\no0VuomEsSWzszkaRYsqlPX5PVmea6MmCAmTti4SWqjgedKjQ9ZRiBAso16+u\nI5nNUNA3rtmh5FJehR4yZ3MFX7PajrntXRJgi6KSXbgkFCTUXSc2Ts7TR4Yp\n9iN+ss+CgcAkoe5ZHTgBl3zXx86112eF3w07hayeXkCmuyWXUVkvQI0UJ2oy\nqGi7GQ3ZQ6GB16RYsHq3HqKOmPaRtUIq0b3SMRGTZHXu1ZLMBJOpG7aM+PNu\ngzJPkefZC/gNTnRB/HAj7llmWNexi0aRxD07yc81BlOVqze4bOXb5Nb4d6/C\nQffm\r\n=17Ym\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfixes-325084-kmqeqxdo_1616769413431_0.40195265007171854","host":"s3://npm-registry-packages"}},"2.4.0-feature-ad241c-kmw403zr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-feature-ad241c-kmw403zr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-feature-ad241c-kmw403zr","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ccd9b422f2aa3a6fde205c0866f91c8b2cb0848c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-feature-ad241c-kmw403zr.tgz","fileCount":309,"integrity":"sha512-+UlpWqfiLXSGQA8rL2ecZ0MgI6BidwwvVCA/jXIG1eCpizP5c3G2w7V04EAdzXzbHFoBFr95Ogl40Q0a4bhAQA==","signatures":[{"sig":"MEYCIQCgwaTZ3AbFZQtZ1LB6xsDu4/PmYS5uKrU8llgEwjXrQQIhAPVhC3fbW/x+5aljdu57EEZJbZEnBMs7ue49253ajIzB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYzQyCRA9TVsSAnZWagAAiK8P/3MsoysLp2vPBI6rKHE6\niNFBOtOZjzBrWjKqk/htE6GF65QtxHJvBD4+Bqcnu24000+o3P0hGYka3Ssy\njSjKDna9wyoKH6hQIsHEU5IYJs7Eic+LjLMIM2f6CRGwUriwbxdOSrDceKvh\nQY7iVu2QxLYsdKZrm3rkRaKDJysDsbkVLBN1hMLkdIcS+RvLHQuus4cdmVOw\nambT8xzWjkDbTWaicd+SA6Cw3/Ek5Xy3y3MsjF0TDhQOjcErVxBEcSvYet6P\nRiW8aTl+RfGiy+nOArPKyBO/vOEqlzwpQYcCbHp8QJVZD+OUhqcLw06NJp81\nCkXfTf1b9y2R8wnY1vv1cvK8n7SERGLixxPdFGeDo4orNUhkh0aSrco8zlzg\nw7tXDjB5lfVb+fb3dJHgm7ysipAb3zXnh6t7VaViCoeVbBjcRUYn38LVbz+O\n+cHLtabUoKcGSJs4natBbUtNEzjwr1wwXH4XZUt4sSMClwCbpQ8LNF/biPGu\nPcxfAv+M1SLevGyz7mxAcaeWybQ1FQFLdBmBdl9uSGDbGg0NvOt8EAR9uz7f\n6gxcuj9dBI1D8BtWkAvqZyn2YSmxQZb99HsnE2QUGJXT3Sf9ZkRsqe3+Kp+G\nnrFJ3Dn3BbOtiaK9gSNGy2COLSiaGhBtJP+pvDCS2xORjDX/dJGnRWXa6jb6\nNMP6\r\n=vA3Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.1.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-feature-ad241c-kmw403zr_1617114162284_0.6507369439206339","host":"s3://npm-registry-packages"}},"2.4.0-alpha.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-alpha.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-alpha.4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"477f5f8d153160f18f5a2137c50f08e60ca09f98","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-alpha.4.tgz","fileCount":309,"integrity":"sha512-vuLzMX8eUh9LOEqClHpNZBZ70myzE1SMHMRa8qyK1+IPZyiWmlQEoCPqgzfSjUAJL3tyi9Z3VraGLLYOhpNQ8g==","signatures":[{"sig":"MEUCIQDNfhT23RZ0QyTHnKsydkX65YE8PRT/Ddy828TzQb7iGgIgZWHK/Lt3PnfYWYDRkbExh8mXwaUtxL3ZeezqOxRBEo4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYzZ2CRA9TVsSAnZWagAA3eQP/AkISqATIGHq0tneMPWC\n9Zy0p4ktp6XUxDbT3awmQswZL1Trjnj5X9z9rAeRsq0KAZFYpj1Xtb4ZVwKm\nInoXGS1C6Vqgl5qlSGfjH3XW3XZ5lXVBsqW17lL7H2KGMpra9ggpKdYhzrC5\nWPGrqFtlg8jQX3+HLeVItNJ8F+j9ZBCUrE0zmSJXZ4Qcu2R3q1LVHj/b8M45\ntt/Y/5xmnRFv3q1G5gI7RA8RnVO10J+ESsZG2/7XiZxkuAbe/UTYX7ytPbnB\nwbFPoHpcnbzxYgpDgd4Fl/l3755uwAK/C5SPJj3cvPN/0/QspjoHnZvqBX07\nBdWgjRXqc9bLKx/2jD4nF15GDxamDxPNa2Ut4Zk37wxB1GoLkK28xVYRC+h4\n5HjBLCGN6TaX2cAj2o920pCt30VSit/8Yk2uXjxxOoT1ZaumaKBFb+IgbZ3V\nZAKXfs2vrwZtILPxOEuxFWQNtLfxq17BYYcdm4FltjmufvPm4oiTeoxw2Q/f\nTufBX8JgID4i8eKSf3RHBTez90zYORZ85IIUjjwZjUNKx1XrgpHX6QgI6Rkt\nS+Ezb0hvuHBZtFcX2AXPcQybPEzZwUi9x3LUWrUH38gc4VuUre90v1XXPAij\nmZCVuzyJM7wqmp77uFFig+QfSSMlhWLKngxSX/Pgl6l3kObMezYhOivuayHv\nb2d3\r\n=QrQj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"^1.1.0","@atlas-engine/process_model":"2.2.1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.1.0-alpha.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-alpha.4_1617114741794_0.30477093206465455","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-a7c467-kmx8rap0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-a7c467-kmx8rap0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-a7c467-kmx8rap0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6a3ca2a6fad19ddc8938b512f03a8bd57135c057","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-a7c467-kmx8rap0.tgz","fileCount":309,"integrity":"sha512-WBB1R88Q/Dq8mPfVhH0kQw8tWKvBAS+uNhBzKsX4NsMncsuuY7ycUdJfNVJ5m+0L+ZsWs+Prt0JObt9iQBYJFw==","signatures":[{"sig":"MEUCIAuBWUQg3BNmFHWVBkGKien8AiggSPTHa5HOOlC7fIlQAiEA1XPxDNm/mnYLyJ7+rqm5ZDE2X81ly3elPJNoqwUmHoQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZD+aCRA9TVsSAnZWagAAnyMQAJcFQ15518Pzwugca7JD\na+bEeKWveQQmluvmMKU9HqunnRohT9+MvrmIKMbFtWIHaCdItDAFnXh/7HaJ\nDcTuZhPH2SvhfgxpmZnb41HbbF+kT2AGPjgfu51q+ipWoWThRC8iohrE5aFm\n+3nq62JhVjpNxi4WesX+BvmNsPooNjEZkms1s3aduG/xe8a0NNPyWuErzppJ\nnwsnNESGO2Z1qU96Ha9OkriJcI7bh7Jk137mtMmgZ2XjRj7GvLEylI03b1qJ\nPhMYK63re9SeEPjVpAB+SqK4iG2zSlUBOlFdlkGB+NXJcMoJXTkln2g4unzd\nsDEMXiFM3XbrRRYz5ahd7Ox3A3UK3KTN67jJSs1YaqdC1UVQ6KvfiHQX+v83\nzEcTQyYs1pXfhv3zg5jQLBbR7LRoOV/Fd4WbMbWwjGZ1vYC34THGW4QYU8p3\npt4lTXGaSjajF8eWo/gUEdq7ulXyA313p5aSkvYHy1GgR6biuewPn9UiAOMl\nYLhbgbDuqcTAo6sKY94kFnqv+zzMoDpd2c7xAVcFzloF23ETMYQtOx9Xt9oc\nwgRMJIOC9Yw/Gpi1pvKI/lWxzomIHTEgyCUfuyZFtIM9F8LmbB28TmORNMpx\nsqEYXsWM3LHHxoWzNRdvodrzyH6fKkOqWvzZ5YsoQDKLOsarnAW3mNcqcgPe\ncMFJ\r\n=T7ti\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-a7c467-kmx8rap0_1617182618107_0.737398834629228","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-49fde3-kmytabrr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-49fde3-kmytabrr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-49fde3-kmytabrr","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"78458fc6a772e29e372f058ce8db36c0cb4bf9d6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-49fde3-kmytabrr.tgz","fileCount":309,"integrity":"sha512-vBB/HQXT1Mr2YkOgP9pZQfanFnuBYMx5kWoUX7yZiWEr7z4Fnt3lCU45y592UFWYo4JuleDrGlT0vfXfIBfAng==","signatures":[{"sig":"MEUCIHfHSa/EysAMhxRqeTS9SHjJ7sDUs4UvBI6TqffQYfSyAiEApSo8s+e7uRa1RXsczaA7qikCwdEuD8PkeB6tgDTWGr0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZbJ5CRA9TVsSAnZWagAAwuQP/3mDukQ6oJOP1RS06bQR\ndhszc3sbznL4V+dDf6WW/ACXcoozdTFBpIN/9k8GNR82WRSapbMtXFl43hTu\nJeFsa3lqSl0vGxJWd2OXggh7GlAdzr36TfFDXY5XpeSAjz6nA67rUxOMj1dJ\ngcCmNBfg99eXIDXBEwneSmv4u0MYYomYfroj6JCpUXs/YO6FkoHFJfwBkC0k\nTpNTGZO+I5ZImoe0TVXTQCb3yUsbmwg1CpeJRvM6LNrOaE4k+8Zbh6aJcPat\nLb4OX3iqfzk7RuBF1YmXUVEDKCFkX013pl5ElPp6JDj+itsF/j+/SaVEcghj\nlNGlnLzTBgY6wsuQM2ikOg1qdlMfGUp6RlRZ+bvSZLL97NRQxFHdOnjJU844\nUjl8NG3yl4UWSOdvasFyiwgxhBqxxIdHpDm0wzlynTqzYXGtnYAqYyvsZQbx\nXkpRBUl18yW2gS0LCeJLcR84vI//MmN9EoTHjQnyLZnbW8PH10llIs7ChGiH\nwroE9bwHUBnW4cvX/57c9amyalYz1qcchO/u42toSiyeb4281Jl9EE/B45Dq\nPKt5jsx9kEz2bB+6mc/IFvxUxaE49OkR+bq2Qcfk0wg/jnhPwnGnSfy5oCdI\nE8Y/7hUufRXq/awl8Gb6iuqipDFTjMiXsGXQ33Lk6TyBvoqe/mwAe+O8M1Rd\nIDR9\r\n=FSS5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-49fde3-kmytabrr_1617277560545_0.5153282210340258","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-264426-kmz0coxb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-264426-kmz0coxb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-264426-kmz0coxb","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dd179ff8fdf01f4e963278ffb6aec5e2ba67a85a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-264426-kmz0coxb.tgz","fileCount":309,"integrity":"sha512-bL0oZiouIWJihPCw0bpOp5i3/ngfFjmmw1coEqSwpz8Y6ZDbDBBW6TUuIw6I/4Wvw39DNa3H72Sbk2989FUWKg==","signatures":[{"sig":"MEMCIGgKpdI3ONiR0BsXmYUQ2WaXaBCLydZUP3R2zHFk/NcnAh8XaZ0ooYv4/VinAizqZVPafI9+TjTTmZksZm8YUeBU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZeDUCRA9TVsSAnZWagAAPEwP/Rs+ysysw5S07FgpguYK\nI/uQwrPV8WZ/xO5UZobU47/xIhtC27mScE+6j4C/daX7+uIkS6gZeZlg0rWQ\neuouWVmotVSwhMUM3r8qOuUS45G32soxB/GYUGgjiOaN2m5B4p7oyrbSKENy\nhBqEYi73O2Z/yJImZWw3uCQcMMpdGlGKSAPuji9F/WKvdSPUroIcR4P/OVTm\nu4aGb6uat/7IAlQPXQdq7BVHll8oR1N4x8/6QkeWVfUCUz1c9cH6vnSEnK2o\nPdmFQAsWPKHzyVLOC92wd60Yn5O5CI3jz/SuykUD6Xb7GMMyCMvnRHNk8mwV\nHUAq3MCUabUiqO8yt9OVpEjyECWWibYf0ssGzcR2yNffxHrzAd+N+KNhp8wl\njvnaRZp66oBuWTYGab1+tpqHr3Zji7JjdxTVuvby18pKh9g5yAZpX6M4csEs\nhK0BZwadTd1OhjB1X1TylgBsGNlBqe2S+sdOJhDLXONbzV4UR/sHxOZDmRdC\n5jlvcmNjrAijfHFrv/Rzv8RWyUqHR/iMHUcZ0PKEiQA36hcrCBOxRw9lH71H\n1UIPcpk9oJ+uevnkDpFZS1SWuXloJxHK6ianterfmU0wCLl+BN+HoDzluFpf\nhhM4cgwlOK84gxshmo6MIfwRMAPccJEKVocJbgulyZzHB6VGI0v0L0uPYYls\n6ydv\r\n=Ni3/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-264426-kmz0coxb_1617289428347_0.6071696911184374","host":"s3://npm-registry-packages"}},"2.3.1-hotfix-d4f08e-kmz134zq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfix-d4f08e-kmz134zq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfix-d4f08e-kmz134zq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cd3527076db7adeb3a286b99ef66e3a456b53b66","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfix-d4f08e-kmz134zq.tgz","fileCount":309,"integrity":"sha512-XX6xGbNnGtc3ehXVnIXTFs8aBPYBKc3fTPYX2giTfcktgSDcE0zzXukPtI+stPW9IGi+ZmKWRnNqOlIe4RpoMg==","signatures":[{"sig":"MEYCIQCGYdjJGoD+Rx7Ix/0qvLZPdj6C50E8B6rwcMVg7tv7pQIhANFlmKG7b2xLVVdh50ee2BzGsmXo0RdUuhsQwsUAgJjh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZeWpCRA9TVsSAnZWagAABGcP/jK/MaDOTsoTTrysKJbz\nCzKvU5WadO6zO0n+NEq5ae9Wx6Jh0XN76lgsKw73412Dg/xVlHPqDntBgwP7\nnb0HdkbF3sWxc/JBsnvy777LokfOL9YzcQhglSvDneV3e7gNBeuB7pEl7hGo\nqQCMhkDj2KYcBiZOrUp1PShBo5TMKtubONE8vvlb0/N6RqkteyRXZ60eTVPK\nQo/arniWYvE9GyDWcIdJtj4tUur1RuZ+ySs72EdJLuhwcRx1GJE0HliRhZjc\nhQWttPe2WKJecUPTYY52aPTBoItYoX7GoMB8Dtd2CO/BmhGiROR1fgr39vqP\n1QifGwJYiRLEGEPR+nKcyFPDZQWnvs5djQRLp/WXlD9zypuR3dVQYImO8ocj\nl3+pRn7hcLWQWZbLTE61SbhGJ1j3xNQebwExlLEtFslrfxmFQogwtpTIBLl6\nn3ZfgwbomuWWHTYR5wF8wo03Dn+khe7txJSbOt7cvO8zZvfWCWX8yF+PV9mT\nU6WaY5JkDCwBd8mbbZbZhvXWEYCxZI6PWBySxr7df/h3dWk3fhvGrOwTbTs3\np2aTcuTGUxrSclISShDvTbHPYUey8RttWMVs9ScYQDGX7AV0FCBa265Ye10/\nsaoVk0rEfsKQhAdY3R3WutiBQZkoCac8GW/cQcf5/tP5HbCliHRuAkhDMlq+\n33ph\r\n=9geO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfix-d4f08e-kmz134zq_1617290664644_0.39063871080885737","host":"s3://npm-registry-packages"}},"2.3.1-hotfixes-c3d3a1-kmz2m70s":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.1-hotfixes-c3d3a1-kmz2m70s","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.1-hotfixes-c3d3a1-kmz2m70s","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a16dca1f4077821f97590823c1b0ae8643824696","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.1-hotfixes-c3d3a1-kmz2m70s.tgz","fileCount":309,"integrity":"sha512-hjx6dsvpUPIyyVTOfWKvueI40yFwHdRwBqi0YDN1Q5cNR54tRjVDrdPVKHBMzhNbb2V2arsPm+SU8P4+/8EYgg==","signatures":[{"sig":"MEUCIQCdEkSgB/qcXQMLxLiYTclspDpZP/C0k+F5lILUInVeJQIgL4yo4+OPklb98C2WVEWurkUs4EsX7ATcNKeVVK7E+rA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZe+vCRA9TVsSAnZWagAAjD0P/jxQagDIthmcQRHdrqij\ncaJOCSR1PYBsYfVCOJiuVvJSQfgxwrDRDe3xoX9FWOIVvWAUaTXcql3FdYC3\nXR/FlHzRo4ER+qvj9G5yW18j+yXikDNTu8ydannPc3xhiPluObsM3mYtTFCW\n4CW7OIlB/B0RPEzJelqgdSS9bRJvZu/OnU4gpCE3GcyLo+VlNIucjORgt9cE\nQgqQbilBn/tPaCfGtgDa3GVa1iQX536a6s5QJg4Hy3z112CGVfPEs01wiS2x\nOMJLs0amdrPrHL8VZRc/kzCcnEJp5tfH+FPuEG+RKzZYvUMR4yIAtta8sx7V\nQzmvnAG+PBc6NTfJ4/rEEBrPj4aU9uteNUHyPx10xEJ+WTMHm/bxYdqo2tHU\nGAjqILjK0aC3CRIeoOQ7iqtq43CNP6eNZ9FAmAAEY8gC3XcGwKM9230MozZJ\nwJ3+Gak2hsgEIplFBkcJhnFSAYS6LtR6VAzEbj06UjvInmXViKlV1Rryvb4I\ns72s3NrnFGKtDXXz2NHoo/lcJYJ9Abtt+dXN66duDpArXAp1lVafX7DHg4o3\nk/as85wUSPzPkzeWG0P88oUbA5dpq2bGtsz+nA79rgVp6WTv4N+H90m9B2rR\nV74KcpMoQw2/ii6i9n+gcmZ3vAfGry75XmssVkx17uHMDRDfBjNk9UfJd9Y0\nYQYO\r\n=+qQl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.1-hotfixes-c3d3a1-kmz2m70s_1617293230749_0.13874287195865898","host":"s3://npm-registry-packages"}},"2.4.0-hotfixes-ffdba0-kmz517ma":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.4.0-hotfixes-ffdba0-kmz517ma","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.4.0-hotfixes-ffdba0-kmz517ma","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"21a1318bbb20fb67bc84509372ded19165f56ea2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.4.0-hotfixes-ffdba0-kmz517ma.tgz","fileCount":309,"integrity":"sha512-tCj+HeweZQsrt7NqJn7VpVVPC2jZ41fwlSY0KisxdzxRrApg22mkMWN0KWx13lUguaRZRG8u+uQG8PlQ3bZAbw==","signatures":[{"sig":"MEQCIH+o5/GKcSMeWAahVMjMBgCpZNPWDXVrxgu01UkfP8q3AiB5X0ceNSYDKeTAcexzGLTx5hfQPf3KrTrGlzT2ceUwkw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZf+PCRA9TVsSAnZWagAAtE8P/AnrY7/kmT56s35gh/My\nivzLPeOF2uaPiIEWQywyR3cr3sXWFPnetG64Ib3kBkT28CRPuYZQ972Kgy52\n8J5xNFqiBB1o5W0k3N5l7P7K4+TsDJMld0uwTdrLIZfc7qx62GK87eBkNudp\n1b8IRLX+2Ot1ZQbqhTFgTtNYVLaC05IH/8LpN7g2IaZvZMI34R/9vwjeH4VL\npufhzy/GqyV5CKDpKrkw7wzLmAPn13vcaqiipiBArVt5O8piT7RmKByVsorE\nxCWoANJM6nkhhZzh7TWNeknqqDfm4XxtoemF/OC7nZFNCFd7AFiP2Fo34AUY\nFqxJNYfxarcssIJX3bq648PSzrfOVUeBFeGU3jMT5oLdl3sgolYKycLimbdC\nHQYey53GqCJJXCJYRmWCr+Je1lwb06koVhi+T5k0izBMuguyoQ8iREtqyH/4\n/fLIs7USAYoK27YQa6j2x1N++2QQSvJNoiWxKOvNh//ubH6nfwPzoE+r9l3I\nj09cxCRC1IDQ2VDZ/jb6dyblZyVj/TTNyzysm7pIXqzdr0mG9zMG/8dlq2+M\nZ/dtUWG45zjsanUbkm6YjVBicjg/7CD/D4S0edM8U+rrWmk0IqWwoSvT/bux\nInY3oM9B3hJQjb8fmML+r+b6UU3ipA39bz5e7lWjGY8qBkMIxzIaXH6dF0Rc\ns9PO\r\n=LndP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfixes","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.4.0-hotfixes-ffdba0-kmz517ma_1617297295135_0.05955138960178363","host":"s3://npm-registry-packages"}},"2.3.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1b058fbc1cb3d09b99774f31a741881e00f2a646","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.2.tgz","fileCount":309,"integrity":"sha512-mNA1yAii1ByqMC7jYvL8s+zKwukt4sbAgTIk5f4uOK81TfFfttdqiuMp/R+0K+FbdCkltVCVfZN6ubWCoPK4lQ==","signatures":[{"sig":"MEUCIQCGYqFVvIHeEqmH5ytXFP/EFnjojNkCXYk6W18s2c693gIgeVsOJHB/TTQX8cBvH2xlsL+4xi9cM14xWkZnZLNB5fw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZhT9CRA9TVsSAnZWagAAELAQAJCCh8Lkplfry/lN3iHf\nM5rB3fDlkQ2eKvjzHxrGHC0BDDLIWTMYpXTzBBVRrRcCIRy6s2Jld7/6nT+z\nenjd965KYarC2/Nv7S1fs4RK+47ITxW9adatFhhTo8yxppugen+lcAZrPABP\nxV0MzFMfoMuZwiwtSm3E2yyC+08XrjE5urcnFRMvB1cU/mMbTyKFD7/zRTmZ\nvvLVD/DMO2/HFIF9HNVmxOokx94nLx481Zppg1/rhVnaWjeDDGyxfuGMRBFO\nR0JUaTnliilTtoxn3x98PYYBdPTpavQKuJAmctjOEm4g9uUenAeR47iM4eWr\npFbNC6gyFaEUUgsiqgbT4U13/iKtDV7gks4Dv9c0CkVzZJCCQtQ0/tlHQPvo\n3Q2J0TAJpoErfj+0lynfWvqk4jExuh580yvUslWV9UajFO7p3oAd1TKqL38K\nzXROLwY2sln/RfprVL5PkrXytvU1xLhabs9SVqWq071uoP9yvf7Fjh6ijxt7\n/0ICmVQpTGZZ8nJLE0dAwyn27j2nK8zr/UDFGNk+9UnIxzZ8cMJ2ahd6E6cT\nuPyWQWeeh2M9Vy5iqzPFLX+a1gImdMzQJ1RiBg53NMB/MrwF6a7t4a8JWLCZ\nn2VJ5cXD0X/G6QnYMZuqdV8I5NJ+o/LQxTXrpR+YPJlaEJChqFhPw9X9q3V8\nbhIq\r\n=RHHq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.2_1617302780328_0.5970048572603166","host":"s3://npm-registry-packages"}},"2.3.2-hotfixes-d78237-kmz8mvp3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.2-hotfixes-d78237-kmz8mvp3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.2-hotfixes-d78237-kmz8mvp3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d79d4089b835f341cf6a8ea95ab1cf6a439ef96c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.2-hotfixes-d78237-kmz8mvp3.tgz","fileCount":309,"integrity":"sha512-4+E28WSTg0+6k8avyCU9jX3I9emBDWzmAC8CeKG4oifKet+FYXoq4cV0MGq5zM5lbk8ufuisSwJqlgqBr0FxBQ==","signatures":[{"sig":"MEUCIQC8DhCYuaKsxV5oB8y43Xin4/0rE9KYnpa40ru1hNJ1kQIgHVKr6NPWtj/e0o0BsuFVXEOUeNQwFnjYcXvTtgRxIXI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZhcsCRA9TVsSAnZWagAAqf8P/1DfFuNt+0h7zCMQbcdA\nEadSV2kjcatZrhf3SHdRNK5K6EbO1cVMGMKLLWBENYpxhASaROl8i58ad/jy\njFiNCVOfCgHqaaJ+JbJUBKlLYtaljn8NF90vPSPDG+/R2whwAj/i858Ve1b2\n2mf4m2nz1rF3DmHQMAZ7YVx52DzQs1H46R4dk9lC4xD90al+kGb6e5ZqNlKo\nrpMWQ4+aHfjI/d98LdvhaS/VG2sWRopm/tweNBHSobD7XrL87q3mhIm3zVKQ\nvV6lqqakIM1smeKD56pqvK5UgHk8yLOGYQPqTFTRBHNshGekPMXDJPHnHWQs\nMxqbW/JNRHYhOqN7+Ourhmo8DUeRwePTa7mvpEBGpGpfHgRLzyj9IrfgsBnG\nDghOntSzKfKEztkMAx1YzGa7QpgFuXsS7u6zLysvFkzRyn2jYU9hv1G9waV7\n0JI6dE6qlwL4/3UHhqvz3hexfdWqOSqZOHbqN53k4JHhPPefZ9OwjE8RmA8a\nOXAbIMX8IsRfmmYJ3ukGMMhEv4TErqckO344/ALASXlu4UypWo8VTQFzR3iQ\n/no/zmSwi5OwSEmyROl/Sr3lR4V/S1jptCFFzelHkUNI8df0NXT4tGee/XiI\n/0FCv9UwwDGM+7rPpAXUZycqvtXQE8p2i9vq3GeH6L5iKWMV6LuOlu6afm3V\nVve6\r\n=XSS2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.2-hotfixes-d78237-kmz8mvp3_1617303339859_0.2715617744840142","host":"s3://npm-registry-packages"}},"2.3.2-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.2-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.2-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"355450ea7e6514b80586300baf8719be74bf3829","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.2-beta.1.tgz","fileCount":309,"integrity":"sha512-eJFOxit2hj4LrCz0X000iEGMa2GUZozR4K4vC6pQgkc39Wx0A9aTn9G7KHegopSrM0Tf1rmgst6kQGmY90O+Ng==","signatures":[{"sig":"MEUCIG7qds+YbO7dMrHLmNRENVdmT37oB5Zm4ZxHufP6vh6BAiEAjWEjqUv5qdRVVrNJJLbcPgNnmiQEl9xIgG4cptJfZ38=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZhicCRA9TVsSAnZWagAATVkP/1Etuy8KQJYkf7CfSwMQ\nAanSe8Sm4gle7WEfXtfL9i2Ry0s4lroFs9fYfXTHyZDwIBqjGsMvfYLmpNBS\n9xbQAK0u3uIK+0FDOHoHv2mVfIwb2McKsb5oaC5WeS5iI3ATR4kaiybub8q/\nHzbo/AKQiJ2ELJCBRuWiu7W+aOCkTn5Tg/+JI4qf6xauT9Xchi2MuRZ29eOQ\nBrZMihr5UWaee4+/gJSKoPK9/62DZerqxQelPX9PAyx1iiz6N1wV6q6FhLAE\n6GCPHG/cIpSvofCjpfxLMQGxF7c/1IWGCh632g6AgGxVcXhaNdHJ3emVybD6\n6wfRpJETV0mdlrhsh6Zz68sf3vxUhCnXssn5XaAw3YbUq/j+aLwMD5qdQQe9\nAMkVB7/OOzPHDg20BnSZhI9O6Y5N5wqsqUxDvDJ/msENAoaQZXYbAbBAwHHl\nXmk7ziFFjk/d0acFTAzwFADf+LqJVUfsw1FomKFzJVx6Mqri0qIzKJdkSDrq\nFJmajtpYPebz5nYZjsS279Rzgm6+IADBr0u7l9eKMFgZx1hhS34pM97kJlJ7\n0/LnxtKJzyQ3Cf/SzKunqLvR2FXotVb0t9OdG1PfHgSZiJvE7zwhYZr90vbf\nOeiUlTAI6JkBC69VqOUmaf+9lg9qdWPUxp3oSKbHLmdvCHalqonY1Zk81IFR\nrpGg\r\n=hmHA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.2-beta.1_1617303708031_0.7860082274793092","host":"s3://npm-registry-packages"}},"2.3.2-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.2-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.2-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"000fc57da2a0cc96b2f42d8178267126d7ff8324","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.2-alpha.1.tgz","fileCount":309,"integrity":"sha512-AXyd8eNM8g6b+MVtq1lTDSHDg/Wm8FuYqUlkkmuE/zywk+sadZnnUi+f/Vbfh7N9yFpntMU/sHubp+zMRKOD4w==","signatures":[{"sig":"MEUCIFp5KYCewbBsWRcchFaOgEn5R+LyXQiRhyTBnlTR/XmtAiEAhDlXqw7X4XUSBzQ1aS6HZrYy3XAbAkaRiQzMdGiAjN8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZhrMCRA9TVsSAnZWagAA/bQP/1ZXGKSBhYGwjrbXsuac\nhF2vLQE+O72i4ZxHe2xSwl5rqnVoMrNAdADma81k8VxS10dSySsOgwOSbQzE\nSRVK0B/F8KxrRitSgZXWRdLcY5VNItpGCYaoBCKIllllSrFQxqerVxG9+pbD\nP4K1U9bwxHRFslNkxcSden8k/klbXxryq/eFrnuwqP1uJknIEkkA6ivMcyJo\nNvp6nG3Fg5cGCba6W5RDLQJYhGKiALpBSJcyS4ObUQ2lQtAqkzGPNVy2rgWj\ndRXKNaDJAw/tPEdoftuKyl4n5qElnywedBMTRO0SHKjgFYQ7ZzhVQ31B429h\n/Npwjw0mJeQlcD2kNqXthA4hP/PqfcjyPHdp54Mgkkj2x5ZNVtq8R/gpL99d\ndN/nmO9Xe0ed9ZOOw4/oKWqX3nz/iUzRB2sgATC7pRaPMsX6fwUI6a4Ulapk\ngiHNz5d1akK0mwkZTyvYYU1hLsI5Q8o0ZzZszBexu8rANP84vgKuR0fO2CIQ\nruCRjwzeLUVlrPm7hhUtzeaHpmzmWGOQyUiZyaZKfMWDg02xuASWCYA3cmYv\nNqWOeJIaoQP4JzbD37+ZR1MvYlzGhLlXyWQDaGkhVrJqxqFtmCbmEeigTyJi\n67KgA4YaK5K4CrggmfF40TXJKOWpcXk4ks99JMpGfDY7JxPwBjkFgLlATA7i\noJ6A\r\n=huFv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.2-alpha.1_1617304268210_0.7573361120604449","host":"s3://npm-registry-packages"}},"2.3.3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"695c799ef4a4a6a4581ae5a32d90cd2164606a69","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3.tgz","fileCount":309,"integrity":"sha512-JNTEsFn1kyhobmwTpeWakJPWiNhUqdLg5DUQnihVh35H+URS7bjsGWfEpcd4tj9Apa4e5d3yNioJiOyh5Mw1OA==","signatures":[{"sig":"MEUCIQCUiIXbPOkPl3Bt3sTwn3f5dFSaPJVC3Sv2I1cJ18roBAIgXJVjISZQ52vGDG/npyJa3/63QrCR6Yr+hjSE/8PkPZI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbBHMCRA9TVsSAnZWagAAZysP/RiVb1hQ9XeXZM0lD8Pg\nDy5N014toXfMME6vRuFwywhHsU4I1CwdS7lfVhhlJR+fmufdLLabxd6uoLrM\nQsk20vIynsi17drBvSG0ZrV7cclVmeDoYmZ0xglq+pf6WEYI917dkdL+lRdr\n9kUVrI0rM/4YmIZ0NrmyYJAflFezAC45Ruj1Vsi1BQkBjeOJiT7jqDDiPcPk\nBBFvIHkFasYfaEXHJ3mtTV4LQOnKZVD7KSJDRpXV+l24PIqijOBIJKhykN56\nTFz+D91X2KJeF8jhTXPxx7YtKfEoKmRkVNfc8jMth9CN0Ze37ZJ8IRwQy0qW\n6fy4zZzN+r4R1Yp1HfS+fQFkRAxDVtCSL5g1NQ4CVTADE+SmWV5vkYl1qL6A\n3bIPt/Wacv77HouQMQMdjwG4K/9ybqE20betF7SKKfCDkWAHeMZ5HEw8qJoh\n5kEfcgveOFVb9VUljeXhrGkCZcbBra4Etx7B9cP12IGwMQpG34MOG+T2TBIa\naG+k9FdCx2XxXBt2QOCBjCLovMKCaC6i9foVcFVZRxu8Thz2fuYHwfUXh5xz\nrS2KNqrYRGRFMNv92Dj7Za7ku2G/bbOjHde4qUlyOKhBBiKIKNGDVkZcXidv\ng/IPJgp8+ZNbMjxeU7Uo+0NsNdkVEoQv4vv8KOWLnmJH0gScEtYC3xuUKlOa\nMPwJ\r\n=HZsY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3_1617695179670_0.5020768488185336","host":"s3://npm-registry-packages"}},"2.3.3-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ebc8b73c96b2a56bfaeeff443510c2b136c3fe0e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-beta.1.tgz","fileCount":309,"integrity":"sha512-EzU0Hfj9o9VsHI25dMKShwDGyHQN7Pexamr7NVadswZUZ7XbZbN6tHxE4VNj53sE9hL3mLQgbpNjVoNqW0KVKQ==","signatures":[{"sig":"MEYCIQCDulMuaXRfMZ44gXv2SuKpUPA6jbQxpj1SA7do+c67xAIhAOdVMP8xDOD3giZXjNMeYm4kZ5b8mWnTpnHhZ3HrxoRW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbCgZCRA9TVsSAnZWagAA3nIQAKGSgAPU0xpY/0iUoick\nM3F5826poP2Lk58WyQ+L8jJ0V5OJ4cmshq8I9JyQ7Bv0GJfh1HGcL10XCBEK\nnXyNE2su/H3XfCzSCRaxqX+gjOcpKVvMX4nv2Eu0Ksj5uHHUcUc/10jygfxd\nSeqlwq9yTZBLUPuABCBe2I9RkDAYhWs1jgbjXfHMtg3rdC/tjNIBajzAVt4a\nmQjADLwz8NlKbNAFWM3A+HYx5kfvXhz7mnCgFRkK7lsxCPAXXvVrtdL4alTn\nU3grFTwD88NZm1xaKy3jCI97shPOq7UVg9w4O21PQ+EHppXRtoedvTiHCNwk\nj/NslQhdqAvzzjt6kNwZxczNdjGPS7OP+tOO2yRrqWRRPRCG1A9IpCUrNnEp\ngbFXhxs2WMcrF4I5mcC2mRw2LtOJrhnT7SBYJ5mgzu9+iIDuEBvhIy/OD5Wl\ndV3aPO0muX+MAOJAR+a4+fxjeM4jGRPcBn/byO2xsSBTj6PJ8d9o+20+9POf\nzkeTsbSTKUAgtU9ApfgoMxMTEZ0EtnEStxgAWk9uYocf7my/5ODo4vP37wWM\nPHJ1nUt9CPUQrgjOjWZOnFu3HcD7+qHL2ubM0jVDeUXo+Hh7HMjPsWkcQ3wi\nTjkKkBvw9g0FlVhCOlItiG760RhF0AQbfM5NU8JonQftysDmu5UVtpPSQLLn\n16K7\r\n=W7Ha\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-beta.1_1617700881028_0.16510272752160438","host":"s3://npm-registry-packages"}},"2.3.3-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2f1030b7295d21243a2160e768c7a3d3ec8654f2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-alpha.1.tgz","fileCount":309,"integrity":"sha512-b8RVfjrchGyjaAwmCnhlsm2ohU+cUbWaGhu1NQNB+NrMxm+1IkWjBPv9LTAq3pNKJm9UfoMiHIZQ4ZF3BDlXkg==","signatures":[{"sig":"MEQCIGoFQpvdNIsJOMn0wxRXQJG143ZvkC7YTS6im/aSRsMNAiAJkgCpq3YmZcdlGrZOvMTt3F7n4LZgnFA+Irn6ZIbBJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbCkQCRA9TVsSAnZWagAAws4P/2GLii+cSDrDb6Ry5FXv\nuTNyjHeXzztRqhywPB/IpdTVxXxbhoPBtroy5uVqYplfT6j3MYhWy1m1iitu\nCRtzQcVih6EQw5++Jvq8qNAodp12M6JaN8kPqjTflMPZ8OftGypiaOH7p4jO\nm6UsTxNfSlaS9+/OuX+qs8cG+YeNRsewIfhocd6I/JlArxUCq/cnNAYoE/1S\nZ7KSGujNvY7OsDaFB4+T8HPEQQBt8ysLK89FqBwziuYZOSJm6Kv9X7q5z5a9\ngyTtraGCoyuSpvFAKbs1s1HPXFQdXlu08FsbrQCHVHhhYS6b3mQwiAopCAN7\ntkLV6O9lxF5EpKVwqosLPOxKyk4BexD+PzzGr5wIxI9hogahpoR3g1lsmTUM\n4seS1Ttgo5foRI4kBDc6V+JkTyvtlr9fxr5XQw2cPugyzSTJppdUJjLf0K/E\n51aB/6G7vTSgJIwMrhIeDp7evpvCn1Ky/uUAbPEYJQ0l6md1D9W0q8d69Tv0\nHkjG1gYS7jgMkDc9QnVG/uruunANt37rJosF1yQf4HfN6Ey0F6whOmG0I8qS\nhXUeOrs9GyFVXFAmQTdKmrcTntNCz7yP8rXUYuIvCADbaur9BdVQG/4/Eu5a\n//ovemi638IB8Wyhnhqvh0IkAmLHrcUn6m1Sw8zkCeAMrWUxOg1Si/Y2qQ0R\n6Whq\r\n=fWSK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.21.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-alpha.1_1617701136100_0.16246441093260744","host":"s3://npm-registry-packages"}},"2.3.3-hotfix-3e8106-kn8v6vhw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-hotfix-3e8106-kn8v6vhw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-hotfix-3e8106-kn8v6vhw","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1f88e73ba28c98bbb20930cc6ba9b34a2296e03f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-hotfix-3e8106-kn8v6vhw.tgz","fileCount":309,"integrity":"sha512-rx2bHx/deI409MvInP19r1AZvk/cU+VsK2VuUGpuMYMoExuwqu2Z4/TABKccUFIxSt47r0nmUHtGZhA7RWiJ5g==","signatures":[{"sig":"MEQCIHzCOCHQI6VUhIXUx9KXCTq+pYwLZFiSCgE2pzMtM37oAiAlOPdxY5OY6lDPtrFVlRP0cMgOiNGS0D+2MOa38A7JSg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbvjqCRA9TVsSAnZWagAAJTcP/2i7H9CDzUsE/ZDyfOht\nlnaKm1KMhK0ijVnYm1Yeg1pNakDlgf1Vc34ZuDEEksr9cR6Z9rVuISRWvSvl\nuAiFudDfvg+F5ECf3DJqgM+ySNznNNgwQUudxj+AejepdlDKhSgjTC2L4S6Y\n40LQzY9kr4YijaBNNoeZga8sMkIu2M/tieRYlx/hQPqoD070tx+PsLPUMBVf\nowVvvbTMQDTUL38o7edKOQn4uJkEoMYlvR330ncpTXhMDa62iRgyQ9LRM0oS\nVKrfbtNDRt2ho9y2L3PnpKVpFuVcf2IgicBh28x1a0fdsiSQGjvlulS3NL3t\niG9WOMSRKBDsFJWqbiNAcSX4kVhuWaNM/Xxg4bjQk53VCtIQmHPye8LGuh7x\nj4efMw2QxXhbvx4Ovj4yUxBTG4ML9PperCsHbzESzG0TM6D0O9kDYiFriSI2\nG9IphzhiAw+kkIb80I6jggf+rcaCz9DPuyRlcJ0LUrZtm8ZgpLYJH8OjxPsX\nG+CIUHPst79VlGxpwdq3SKkY5qXZ44C14DRnWBvlyQtAysTrClSFTqjPb6wR\nqI9IBLMxx/8EHUjj469vCtcEYYnQXbDRbQfQXbxuOf4x+FWprvDEthjePXAL\nIkXdxC5IBlFXDdt0WpAxkkZCvmtMczaqHJb9niHYbv7TccbDHGShs2Th6svV\ncE8N\r\n=2l2h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"hotfix~fix_error_messages","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfix~fix_error_messages"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-hotfix-3e8106-kn8v6vhw_1617885418084_0.580368908007806","host":"s3://npm-registry-packages"}},"2.3.3-hotfix-20ac53-kna3y4vq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-hotfix-20ac53-kna3y4vq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-hotfix-20ac53-kna3y4vq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"14fc1100eacb763b98ed673bcddf0e55c47c24ff","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-hotfix-20ac53-kna3y4vq.tgz","fileCount":309,"integrity":"sha512-D3DB6HOxZLtnwjzIuBBYnOMfj2iF1ghbmRdaPRK0rXkDJ2BJceyuF7dohi14jN+upmXsr/VJ2xBbb9O53zjRug==","signatures":[{"sig":"MEUCIQC8xOFFKPW0kOveZjckZ4zxoYnZPa2SyEUfdffhFrYBtAIgM5YxVAo1wAwnKtxUjbaCLhUP9Sqfi3b/Q59RD431Y9Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcB6RCRA9TVsSAnZWagAAlH8QAJ6n0jEKKaA53NzHuOXi\nO+Kk+BfN0ATGmVYJR6HacQ4BRyEf1ADEsAlZvzMwaVHtGJQroAqBkpklOaJh\nVJrTkbRW6AKKTAoWGDL4+0r0VXazpau93n2W3dvglqPlsmrwJ187q3SfPd4n\nY7pmo6GcxNuEoopWuL22BNwzhKBp+ZROImOpJGPx5cUyUvodbL4WK5+dGY/+\nqUnHis4Aw5yXxD9A2k8e5GdAS7SbdkywcfICRftDzqWZgYM8PZh0rfbx0cH6\n/J95DROOrY4dmTysSwTYXNAjmRpiypVWwN1mnS/CoGh1cMfqw+xwN8hrEacl\npPH5cpa6QK5goeK0k5/SJcaqZgxS9XmdyarC9fOWc74oWbPHJ4uK4WGn2AZA\nJeo9nOVHqqyKM89RQJ96xw1D+q8+DNswWfPQh8J068K0yYJUc0orQB0AWaIa\nPdBx1aKjhnbgvZEg/6nuY4shVTvRr5StwWK8XaMmnCup+UhUBvbj1NnpkZAa\nKRFK5FpWVJOoGMhU6QklLSV/BPxKCi+9Wwc3SQN8YzPFuVRdLR+S+HIg8Mb/\nTYvFlajZqBHRxrB4gZ/jJaadZtc+7u6/SpqddMKRKbWa61+NT3xRnqLL6qFN\nEvP3qFJDYk9znDsK/7C5Fe1b86Z8DkPAFFKuAi+zoH/lTTF52Wg1s/WEABSH\nfSsF\r\n=OktE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"hotfix~fix_error_messages","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfix~fix_error_messages"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-hotfix-20ac53-kna3y4vq_1617960593148_0.36297670979449115","host":"s3://npm-registry-packages"}},"2.3.3-feature-e3ca14-kng9uj1b":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-e3ca14-kng9uj1b","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-e3ca14-kng9uj1b","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"07566be6413c015561af3657a94498ebecc3f074","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-e3ca14-kng9uj1b.tgz","fileCount":309,"integrity":"sha512-61N3rRK7BsT3D4g11JySvmWtgm3jV9gGkojgp/0UexXaXAjYozJTOm6DgDq5QRNsnLXalRRacLFgVV2AJaJN9w==","signatures":[{"sig":"MEUCIQCyD20xmjLiporNxQpQdWa2yU16QFWBwWWyzjLlNNF2MwIgGsMWAgDE2woSh1W1ph5j+uFtP4pdF6Ajcq3xBN7yl7Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdc5zCRA9TVsSAnZWagAAx4wP/1md0JWS6f0g1JjTODqc\nnZj3C3wW7vQTAPy7FCE7Jq5Y/cc1HUtIwdOXk9DamsfDt+BVYeDP332B6SnI\n8jwQgljvavRs49ziwzTtST8Q0Dmidqh0Z+U53UFLso8EH05hx3qKIxnVVDgg\nIi+E9TppDZGRWd4tjYYbxSkDEfS918ynjlXd8x1R0dHbsyl7pKn7WVmyhPBY\nsfuEhTt/xjjkvVuGRb0xJTeD9qn9wCQenXRXHrKeBqi5WVdKpvFw1arVQZ1F\nUYNVR6jAJaHJ0x1VPIbFDB8omyuoJxZfGuN14hPyeGesQbWDl7svwe7N+Jq1\n9lPp09+ud1kWfG47XulVLdy1dyDSCzb+Vha+x712skp826P0s8I/lQ8Nu1FE\nMlPfAajOIzhQWPXn4aL//mFHIGaf5pgrWcOn3GPrqGSW63xgoiPJ6RM2k7IG\n1gntn5JMaciLnCovdwijA0dJXG1kLfi7e/jCRZFVvMOq87obkeBC8GavJ8+o\nTzbSTqvGtUW5LmxFO+JzCcEL79Qi1eQYqQyyUcpkWzKySTluZEckaCsi899i\nl1QEiH8vHNQ9av+zIXNpJvXIPkOFJUwnEdWC/1ZbAFv0C1tSAa5FeJddJiUB\n3ImomSrSlvwHcRO+1KWIP5dezYdRwnwp39dQi1N/+GFFOnGoRQzg/wZ3G5Fn\nCf/m\r\n=JcuM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-e3ca14-kng9uj1b_1618333299365_0.3829647129636913","host":"s3://npm-registry-packages"}},"2.3.3-feature-d2fa41-kngat8l7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-d2fa41-kngat8l7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-d2fa41-kngat8l7","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"850ca5a73f9cfbe1308a1aaa5e135391b25c24a9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-d2fa41-kngat8l7.tgz","fileCount":309,"integrity":"sha512-3edZqg3MTopLpFMeVsCSQnLeCqbY9sCvm1kFTLXpzXMP8HNJVcXEhBFp3JSfcxAZcWzwFBT6tAZLg9v51P4v8w==","signatures":[{"sig":"MEUCIQD3SwXtmx3XaUsLM7JWo2lpCDgP6h5zjo8C28qLfVnXkAIgU+XNPaz6KRf2wq8L/8R9+T/R3rWtGxzPKU4Qdj/MIFk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgddTHCRA9TVsSAnZWagAAaMoP/ip/mbcHz2kPNYNDOZWm\nTNgriBKX2jRbIfLBAHZaFhqjYUESGdMc2LF4vqmzXfogorvVVUHYZYUpFYY9\nm29gJJxZ7kEuN6UIjGyyCE0WcXPKqd1GOxykWvkWkXBBgdK2kiOOjYg0tk4x\n+aPvLNNcKMCVe00uHv64YTIHYOTUd2UqZ+T/PUNV/DMsHwBYPrT9BnNVjIid\nz7TaHgIvqpPAjI9mRnon+kJuS8D2yAG9t3c7BIKcrFEC6/o56OM6qey5osSL\nhlHmpVdcb1Dk59+n/m3JjlRk1O8Ud8dybf+9kLxwOmfYrcouSS14ZrRrFGVY\n5nJct50oY03rerj8Um8yaIAZ/+tMV8BbI40wJcqHICcMNuTgy7YsDcBH+DOx\nIoukfgU9J+8toX8aWU66ztjiji+v0oEc5Kr7blhLCA/zNMbIvxYPvpeHBHb4\nKJDC2YI19yBCotwuIT57618q8OAYWM38oUfH0ezRRK2IN5nFWrUUjH1/58QR\n9dOxvJ29cB23bFYQZFOixlmfGNapTaU/M7ESYMRCGAR6IzK7aj1odXwTcXMA\nrDsCvZFOyI8c4zgQxVmfmpyfu2ZbCgYvncUe/GrQrUY7BexN677Z0Y6wJtbd\nZbJOfod6P3T2xKwxpyIwtHXQRjVVOR9Lhl0gwde4pBQxc/LA8Lmj0GahyXMd\np4m1\r\n=DPWR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.11","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.0","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-d2fa41-kngat8l7_1618334918717_0.5321552328240764","host":"s3://npm-registry-packages"}},"2.3.3-feature-53e62a-knhcwsyj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-53e62a-knhcwsyj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-53e62a-knhcwsyj","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"281414701e03248fe5e5332cb2aa3046b0e85ed9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-53e62a-knhcwsyj.tgz","fileCount":309,"integrity":"sha512-0XWUFxm1UXcsvywC7YJx1W8TqG8u1wCMrtJLGOrusyEVtVx4VNZPYtfKXgvzuzWz9X32+y2b3BMIQqIORa64Ww==","signatures":[{"sig":"MEQCIBDEg6J1RMwrEBwxmAeRsfXL9ffrOYBWQ+KjKOHrnIGXAiBrFCCYQdfpFlRwlEU47TqD5VM1wX+X1UAGxdUavRlV/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgds6+CRA9TVsSAnZWagAAQ5oP+gNr69tzX355nR5pFLLf\npaZ8WVIVMlGWCpfElfUVAaXT2oG49jKryHbp+KTQw5TxOOnmnY2ksGYasj4y\nVZT0SuBVl4FbsjUw5t/Rgr4oBwVZg6Nh+yGuPgehW5Z/Sto36KwLoiZUxzQp\nL2kPs3KjGi2l6+Hc6d8v6LYPDy+f6K+khEYR6Ou74tUOq/uF1PyO3HmD23Ol\nJeTh5eqmSv6QaZI0J8SV6g6i2iXv/U2wkdHkgROjhYxiBB0NZJfInmi6ZLbj\ni7eD+o19yDBYV8dOZy/pTGprjnx79oUG0i4QYqx4xB702xSjk4OoRAEUttct\nhnhF/hqhXMBDAfRbe6cwkvDHFHUh/XR5r8pBWpWxJbIr680QXc+m7xSjYSJy\nAdt/6tYcAtq/SMfYbGm9SFmCq7oDVevXuQWp/z+8vYHKPiHILAW+Gn1sidOM\nVZjVAuyH30G/7kxpWL24HwGAf5sg2eowV5rWKgI7lHtWUt2hbrZYrrZDgVnR\n0SHhOCb3zrdpcWKVY7k4Lzyb4S7EvTL2sxw0qRmasY9MqLas5JU5+efzMeQB\n+ean8r5aTrqElVODN4a8thvZ2bOPpEr9zrFcbc+GE+yV6TEwSP5rjR3knPOt\nY94h5k6QLxUoGOU1MN2KgRi4xQ/sfP0FHwGUq6IbiyAW53bNVT+VUzDjEjiB\nYLMz\r\n=mbv3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-53e62a-knhcwsyj_1618398910162_0.27186125193865607","host":"s3://npm-registry-packages"}},"2.3.3-feature-ab1c49-knhikvyl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-ab1c49-knhikvyl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-ab1c49-knhikvyl","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c19a8bd80c9a2402087fc96f9f29398b385da5d9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-ab1c49-knhikvyl.tgz","fileCount":309,"integrity":"sha512-2dfaY+hCIMvsra7j27I4Hbcr/FnoKV5EzwadFb389yv+7q1X2ECE+kfGHlOR75TEtEaZJ3wiaA6s/BSI2lIVKw==","signatures":[{"sig":"MEQCIAkNXNszyh5jMOSilrPlzvkYSGE9WppxmqBQSz7CADCuAiBWLrTVyCVrXTdVoDyiFxBJLIGPCagSIvl/aXqCCfA1hA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdvPzCRA9TVsSAnZWagAAutwQAJXG6bo1Oyfofit/lEnk\nxKMqNeifHDu9+462Afhbhn8NfgJMljP4TOw7TXJ6/Yw8iBkPi8guNOE37oMU\n+DNnrk4PeZmPPV00j0tcjd3uOQb48p2qs+EMMu+Cli7RXIScN80atzFU1lzJ\nZS4VcnB6jO0NYDMqCsTZicZdsRUZTw9Wok6/E9+kZsx5/AO9riGcrYncj20v\ne5ssR1H8ulMxL+QvRY+muRPZP3lZOYYLv9qODUCG4FQ6TPCb/WJKYcfZMhla\n7se/0S3PPRoasS5A8VrrNJEMNZ5FERQSh1zGcILDMEMiK5IVpF4hlQ0/xWkv\naPYtt29Ris1WUiHSheWfEZ/DzuFriyvDh1YMoFNzju7jnqKq4M7C6pZKHQ1i\n+vhsCsi1IR5UUZiXCogAH9r/1Kp/zSyG43Ljgedb9aDXUM2gpPdnOSVIP5aG\ng39cOHTiaTMG3yAXyJmccGlbK749NpshaOX1X6wmMlTt0aXN88rdOV6lLV3x\nUA/D0Yf//5Cw6kF4696L+mi5BicRZG8l1Jo/1VyEcUZQHJ7GaHb0OdKGT3qW\nOeOszBQfI+rmW8dHsOJC4rnNYQi0j4+tRIapjC+cilb7liM8Y61JxS/dILpf\nTOVNzy4cGeuiXFLZ3R6W/Fcg+6pvVLg4aCv+LbQn4IppsEpC1fMjR+fV1wA/\ntkvo\r\n=nNCX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-ab1c49-knhikvyl_1618408435184_0.29314265978373233","host":"s3://npm-registry-packages"}},"2.3.3-feature-cc08a0-knhq0eh6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-cc08a0-knhq0eh6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-cc08a0-knhq0eh6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"aceab132b55822e798785c229a21ef28dd091533","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-cc08a0-knhq0eh6.tgz","fileCount":309,"integrity":"sha512-dUcpiQNroEdfrBFd/i5irms+nxtAiL0Z02mITExQemvmSEVXAny3pbdlvLETlvWsy4TYdu4TQHSPPJydatmsUQ==","signatures":[{"sig":"MEYCIQCJ5Ife6gJU9dt6vDM0A1neou9oqc54Qt+EW//veJqEUwIhAJNF+lUxUn+nF0CAlor9H9k6Qcld/LL3PFqG1Pm/RYwd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdyStCRA9TVsSAnZWagAAgaQP/icD2XHwLm+dDId4J7qb\njnJ3g2/RntPxDEkM4JEujuz4KTHEhoINUJb6Cqvf8jwVgTHmaMKiFWyVgl5W\nD7NIM2ldAOZ58Yd1PzKxX6SQAFdKWwE1IM9thdmiTTbaUNfLk9V7mxNoO2ta\nlq5CB7pfs470cUvULoKH83QUaIyu5MwCLXFc4mhYVa1elMEWyzwafAOnBjC+\nevzr6LbwHGsJmvnHYLqZp7ICL/pXsX96Gu1VrwFBMQJe9wA1x9ZPgFgJWm0Z\naTaJLSqbCF0Hpzcz7PtAg06UlJseLtxwEdev0bk+8EnHBiwHuNW8qjM3auiB\n1u+sF6EPVq3XpmQqBlDZFVNB/i+hIgPOAYA6fPzzL8l3LxOIL3+/ltV3i4NI\nKan8RT0UpQiAbsLCgSvhIID+SsWyN2L7Akh5GzkprpgGLZmUoQ0KOZVUzygc\nHIL2mRn9+2yos6guEQKAzkq5RimvBFJ5ZXOlUmQ+5+OYbchTlxwuVC9tGQ2s\n+fon7h+iOvn6nUg/XEAfdkrM7Jy1o2pHAHtmI1NQOwtoqQJPf76NXE/J8alo\nIQimcufFm18+iJ/tQv55NNcxnvNktAxeJvxL2L2+fpaL+d3zpb9f+EmvlRTa\nElEVvmPGN+x/4xgD+4T3fb2JhqxF1eu6RwdjByjAcOzQee+0xnQaSyVKAbnb\nyYtZ\r\n=oOl1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-cc08a0-knhq0eh6_1618420909356_0.42888246835707045","host":"s3://npm-registry-packages"}},"2.3.3-feature-cf0f3c-knis0812":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-cf0f3c-knis0812","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-cf0f3c-knis0812","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"53e4bc7f55800fe45e22bec5bbffb08cfaadcb9b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-cf0f3c-knis0812.tgz","fileCount":309,"integrity":"sha512-rWrVPrfN5Z2pWaa57zObuO7cEPK/NXNWtSzSgartApEDtjLZC+ohZjXtcJDd4s3tt1fDquO09rQXghSWgNs17w==","signatures":[{"sig":"MEUCIQDkZgIo9OfUDBToVtbrsNFApxq+/KcdTnqWJvCM06LSmAIgTx0kr60vyEOyhKBM0rKF+CWGlhaKcq9o/JSSXlYYOu0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeB4ACRA9TVsSAnZWagAACyIP/jIuY5dtpje+8E8JYHAz\nNdDfB/2zY2D431ZHKVmIjGvJ8IEhBTYjbGLht7iuiWdmp2Y6QSjPg9JuJhhr\n3jKCroLzBXbOMxPJanlyxF3KmNbCMAYmtzTEoNPWPFxGR7pb/H6MQPse6tgb\nMaAnaIW4zQFAj1lxyKVg2sKsDs9f70wyP7wt3K86EEbzadr/Wp3r7MbPy1P1\n+negnJvBIomdxqJUCYivqb+KN7Xvxq/lq1bjvyLS4ke1zdieWx74s8REUBpU\n/AqSzljxjBQ8+sNpfpBRZdJeYhS/NQOcHloZiwZc+DDbgi8aMjBMvOmUC0/E\nHkNhv9MXASZa8cUGUfZ7fK3IlBDWliWu+crb4KIso1AEMfhGF/baLqiITA5F\nfaqupXvksfl4AC+f6xyMnPpxQFDLZtHF5UAECfQmttoTh1UndwvkBlxr3mou\nbqkTQVZsOcn2hu1Me0ol9ZN+dCPfs/CCOa2grsnUi2uZ3xCZETxrJZVG4tlc\n+EjqPMyO6Hw+wrVV6LGgqfrkf7jitRwNzBhsbCUikQVkVQn+qMj+y4Zjp+tp\nG+6Lzbk2c+swC0gpUMehCq5tc5MYVlmKfphhFcYBzCRJ7zv42dt3fWM5+QU+\nolGxaN0VZXyo4Aha8IINYjzJ6BoZV85YlUGK5XxJlh/c/4X/+gJuHcFH1lUl\n+acb\r\n=XqsY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-cf0f3c-knis0812_1618484735449_0.12731042186563024","host":"s3://npm-registry-packages"}},"2.3.3-feature-552a81-kniw6zhb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-552a81-kniw6zhb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-552a81-kniw6zhb","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f0b488c93bcf582fd519b9bf22842ccc36a65caf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-552a81-kniw6zhb.tgz","fileCount":309,"integrity":"sha512-Se+TvmhuHdANu3nd77V3glGv38APkviK4mwSQBWpiTuN+rINfv/1tr4pvq84JHntcAEckrq4ix4NdoG5pluNyQ==","signatures":[{"sig":"MEQCIEU2ojortAp6yI2I8MWBIj6g+dXXT0X6DfrsrsEqDJyxAiAoFLBqKdhZ+JSGsgwdfJ1egZ7YCNHl99pNbvHPvtC1ow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeDl0CRA9TVsSAnZWagAAnowQAKHs7CjZ7TBrV1GoKuh3\nAIvroK+tiPxDoSLRUzLCAcSl34VzhF1eAyBTicekhTgbWLBlsgOZzE+Ee/MF\nUzqvuJUPqOoswFTjBjXRb7yyxan+ahouMzQcdb1ovy8PAeVA3n7WLVQAtREp\nAic7sA7UL3mqDJ5IMmtc7nfbEac4Q67sxAomoKzXo7BGhdcPcAgPUyshNFaD\nwfDjTdeVNdcGnqnWFmlQwnsBHO/W7Am90lHCDuDRM8p41dvo9oSHWb73Qr8k\nq4hxSTG+uXc4KJSbB5XZiSEi4rwAB22tJ7g1eSijlfQ7f5Drxdt5WeWgPVem\nEZK2gOEXIMOKGtRqMRKxmQy8gSwNiBSSkAicPHLlUz4nbAjWZIE+6uJK8Lt+\nF5/FLjEc9B2wl2bqC7cazOyU/LVyKhSOn5OAGPW5wd1/gQjQ7ZioWL4/62aW\n+yTuTmtW2lzQJDZefQhu8bhVr8J84zWHsW+M/rSUA8pg+JUyk8w00GDrIha/\nfCt4uukppalNh96aVKqiU2Cg0IBBSrAe7JwoSvdLf9A1JK0w7jCmvMNOdsxn\n5QR8sNsXV73xqAqDk34r614Gae/AatWzuitWbKCmRADonAAe37del93Tkr9u\nNzCP4YoC3zkEOQ5TGEfEeJWggklZbpkueGtMnjhi8tGJzeYbk+0BmQvUooGi\nMXav\r\n=gme0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-552a81-kniw6zhb_1618491763732_0.027333529795633194","host":"s3://npm-registry-packages"}},"2.3.3-feature-09c901-knj1ssrv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-09c901-knj1ssrv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-09c901-knj1ssrv","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6be090b0a95f733d72f9d4e3268e4f6a245af74a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-09c901-knj1ssrv.tgz","fileCount":309,"integrity":"sha512-JqJUQBRUYEDTuTUy3hX04q5CORY4pr0xKQ8gLZz6r+PWTSplAlWEqH3ApX3hCpNaVhyTDsZVJIJ7lmlxEJ9Aig==","signatures":[{"sig":"MEQCIGunUORBFqan1WMVqZmIItqkpO1b51OL+4782euFSVhCAiBtPC1yl9WreI1i+rARpcdKe8OswvAh5gQWVcZPeFJ0Jw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeF4/CRA9TVsSAnZWagAAnCwP/iRYFssiPVsKu0+atY3E\nzL3H4jPL/WvG/2TqfMLu+O204TzwoREfTGks/KhbK/hc+pEGyyDhRr35ctfs\nNUmNM9bUxenVV4bFMNIyFCXrQzdyLZ8OsUYYqEqmxlLX46YVu29JP0h7uWdq\n1Ob+aZg0tOJQFOLy6g9SN15Dnjr4q+CKXgahsMAvzrUGaQ5B/RwJu+fekrIj\n2rvlKrG15dkMfA2TN+Uugsj1eYo5X3DYRG+2IyiljqdTQCu23DtQoLfcDpgY\nwN77afG76g4Wu2qhxdk5EGtWZeUVAXvNWD2I3NeH5ouM9ZIQo/ZWCU9ylpbX\nqrRYGDpg1twfIiuKcvNW2pVNL5uqAPxll7qw9A4r3GVuRGBjdXcHVYc8mZag\nfwifxcXcFG0wsAdO2l/SHJSBU3ggszbarAPczkwageXid2CTx4zDT81lG9tO\ncf3B8GLCSs9TOv/9Ycy4umsm3rjjPWhUapH0d343l+PEjemSBYgwktCdptHv\nUXxm3G3+X8dU8VadoLz2XqkvA5D6+fWFfOu1BnvLQuAuwXAWyytRHJfJRuRg\n7iYEeKiYafl3aEHkhvWXZ79t7RR0V2zt/Z9ldxU4aHbKRSym0O3reuwIN6OB\nhiFmCCE57humXgMf2ksDRYgroK9IE6GFidw2Ete50RgmjKyjQGJWTBCIC18q\nTBiV\r\n=qJz5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-09c901-knj1ssrv_1618501183049_0.9345518578751315","host":"s3://npm-registry-packages"}},"2.3.3-hotfix-b8e25c-knj83xld":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-hotfix-b8e25c-knj83xld","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-hotfix-b8e25c-knj83xld","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e603dcd4b60ce27dfca4ee6077edbab85b6d421f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-hotfix-b8e25c-knj83xld.tgz","fileCount":309,"integrity":"sha512-mlaAzH6Yy8cJ8zdO57UFudCNA7hky+mBAU79odyPuo4aKBaqTjxwPzM6Mg4BAE2C3KcoUuT35ue4LSUHLw+Tgw==","signatures":[{"sig":"MEUCIQCME9zHvsrbrnrQ81l6wmBomoKWP+LbL5pCWJVqkji+/AIgOEhVnwFjmaXVABrQrgEU4a9GuzFReSoQJe9LOP37jYk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554731,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeIelCRA9TVsSAnZWagAAN8IP/1wmHUwUJRVepGjoyaCk\nUVowReQGNfv8HqaWw8b78dePR1Qo/Vod4OFSpwoPBf9Lc+yC8bNS+tthJWFz\ndGKNntKG6fF1X4nUWSlwxoUK4HTniIzpRep+8QqzIdprlcFju6ji3wAb/dZ+\nAu9OUlBGy1m9Bvwb9cIchvH+Uun5Duvc3bMpZGpor1e+EH11/JsnZD9ngMwy\nrp58DoUxztIXjIr8c6e1Y8zi8gNSz3t7S6KAkiZJBENSdXqsXDIgpv8br3UG\nC5kAS8TT3uOaL8AAX8JJRuR6AbxYzWyvbss5QIhesThii1j0LqiwNvoPebLY\ny8/pNWPA1nhFx/ZclAIbBVq6oM1USrYUFH6+et5sL+7OI5s+tNCnAEXbc0sk\nwXHqp4YVXpyM5U/6gCOkBXV6v2a9Fgr60VKRkKYzbrFQgUCiNu2/hqyPdbVb\nvVPEWnRWN0RHlzMzjIWmRIK2WqMtkoc6Z17eMhvNLQSxo9pU1/ZRk9FGQ5ZD\nzez1uZfw40hHq3whi8HRZDxr8AtLKl4fGnZNu0OLMoAMX/n8hI+mANEtDB1o\n2PQaAz5iSeeBm831NisiDTueIAEluApyB708Fe1SHTwYIJY7tPw5dYEM2VbF\naV1nHSBSCnne9ecbMvDu8KN/3k2Q9go1DvqQeLA7nTyBi0cwx0zKZwcMtcMy\nhZPI\r\n=HmPH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfix~fix_api_queries","@atlas-engine/process_model":"hotfix~fix_api_queries","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfix~fix_api_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-hotfix-b8e25c-knj83xld_1618511780813_0.28490644454653147","host":"s3://npm-registry-packages"}},"2.3.3-hotfix-98f7f1-knjavkk3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-hotfix-98f7f1-knjavkk3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-hotfix-98f7f1-knjavkk3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bf26c0ffbb657282a326266a3e6f1c3b91e69932","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-hotfix-98f7f1-knjavkk3.tgz","fileCount":309,"integrity":"sha512-07HKLQF+pOx5jBQP2y6DKc32D2BNvOJsWL6QCpszpMumJcZux/SYKgLr0E77Czz+lg+aVh2C3zJWp19He95QRQ==","signatures":[{"sig":"MEUCIHOBmM+96t4hMDzFMpIrVqahoDUyYeaDo+R24KBNf+CBAiEAhtGBOGEA+LWURBd2xhUycUDVYJNJsL06DmF4V0bESUk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeJnPCRA9TVsSAnZWagAAK2cP/3Yf90NHI4CDEQPJElwE\nojxlJ9VHjPdGE7yiYRF0MgdIDg16KdjKdqorUAHQm3h8b56iYicKdvETiIj3\nUT7T9F/nFT/UfZ49KEGVT0g92TTiU2ImdnXQQ6fWcnK5MarBc+FqwmHF9KhF\n2H7ztMc1rrSj2kzj53tW8VJqF62pzxugqizuowIS5rY4swRoS9LqyFrmLx0n\nmXGatx0U7YkOLXQRvaHgwytgqdYB7VgRTqujaQJi1kTFSb8HJPFYYzy6Eyzl\nTon+wWR9GBPrG/M3BJ0i5tSbVwB1wZeT7FM1m1PysI5yJQ+7K2C7QIU+ZoUz\ndT1sea8GdhLwwaQZoJZvHzWYYyn0lRtn7DkIox8UsZUAKlI55c+MpIIj8A/k\n9Cx/4pGH4EzMgyXri25e01h/q/6SVsUELt6tb2FrqKQL60cfyPxfWrky8eJV\n1pW9z0jTV5AbhVbyDzo4ymKFPlhqtU/OJHbQQD5BP8lp0upVehYjyDePgKji\noNzeQFF3+m1E1NwqmVIqXZId/sa+ZF/yC8gNhjz5DMMskulsWHfdZDmpGTpB\nKH42s6C2G9CQ+38YifQ9kqYK2UkNPAyl3lDR1rtgtNgL+IywShe6LyyzigHJ\n48iEYRr5K7LBFyEZkCceZ2ul03KjcDrI6luRJeCzaBGbbA3uRqoBPJAqEwHJ\nUXDZ\r\n=Nr5O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"hotfix~fix_api_queries","@atlas-engine/process_model":"hotfix~fix_api_queries","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"hotfix~fix_api_queries","@atlas-engine/core_domain.contracts":"hotfix~fix_api_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-hotfix-98f7f1-knjavkk3_1618516430904_0.1155043992177287","host":"s3://npm-registry-packages"}},"2.3.3-feature-c12e38-knk0mxna":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-c12e38-knk0mxna","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-c12e38-knk0mxna","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ecd44df15fa05753c41615dfdbf711b1f872cc47","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-c12e38-knk0mxna.tgz","fileCount":309,"integrity":"sha512-dpkPOwXvmAgGY88CNLdsskSiA7Q7BeES+5+RjYjKfq1a8MLhiHXuYXEFlDSk0XrAbNkBEVkIA4Q+JfUDsD70vA==","signatures":[{"sig":"MEYCIQDyz8T3n4GY3wVr7jZbAdBdqcghc4dCkJasK49FOCo9JwIhALgr4z6Wg7c/Ubmd6h9CJ9jWWsXn57j3ufUifl8OI0pX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeULNCRA9TVsSAnZWagAAhRwP/2NRnO8YOA7j2c3/A/TA\nsME8PvCqVHrAJ8oqiNAOX35f9earQoUXYyt6zzdpcR83ftwWkstNfHIN1qHB\nLJxDN4k74gUeSbQpUCeDMUeruurxlECxgsOoMCqwaMnvpYb0CFpQ8B0m88gS\nk7gjBD+sAfO+A0KXocKlc2cCkzWwRPk1r3OInS5R0e6Rgeqz429DY5MPhtFO\nuoZeSxv77/7miid0Ym8YhnXdZUQ6UrL+tbgip4WSiwS/jLyHBvtwdqg/Ua6R\nngGfDQnrM73Vyq+ENDRvva7u61lpgTUWosP/FwitrTjn4BPUBN+e8IuK3Qu9\nkcZHDt0M9rjKtj9Bhc/eWW4W2eAau6BpL4slrHeznz/U8KlSbjC4LJOeuR7Z\nEdlIjRFai3rLPREUhzJ39nBW3ku9cS65rRcyOOufXal8aFErlxgXIXUhQY8U\nOzErh82kIE4XVgbUL8c1yLMmKKA9OEd7l7vx34OX5rVXiVbg2th4gsJt/ReD\nf/xcpqTDasoXTjSbq7/dXSLoethCjxDmopbtpaYrUT+0bmrhsNGyj/CN+IOA\nRkr+4+DXINQcFWWWkTlXfJEwh+norZLQ1lMXrH2t0tP1TNtthr2jGNIY17iK\nFKEm17bTlgmGUoSpX0Zhcky7eIWY9nnBGaYbtf5UrDxdvYvDzxZUyqTlQ0w2\niJ14\r\n=1fnQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-c12e38-knk0mxna_1618559693178_0.7429694649574419","host":"s3://npm-registry-packages"}},"2.3.3-feature-a9ee53-knk2cc2m":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-a9ee53-knk2cc2m","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-a9ee53-knk2cc2m","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"403ef42d1c63aab347a188cbba43ceeaa0cd33ca","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-a9ee53-knk2cc2m.tgz","fileCount":309,"integrity":"sha512-6EV/p89WKUesA4GON1tED2k9SeHleWnbcsXT5JLhOzoN+T5wHHOGkjYk5K+MWIDIlcNFhEnfT2Fr5fxtXCz0lA==","signatures":[{"sig":"MEUCIQCow2GporjSxjfSVFn7STvAVaKiluV0TqxtJowxcTV6TQIgfZn8PnnNiJQ/xkKcUqXlYGbVqNf+ohRUNrXIfvRpUyI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeU3/CRA9TVsSAnZWagAAinMP/Aq6iJnXVanbnw6jI2BX\nSQyysUKbe++Vgg8iDvn8FaA3TmcT7QCigbPdoEwD9dsY2hzVF5rHp+kMLW04\n3LrOxJSY+0qH7Tv8/sFuhAZQgPM67PB0pNY2hQGPkliVVTJp2YpkohfBcYFs\nTKvzj6mnVUW/Q1/mN37KYpPdXNqbl/FuRdHi0BZRdy9VYMrGNK5EefQSnkTi\nOuubz8iEnmeCW0Rv15JE06KkEA27s23rvrAKa+XhKnm6Z0dkSne30C1lJcxM\n3jfM8mYTj9PxVhQwrt6+eQfyqD3XyVtvsU0cVY7tpmY33mJe0pxJeSYS24a3\npdYVY0lF/ri2p/yb1pDOsdo+Y5LUq33hu4QEluNOU3X5uqS/tai1N7c8IIyY\n0bB/Sn7TXf5bJnRRIkBXYOTdz6yHFlkaU+2TkkpCSXjx6ECPetSLX3zwHhim\nYo7ep/7XeHNkJKkosSXhvrKWnTpQqizq18Lrie+qqvqxfkaSlIanFj5sBaYT\nX5UZIcCNiA6jgQ6Va1nLH/P4qidjbtVBi3epElH5QcMPKu5TU+InCgP47vQH\n2ilNXc2c2xn2/U4he3RL7LR+FNt69USwRb17mokVf42vXmHDP6m5cDtbhWJq\nA/6xVpgWUI6wF39VSvj8X7cAFpP+3xCtGgVORJO87zuHgBydFVqCmkTZa3cb\nCUat\r\n=wSW9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-a9ee53-knk2cc2m_1618562559035_0.5809575982618413","host":"s3://npm-registry-packages"}},"2.3.3-feature-ba8392-knk7057a":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-ba8392-knk7057a","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-ba8392-knk7057a","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d1d856331df4a86f2f5a41080e47aa01c142134b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-ba8392-knk7057a.tgz","fileCount":309,"integrity":"sha512-6Xirs6zyMXvRi9oW9/mFriXaOB5ldWKPlkUuS2s7kI+lCs0gT56X/J2xkoiec0pCpY4ysoE2uobmPf1oedGJoQ==","signatures":[{"sig":"MEUCIQDQ7YPAEnpC95zgT367tyRs3yX4zPHFt3ZEtzWFWsvR6QIgFLZINfdUQWKTC2cV2EMiA/Mr7Q4FaQSeLoKgjiM9ZfI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeWyRCRA9TVsSAnZWagAA714P/2WqMoIbt1vyDWILso66\nB7J0n6RYn4jTKXlSnWNdoCYjMqx9/Jnqbo65GKXqEnAdDhtVxNwldI+Pdjvd\nhB8WjSsvu1XA/um5w8syVR6W0zkcRPPUYCIgdkGGQeBFQbPNy4yErxQxYniD\ntOwBKDpTJacKWjgW1GCEwIPz4p8ucNG+EtZYg9JcMJwqBo8COltyZ/AMR7Zh\nYispKLgxKNibCBdXVx6AQScHbBzEavDGIuu6+HKy9AILqfAAy15dv/ilFvQs\na8pjk5BYGJnclpAPlhRuyKRTmTpP54TwtPAhTneqwl6B36MUJAvM+alGnvh0\n2AE1P1WTjmDRfz8Ls2NuAt74FExf6M8FStPf4Ux2VkZDdtpoDzAsapDm5vMj\nFEYrf5GDoA872wfCZp8DvFnLuLVTq6BwlicIZfnJ+SltK4cEmUJpTCc/kr51\nlKi59gfIZsHR6ht9gqr+qIhO5EMzylN71XO6CRtaCNTf9Q3pMj5WzgeqkX/R\nPWiSHhcyq0+Ouon+PL7vQWjvmrF65K0jhcK4in02WLWU1svDKou457Gwo92H\nDPGXGwKZgurY8TJxSrvUGCB1kyuGi0+DQ4XMOCDuhnI3UDYy74dfXvqDddir\nUDfaq6owXcb7LXgCBWvBsS7iOZSdynRqDAASIr45NzR7fNTesxNFLgZm4zvu\nzJoQ\r\n=7j+P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-ba8392-knk7057a_1618570384671_0.831464863006379","host":"s3://npm-registry-packages"}},"2.3.3-feature-740c2a-knk7udnv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-740c2a-knk7udnv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-740c2a-knk7udnv","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0b5e3ee1160d1e4653f76a3ed98d34f6de74c5b7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-740c2a-knk7udnv.tgz","fileCount":309,"integrity":"sha512-skCDOmnVmq3utPlNza5uYmDsmVH2SHZ13nC1y+eZDhbKrGLgqte+HoMnrEfl+BtRR5HGxCog15pUPV6u03Vo9w==","signatures":[{"sig":"MEYCIQDIjnEas9gvhhDP0LWbenuRks76pbu7BKkZsV+XV5qbqgIhAK207oGqS71ucqRJ9OHgnnRDIwthC9LttmYdnkig1rnd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeXIWCRA9TVsSAnZWagAASyYP/jYDvNh5w9mAL7Z8dD30\nPl408ENTO1Tzo0XCmg/mEESEDrhIQGW8mZ2DvqPZ/GtmurusEfKcmJ/KD0Ya\nMb4o7f8v8R7esGNho7p7rc2/R7RNCHtGcXgtrwk/971N8R7Mja9Bn6RbRuia\nM0bw90KdwdoIGhDQ26bUaTBUkO8Ii7YYdi5Y0a3Ly81e+eWNl2n4hxRzBG1y\nXR72D53itMKBaMV+YzA7Rz+BzbUannOhpOeqDL8tVQGEbOeec/RPvNrgHXj3\nX9ZyaPVPWZv6kcWTF+aOJu7NQuVeDxAQivZIe7gduAYfEa7yiCDlTF2G/8Cn\nSzFpE+xKHntgXiX/qS66AWrR7zncD7U6vnEAKiYanSnWyyx1fHlhPvsD2liT\n1cGHHlUL+jnzsGFd3ejD7NP+S+hAK5cMG9FcRsC+Bwa59b9dcaXg4zJ2qfOs\ndn2aPXoct7LKyZt8DE01d9WJh6RjJdJdsAnxpQmPj1Y+B2b/DzDROVtqAcP4\nr3uGm68nai/dy8YxXUgEmj5QkjTm8ujxsYpjpAvE3Maa+3iE3cAYciGKr6RC\nXdiHL1fwiQ3xl/sXVVbnzfVycV4B2AgDZhpJZtlqHoz/Gg1v0RgoaNJW6CMd\nV0R6ebMl8v+ijnS1rskBUYMzIiTR+aPuNg54gHsHaCeJ7W13x4Nabkk9XuRM\nWyHt\r\n=Vnhq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-740c2a-knk7udnv_1618571798323_0.46449301903681484","host":"s3://npm-registry-packages"}},"2.3.3-feature-f817af-knk9mr14":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-f817af-knk9mr14","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-f817af-knk9mr14","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f83f6d15096a1a45c6ac5fb91d04b3a92f72e1f5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-f817af-knk9mr14.tgz","fileCount":309,"integrity":"sha512-8rGPR73UZ0Nxh4oKS3OV+nh8bmdwKcz+RZZbcJ0BGnWMuqpNUoh8wjd1WNTmPw8WAAuu+RkkSjN0RO2WK9e4IQ==","signatures":[{"sig":"MEUCICDKLRb1IfRZ1A7vRsye6tUbe26nb/v8Nv61iMtSCRVGAiEAzgpnfu1MuQ5DqvOMevTOZTc5tOc7zyt67frkUTLcWUQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeX3SCRA9TVsSAnZWagAAixgP/1CvtkPRHFon49D7g2Z7\nBF2gwy1CXcAqfXKGdAtT73fQgZVVi90rr1+9gevGXu4SIlFkP7eP+vf5cydD\nz3dGb193mmAqDK0ar3dQJEl/OeZUsDhfUjz9lfYaEZXp7uIeC1vHuRRs76xv\nERDOjAI4TuXAC0VwdFKyxiDTRT3CkyIQYqz+KYrSkCDfafxn1we177hLZUFV\neA7RvPsDcQwydxq0H9OORAPUrTA+uwlmMrCnHvkdRl1QDmwvfafn2F6nWmkr\n5gD0WYUCyRm8OCq+zs2qs9jSdSm50WrwS8DgmGQHIQ2jxqcAHP04tzYxwKeK\nffoGIDHD4vYq/sXxdhNaWIwmICnkHWIBC3LALUUFiDXRs0H0oZmYBNJlAcfv\nF5d4nPIeyDe6oQMMuB0TV+QgXJeWHO1Wwct3ud95YosGAmLAduQCGn0FjVYu\nLf1AeqWWNg4DWvEYiEUtY4NDTmgA7ISDOD3pfRm9m1ONtkTVq2h9qyRE2Q/D\nqysMUbhQrg89EkUBQSMemoRH2svxv0zVnRN5z6BDU68aExded5MAt5jCL76r\nT6Cx3GE3UHIhUctDaRyZi9O2g3zH46Uw8gRdcRTr9qaqAX6hCqW8Llvz8Zxq\nDkGSMQPvRw3zXPOLxYHtK1N/0CrkWE/6xlRjLZOdpadg+XJAX4D2atuF4OHL\nSy4I\r\n=FEP/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-f817af-knk9mr14_1618574802037_0.3373838144500798","host":"s3://npm-registry-packages"}},"2.3.3-feature-5e9856-knkbqrjk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-5e9856-knkbqrjk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-5e9856-knkbqrjk","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f04edc6d7d56a3c179233fadf19f1cd4b51a07ba","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-5e9856-knkbqrjk.tgz","fileCount":309,"integrity":"sha512-+tb9SoB4e66gnRHwd0z2h4Fo4Z4nmj9/sVe2Pa4XrKtnHRAemXQMo3avcAqtR+8CCHScfEIQnPn/1xVxlLLU/A==","signatures":[{"sig":"MEUCIHXAt4S/R/Pn7ft2bQfEtLLittvrZ1nOZDWA30R4i0aNAiEA07ID65t3PyHkRgEWO3YuAG3UstxnjqXkq0HeLiYs6bg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeYusCRA9TVsSAnZWagAA1PcP/0rQTJzkUKOBlQyONpP2\nfaqPCDuPIjlMLJPDzujSddgTHeVKfXWAK4mj5ohTw6cntW+BJXf6cl4q6gDr\nwvi3Ghsq7DHfyjtoILlK4f3h4k9N7XxeL6drLFhBjZjHQ/fvbkvGX/peVoLD\nWWcS5oeE8Nrmn82Eio5CKBCvUv1Gbv9b4JfcXPeOxUOPEObJI4p68yj9I30/\nKgWRd3DyeCU4Vxgir50rukM4f7vUP37J4h+yyC0Xrut9N7Y5CTsOpttEjXXp\nYE9kYY3kYVuP67b4Z/5a3a4JL92YwtKn1HixdDuHYxIn9Q1dw0ma6dbArDde\nnPwfF34uHlFa/G6/nI3w0kEiTyd3tXfdSVde1Bq8HnCJEBcoVMVZjVGTCj9p\nVTVIJN9o+7h9DHmJMLyrNlbw51mjQWibkeRuBf5OXtR04CYY6zHrwmeVFfr3\nHJObdpHDlx+UJUwYds1uR2ZhFbxRcWOaW6HVCBZfhtxu7H7utp88gdZDgV8d\nJogqbSyX7EOzgFmAbiAIwuxiLuddrW/Fds326Ma1M/XY9VIRv+YgsUhm7OvZ\n3z9rovTTFMcCFjo3iqeLxbj14Nx9gQjcY5GbXlVAOXRzDpaz+lO1hsU+S4Dp\nceonaVyGwaGEe9LKK0TlfGggyXmCP376J6oUU2DTr8zuF5SRZXY/zkbujXcy\nh4AG\r\n=jum9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-5e9856-knkbqrjk_1618578347766_0.4392631252410266","host":"s3://npm-registry-packages"}},"2.3.4-feature-b6965b-knkbwrxa":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-b6965b-knkbwrxa","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-b6965b-knkbwrxa","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e6a1c2ea986c52d2ae7f1acd26d32a037d250c43","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-b6965b-knkbwrxa.tgz","fileCount":309,"integrity":"sha512-Yd86zCxJQqxM4rs56/kiYtA3UgdvJEnDc0CmeRZxoHqAeOnB24lmR5zG3ekbtZ/POQmAM0u3p1Q9+sjJVQaoOQ==","signatures":[{"sig":"MEUCIQCm7c1m6oA3tvoFdT8SEy6Q43dg+RMQiWQAaaegRDdJAAIgO+khuWXR70jSJcv+ZFgPD7ium3NP9b79pBlvvGyQ1MY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeYzHCRA9TVsSAnZWagAAVa0P/13TWC8Wsaew/BLLTqMI\n9wSOfxGDrVYuTnT3fy5Y82HVUTMTIlxjWcLGZsHiiBVuy9I4nI2KyoWzmVYY\nkvPmCNOr/dl0I9OV0ZW2QFuxmpcpGcjb2tn9eMk/L8H+7OJ4Rx2TaBTNI2tF\nklc9plH7BNCHBEYvJe8DQVZX5Iz0E2vGpytD1kkKxioA4az45FCbTl89wSfV\nRZ4//9r/2Y4SAjo5Q1HpZ9YBeKC5X/BS1fodP/7oh0eUiOFueDuRqi7zGAMh\nWQVZmDSp6YsBqgl7ieZcCeMs2H1maq8uvpR1WeaxBHXT1b4w45OARRKG5LSb\n/H1xKSU+ks789kUjlRazu0gkSfZF192n3VOHeX1QZvqMDkddihsLT6zlA6wK\n18VleSe7HOrqYpID8NX6WsC9Sz0VoTsWq40qc46+P2sMmu9s/KvT1AkBi2cB\nVnr7aYjHfcKDqUngn9lPI+QOoAg3iFsX6yhEzNWSPZjMUIziGRy+PZXBldJ/\nRDFyoPMO31rwL6i94t+tojnCeqaaO3Bn+MA9CuKrUsgEFH1NQ7q4+THzheU7\n8p9cD6xdIH4ioXjSVvLJPKJA+SAIkjKYa+UtYM3RjSeIu5BOPP/NUXDMF81V\n+B7EyA+/zFTRUsx008SvyxtLlOr/OZvsFBA8PTcWAhUM14/iCQf0JTNDYdGN\nEP5V\r\n=qVas\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-b6965b-knkbwrxa_1618578631004_0.9821553250911341","host":"s3://npm-registry-packages"}},"2.3.4-feature-29a2f7-knkcsejm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-29a2f7-knkcsejm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-29a2f7-knkcsejm","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d62a3f2db7de207f3f732d6f03ee46f425b778d6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-29a2f7-knkcsejm.tgz","fileCount":309,"integrity":"sha512-AFdQ311Lv72v/XIrBfPLWddAnUnXs+MTQsQWFW/GOh3eVcr67Rq5HBYK0a50dFkugA8Nzl/qJ7QYd07ANj+vxw==","signatures":[{"sig":"MEYCIQDX9gqbMcsCFw+NSzBypNp7J/E2JA1U5ECkjJIubIub/wIhAMT6BJKO4/zniuu2KoxEnsXOb19gcHr+z6h0rQIG7PfT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeZKNCRA9TVsSAnZWagAAArEP/3JAuT+pevR+gSj/bOVG\nFHRciFOjBvB3oWB1udPDFfB6dyOxTvJYO4bCVWiPEARvUdLptmzQpYJplqe0\n5V5cVh0un17VlLoXa8uawBeqsCfRdOa4FvMr95jFIGpiNvXN4XVxWBRSqjcF\n1ZHRtlW+f2mfq0L/tOlWJ24De0vtJ85GX59fppt4UWq5piDpkYbkXt9+S6s0\nOTypBrB1ixQk2oxgCwVIg740x8HrYpZgf61+p2v1AH/pfV9BzDjd9lXJ9M+U\nxbwsF0KTtpkXcPT/nQcMpmGwzfdoLndKerWQOE4FWS26CXN19vPpb/v1Ndz0\nSn6IS6cY03P4lLkgw/ZHhCs1hDDeQbYQkGqbi5LhkvtONrI0yi/4niQwIyRd\nRimB3lkE8orXg3p6T7hyG6Hinywee950m6I98aqpOBe3DrKh7zTeiMYvRxf6\nmNElrjbkwcxykPm2AX4egTfEC3bJrx2cFtbGl0nbz6jjB8prXgVfe3jWi/CI\nTgXBiRrvYJRcRPRZhQz4r8UeTnN8NWBYYddJdEA6hQx/inRlXYOb5Yd5mkcz\nkfHWnwolU8e4YdaQDeU4g25FVC1bJH59qtXWoPQ9Lr8u9IneXCNzttGipkAt\nI2DPbuXejbhXwvPYC6hnlOdmOC2cvdEJAmBBTp2/7abqvbff+pW3H0oGN8Tr\n1JyY\r\n=7+5j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-29a2f7-knkcsejm_1618580108879_0.5203459533789236","host":"s3://npm-registry-packages"}},"2.3.4-feature-698483-knkh6agz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-698483-knkh6agz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-698483-knkh6agz","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3e42b82ae28c713d647ed3b32604ee850942d75a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-698483-knkh6agz.tgz","fileCount":309,"integrity":"sha512-fA1fg8RV7wSLkEUV8vi6DFa3Jg/G2lbLe7WPNMucvaMHYUoPzqn4GL6Mb43xnyUI4DFGHnv87rt/cIjfWGmGZA==","signatures":[{"sig":"MEUCIQDhM5ZUrhHeENetuLgaTj9vNuPW6NzWNsnguppF5/a8EQIgEppQGAakTSi9p9TGQC3aN7VaqL1VqOe37qyeMrYVhT8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1553384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgea9QCRA9TVsSAnZWagAALiAP/jP0OPP9EAar1XvGRtHX\nmd48pPaJmuho1mxpZM04heMS3SU+SVsRlreFu65KOXo0ZcgLULQWAE7Qn33U\nhucVwSVI2NqwJACa78ekwpo4ydqybALgrJLyTqGRgBtmzYwHQrbeczX7tj6/\ntgIkbJlJ2PdxPSjxUIJfrE3Pkzm6aJY1N9hMPutxtKTtn8hgKTOep83xHmq3\nvGaqPjsmzf3meQDvaIk6z50/hVcjniqVOL+UsDXlzjWRfD473HhngJIW3S5e\nGLYiqyWLJEP9Ieku79sKvwrSxm6zUhJAwIqur8fDfEjoiEay59igVkq35t4r\n+EoozSNB63JQU1z3sSpqOAX2nmga/xG2ldWzh3drCjH9KlAyiLx1C0NMWerU\nGz9DbHbI5usBm0MTJgNMHYYYtvCPeUaXXEYF+XYBowlPh3/ax/wck6fdqBZf\nc4+e7tnbzEmVyAIHNc7SBRPmzVLWDPEVxvKYgQ4ejhVVpAkt6nVMamzbPa+o\nGJonsuPZcxIugVfzgSOEERgpp70Xku4tkAaKn8ewZrl09Scn/ystX+tljzz2\n79ueXA7HxT1t/SQrGLvCHTyTIdcC+ksvJw+0tcUyLnrOeXlAppVW7V82FA4F\nRMjBYgVXRCVSBDb9Zwr3hv7L0Hx5aRgPIqb8yWZdlfZRQr/ofiHpazQpINoQ\n3dvF\r\n=zY0Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^1.1.1","@atlas-engine/process_model":"^2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.0","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-698483-knkh6agz_1618587472123_0.8953928320747853","host":"s3://npm-registry-packages"}},"2.3.3-hotfix-018145-knocd5m2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-hotfix-018145-knocd5m2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-hotfix-018145-knocd5m2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1a1c1b9063bfa2233b2786a0d26ef3d5820ee7b0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-hotfix-018145-knocd5m2.tgz","fileCount":309,"integrity":"sha512-Xj8Mh1LfsLH+Fz6PtQ/VU1+weR0TAE3RIP5XJuQyg7EWMpO33KwKtmcLUglHMtKPXeCFOrn2BS0yZAI34MYo+g==","signatures":[{"sig":"MEQCIChxKN9k8KRPi26S6scGjcVCT38m6hjmh+5rKGOqIBOTAiA0jFXxqmacamsVtxtp8rTIZQ4I3e37L4ghydHg7GX1Bw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfUCMCRA9TVsSAnZWagAAGBcP/jh3knWV2aBOwE1wwrsT\njDbzl1aMPMUdgnfP0Q+t2B8DlRCKhZFh623Tbfq7tXkMZSZJAK+sqAXTQQ1Y\noGg0byuZiVgIpe/M9qJtMThXIOS7qvGOLCR6EbO0rJ6rO+t1GU94OB4rIjs0\nLqGwYKH6J8GrZ1BlIlLFVzCBTOFR+pgedkmqcaFhaq13alQ8mpSYJLtaiFVW\nxGZOnsu61QaJOa4B4dYq+6LPVmp++xaXDKhfUMzpLyeyXdLeG7JrnljSh92J\n+lhAw6vXIeF6gRdfjs1nyN2+iHOrsWVLYZBP/HS16Grb8WeYhOupa79LRV2D\nKObM01Fy98DcY5CppuyGNy9W33apF+rIJgZojv+9I7Ue+MYFk9VkVRa226mW\nT+Qk90/Bb43Knzj12d4EbWfvWumMLblOukx5yRyozqe99gu05vUTf49o8zCW\nRYIO4xglWpTlZyxUeZZDcOFYujSwngk41KY+EOgzBb6LErAHyOcR8ZXSSpu+\nIc+hvhPdA1gDIbERaIKf/XF9Oj82AxP5TEvu3XimQD9/nLLcJ8g18cmE725L\nCvHMopaUPFjFni/7YBJyGZrMBBfQW3UJa5paosNae17zDWXGh7jqTKBzGfg/\nsBA36a+49rd0t+zsHTT9ThE8Tfm3HYUon6iAySBe3jXveJwLi7uxZPWrj0YJ\nAVGj\r\n=F4/t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"hotfix~fix_error_messages","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-hotfix-018145-knocd5m2_1618821260027_0.4957271603263582","host":"s3://npm-registry-packages"}},"2.3.3-hotfix-b19ae2-knod4gil":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-hotfix-b19ae2-knod4gil","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-hotfix-b19ae2-knod4gil","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b613e290b221b27cd9b25468744c19f14c5c4a05","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-hotfix-b19ae2-knod4gil.tgz","fileCount":309,"integrity":"sha512-1mHNX2L2aAZUgMENPOMkfOoRIWbmB2yUdcaObr40YKMczy37h3UZKqLzrlMLC6NRJH9oA3OAaMKhr4dyEKcBcA==","signatures":[{"sig":"MEQCIHRlk7EJj9iwDXX7Iu1aUn8EXT+c6s5mIUAJKnlI8V/oAiAezWoI+sN8oG1ozh45hNywIRiJ/gQo+bOUIKmjIGAS2A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfUWHCRA9TVsSAnZWagAAFngP/1tcuEumiVXnv0TDhlxg\nG91mQmuidfgfQxtAS8KQdgJjYAXJghRnPKZyDbdlHivZCaJaQqYD1epLKLUc\nC/UuSXlAsmVPxLTKYeTWqfnW3vkER9zCV7a5fpZt6S6oD9G5X2eFnU+Ro0Qg\nEy2A4jVG/a5B9lUL3VUR7/I2RPo6QRoqw4thw10o2P5K30Cfhl4iCXKF0iEL\nQ0DiwOxFEPz1j7ph2KCD23Uj9ZkpYCsY6nMpN9CVYW5al78BAoW/hz9Khfom\nhf5jcG4UeosvHjQSWK7/hkYSNaKbTO7sVfy+mXIdoeez+i+HlTpWejxjOt8a\neqLQ6xu8MDFvw02xWaP5mW1y7rY+G4IRBXc2wPwjkF7RcVlvGmwKuzqwUeuB\n/7Oilt7JIvUUOS7ofFAzRkaRADS/MawNwwR2m0zMHGsGS+F2QlUzPRh1aXov\nflukXLY1ub9bNht+NrPsMy761ijBbr/T4KUmyZ1lAoGtiv7h1UxnLCdDH1rk\n5FGbmq6gNHtFzJ7SnfHThwMo7UXAKon4XSj7czXoz0sNTQiBB8CwYbqLaYyD\nmWdVWZERZQkt/D/13mLoGSDfTdUy1lbsVJw35bi1DUHb7Y+IwwMn4ULlvWk0\nC+fua8ISRy8G05WZZTCjmLKwdpRyhlignUrjbR0bCZxw8ttEHqWyv1859nhD\nfqaR\r\n=x5eU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-hotfix-b19ae2-knod4gil_1618822534659_0.3474785728261234","host":"s3://npm-registry-packages"}},"2.3.3-hotfixes-c98abc-knodu15q":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-hotfixes-c98abc-knodu15q","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-hotfixes-c98abc-knodu15q","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"598525d6dfa4389dd711f0abec9089eee1912fe0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-hotfixes-c98abc-knodu15q.tgz","fileCount":309,"integrity":"sha512-ozVBf0kaeFe95F5dVTRcFLyDPSyEoNAIlw+Rlpp8yXmkIz7X8siCw2MEiHPGJcRH6z0BsWnQ/RDwOtmgNzJyEA==","signatures":[{"sig":"MEQCIGP48XLXB5kumXXxRqZPi36S8BvUw3WfnbUpDPPuiggRAiADagMBVz5SoAUC/xsAS/VduySzBS1NSodNHHZ233zlgA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfUouCRA9TVsSAnZWagAApkAP/AhIL34IEJT/lseZe3pI\ngtHcorC/z3+h8v7Cr0xUCsZhy9/WtnXFEKCqdlc8RgjzzqDaoNRQvmRR8OSM\n75SYotuwRMK/xIAzLXldbbriDrhkaBuijzL7hnWTTNewCSO4uhVmUSCGOiet\nC/Sp+6zPq9hAO1qJ6crlIN/+fCTnLaHTmZ42eo8QGojfs2rIOH8tt2m3jwPO\nP5AhikwaIUMI8KF/F4m0AD5ZPZOk9U85zisNgqzAnBeY/ecUdcaLAf3V5jvv\n78TrSOj0OdyryOX4Y9sfeZe30KSV3k1DwR6VorPh6Csozw2RQ7uGzTglJ1C5\nC0UYO8lVzigIJ2L/h1a2W9NgxOeKR41mbV2R+Cl6UIY0U6/O4HWBduuCmVYL\n47ehaiGP5KZgU77+55uV7Dd9bjEX0NrLm0PEqGyGoijHLfmfzoG4Ua30JgNJ\nPcXjVpSM1Kx4xTH+UzBaaDaDMnOdEWW9zKNhYchN37VhLvQaPhpR680kpDpp\ntXZgCWp502eJouSw06AAeue6xstu7W53/t0MJObZ1FM7Rc0+ioB5J/MZAral\nSIPdLsWdtneiI+yB7GAWEcVGYuylCTq/xTBVeN1UJnQHcbru+F1HxnPvTKS/\nFM+uUvJxhGvvSzdUG/BXFOfKAknN1mmtE+QDT2t60OosX2zALq4+l3W1SAYa\nVh21\r\n=XY6j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-hotfixes-c98abc-knodu15q_1618823725552_0.6330865303826176","host":"s3://npm-registry-packages"}},"2.3.3-feature-5e9856-knoh1jhd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-5e9856-knoh1jhd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-5e9856-knoh1jhd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"934de419e02befff9cf1b2d304ab913e4dc46bef","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-5e9856-knoh1jhd.tgz","fileCount":309,"integrity":"sha512-mbHk5gWCxe6Ve0ZUpNIXas/Pp57GoWWgBFP33DTVoMOf8O8JuyaEwq1McbP9EqLlfTTomfQ518SM3GXddZaPXg==","signatures":[{"sig":"MEUCIQCJd2ROZMxA6D0Pi9I2kdsiGIR4CkltxdBC38OI/n2ofgIgZyZj+bs/n2ioCugBFZ0HeVtCgRpxNxjXAdx96CYdLUI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfV88CRA9TVsSAnZWagAAmSAP/1R/xpH0W0pEIkipM9QR\nS1KYOLPRTjvEpy4QCuWZkYDkLjZZPwzo9BabetNXTZ4rF/8G4TvMghg/xUtq\nSXeY5G9TBHlDiePDT8JP1Nt7x1CWb3Kj5lRUek8K41H1JiewfuBz+reLswnJ\noxCJPkjzxpVNfF0w6Xt37flj3o8uutHVSt/oLuIzl8CkHxYX4Md1Aan4mUwp\nn1ReRkugIASsgyjnYVB8pZFPKSdq0BSWG3Err+BpeMCInNdYbpFmSE1ejF7s\nS9AlQnjZsaZ3O6B2B2H1A9H6zxWr6/ZnKvsrVsA5pCgniGoLkFiKVRNkx+3l\nfotH6fZJxqMMobnR856R8sQg1Os1IPIxwo9ky07J7o/GAyaYjYbqsjA68rZm\nKx1pBKOChy76z5FtL4jxSjOO+L66juFk5gsscn05aJv7eMBUljC0qG08LtGZ\nwFMdO9MLB3Tr2zKL2SBBvHgfJvdJp6gRVUi7GgclQGy/5xxxZ7MKkfHUN7ds\n1WgN44yZ54WvB0Tsqx3vVaIhRE+GXzvOjRNSAkOZmmPGBZAyU81Gi3wT9wPZ\nQJu3uGVOL6U5xMvDioFM1GHS+gZu7cHbnc0eIzEaMAuE41qOte+o2zAswRbe\nlq+Jt9Q+RQ0LVmlSBxt4XPHsT1ivi2H2kN8CbSbqGT0OZxYwka4Zgfxfn7eY\nPwWd\r\n=HXjK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-5e9856-knoh1jhd_1618829116019_0.8241215657745884","host":"s3://npm-registry-packages"}},"2.3.3-hotfix-3eaff9-knoptxgb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-hotfix-3eaff9-knoptxgb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-hotfix-3eaff9-knoptxgb","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5fe1cabd26a3fded1988b92795ea8d1e2d210971","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-hotfix-3eaff9-knoptxgb.tgz","fileCount":309,"integrity":"sha512-TCWQxTKT2YOlFs7w4z0x0FOioMTrNlOMiCn/SfQstMVWwAaRcVU5/6nBbW04TJ+OdTzIEsgvSEqKxz2HLBw9hw==","signatures":[{"sig":"MEYCIQDNvG9+A+U7xe3KbLYp8xeCIUC8CZyx5riNh0GHLYx/rgIhAJrEj1jewPzbxIsFv8rEt+dvRdTHUAWNVY+QjitsvRce","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfZjlCRA9TVsSAnZWagAAJ/kP/1Kw5FVJJ9aBC4WlpFLE\niahdH0NJmTj3h/jUGqaPPI/Y3bQ0aYkYCCvQ7IeIp7J4twJP+2zrlRGaIlmB\nX+ju27XpyvKUALrnDSA2G6+08DntSPYaaJtugGP82Vuqp1bEeU0RHgcLBJIa\navSq7Rp4FXNzZmrQC8Gx8+bRIGI1ybn4nm0uAR3iF0oox8F8GrdRHKayxInB\ne06SXV//odUMl6oMs2PGZR2EA1UsZ0CcdUy9OMylNvJculGjQvsI71jAv95X\nYrBamZAvwe5gYb6S6BHpo5fIPM+qOwWkLFBMDiFOPV3EhZC4257eQLpb4WZ1\nbKmt/IEPskP3ibR/ZIoRsq4vg/SyFjBt0wUIA7v6yj+Ftb+/YuN5ni+S/623\no9S5n4G9cWh0xLcd5ylvmiNrtsBnZg+Vi8Pmc/j6MtYf8zRxBF3fQJcRq6U5\nSz3X7cekVjz7T6VybF+n7hzGvmtGYwXwcYC7yup6xw2jMR0fwAAUjujVaYXy\nB2xpwwnTGaf1UIszecS/yaY3FYRYBCfPe8UBJrAeRvX563k4cJr7AUJrmAgA\ngCCfcR8HvdGFx5bxuBbGmb0BEFQIGFHwe1VNVXPlQ0Si8rHK1sobXjTy/fZ1\nmKKMtgZLBbhnRx/1DcUdxxgQ9799C+G/u76ICPQVPWGe7a3SU51AHhGophGa\nfviD\r\n=6LQ+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-hotfix-3eaff9-knoptxgb_1618843876835_0.8701182892164074","host":"s3://npm-registry-packages"}},"2.3.3-hotfixes-03887d-knoqbly6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-hotfixes-03887d-knoqbly6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-hotfixes-03887d-knoqbly6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4ed670e67d974fcbfae08e05f22a277669e9f7d5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-hotfixes-03887d-knoqbly6.tgz","fileCount":309,"integrity":"sha512-wMYSTBgbgOxs6hUqOvaOx1MU2/4Yoj8Y6NuSDdbzEIwTqgaljiG0Non+Uli/SsEMfmahIt1ZHgn1AP9yNYzNtg==","signatures":[{"sig":"MEUCIDJ8sdv+TL3zP4S6o1UJL9bp9dFuqBx5n4Sh/pAAj3j5AiEAlidfm+8zjDu14UzdVpROa29ZA+hLos/itUxjHDxVMBg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfZwbCRA9TVsSAnZWagAAux0P/AnduNFa5el8Jg4GjVzJ\nlhhfF3woOM7WAKnRBnvB/LA2U9CalhFcJVG9U61rcYAGFqdKyf7PSEn+iMk5\ndpMNm36JzFrWT5GJEOnI3u67L37tv7RenXgSbvAwi1hdk03UG0x1M/3/Hp8Y\nigtYjn0m1shmPpEL9W2Jp9xoF37PnAK4LO3iocQ+eTOzulhKTuA+aIB7m3YA\nIrTm2SIMmEejV0U/0fRJkPKQ67zsGzqUzVJg8UCth+AiI9/6uJO0Cg7JHciY\nUvquxt3Htz54qjTkRgchOOsARlGMfJOTGCltkZZFMQK4clEX/6xh0s5oATJV\nv/BD2yLuIAgugAc+4Qj0PHxvr5GyKiRACI4cO/gLFah1mDBHFTIvn/dBc+GO\nmCoMdGI6vD/V8pl8A/KCDk5zO+OlfFp0pTkFM9fayskp1XSIQohpUcCp8czk\nVMOx9B3Rme/xxbSOtfrS+333i9Yqj0tOSAVAUY5BCcTsbPZZ4u/7bc/sn/O0\nwXgIbYuAB9J4EL9wpo6M0bwIUMmj1SQalc/wXwc8uFFt+oQ36732jviLCZT6\nrSQh8ZGCtDa1MihT1F2bZ2hRQJeuJoob6l/ONtHqJoNRXc8v3yMIQzoyhc95\n4GQCGg95fJxcgSht9m3qvqsNQKOz/ksjnLh1T8YsaOdqwQgD8EZvF/dbaSxu\n84N8\r\n=JUzE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-hotfixes-03887d-knoqbly6_1618844698675_0.25585824723359174","host":"s3://npm-registry-packages"}},"2.3.4-feature-72d19d-knozhr0w":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-72d19d-knozhr0w","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-72d19d-knozhr0w","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cadd9cbd7ed21d469df8f0ffc9d05a514bed6c41","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-72d19d-knozhr0w.tgz","fileCount":309,"integrity":"sha512-49y1aZ9o0QlOKf+VjNF2baxMj5MGqUKRsTtFnXb3Pewok4pdky+kcFzT2yekYstJYPL6sqfFrfr8hQlXGM9Ppg==","signatures":[{"sig":"MEUCIQCQOkjaM6PjAHG+mtDXID4HfhR3Q+7xnfDH6Bfgv6uj1gIgNbKLShTi2/iLYrKmmDcHqLhs6iBnxKcT4wB5fCzRcIw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfdhLCRA9TVsSAnZWagAALK4P/0VSIInRsCoqCcA4d3UT\nCR7lrdQkisqdamYBBd6hjeqphePsooVllyOrW0hSYqJN1+DLnzePcTpgEpeb\nZkMbsEc1CiYBpfLAJQ0RxliNocMD1B7mxc3aDLNerQDdAlT/VN5NDvKKrdh/\nOCR6dNCTtHYlx5UVKnsDxMIxKy4jl8zmwig5i39f0i4LbRpjM0/9TWxAeErW\nXewzb1lY85uM2Nm+e+rTcISLDMl+yUf04OwpEgir2uWaN1Tw0bgwwNQ3Yegw\nlupDgKDVAzbx5vQ+A17ll2qiOW/IUsrqgGNqzrbUeUU6qg/w/ZRX6IQfSnRl\nngTsE0XhWEDKKlD7OpiL/pXjmWUEpOIa5oqCyvzvBQ1i6TUJxahx7P7loBcH\nBk75ZZzzHtx0WHw1s2v+cn43HROm3509+SLd1fLuVaD+xs4FJ7scSvX4vyqj\nTgJDJU4+M7lns9B2Q7egiH8C4h3io6Zn5kiTdnjb+5V10UiDxdph7kbJJLtY\nAcFI4U66CtER4/edn+p1mkZZWAOPr+/VnK1cCbGXOkZ7alYH4MI0k6PHwhP2\nO/R5l1Ra2Xx7wNqemyI7l/3WqAHtE6A5RoNJGfS1qSnjCx8pwYmAL6Y/vN3n\nANE4fuKVHehjZPtkVpJKtLXo3GqdAPaPQSdfwomUsFcxFhIu8hgFfWmLZsF7\nZk+/\r\n=QEG/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-72d19d-knozhr0w_1618860106763_0.05875606119555399","host":"s3://npm-registry-packages"}},"2.3.4-feature-957d70-knp587r0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-957d70-knp587r0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-957d70-knp587r0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5114053a5b276fa74333be7cbd4da03f9e1826c2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-957d70-knp587r0.tgz","fileCount":309,"integrity":"sha512-/asi+eCiw1JCXtyqp8eBkirDSlN8uJHwhhW6xEbpJNDt0nfOlNI2IvD5SKFXdMZ4WYv3ZNO1hX9oUgBx8pxn3g==","signatures":[{"sig":"MEYCIQCfUTGeTLsdLgdKHatzaHmDkpRLivHnP7RlqBB8thiejwIhAJUXd4cfHm/GC8wDiElTgLf+ssWNbh5UQ3xEFokUUP88","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgff3pCRA9TVsSAnZWagAAFOMP/1+Z5v/lT5EDg5xIf9lc\n7NkfB7+5UEu493jiLGcgBVVqArLiZiti5/buJLnH3lAwU3s9FC3e/pVxi0J4\na0gF8mvmhTUuzIGdSiaEEloZPyQwXRYT1DaQSAmy/m0CKGfKwWtUKSoCfsMT\n7kstpDSJ4C2ABCyvxoBQhSHI8PiOnXDWnexWtf72wxGOHb22jiICBLTTI/Q2\n8/qNJzkcGRNRi+cjKE3bPTeXLagKQoKEOBHjN69PRFlhelWotuzSq78jCOZa\nSf7wX6F4nuX277OdHUhxaOMzehSRGx8lkEqynLpI939ruSqD//vydfnJUWlq\n5tK29oZCd5/7bzbakoruriPYnGr3TM9DA1G7fYSeI8TuiW1uk0+RBFc4AL5E\nutAjwo+/vTTnChVJeEGDEra1S6SWzjpj8ljnuCOlKydZou0QAaePwGzeh/wD\ndqg66ZUcPp97Zj1ZvPJJnxMP2dSB7LqxkCxI/6L+4aGmujBI9GubhLkDxVNL\nwlcfNHr8GFtKS9NlEEbKkC7A6fF5GxaYHZkicfdTho56rsaITL3+YZuPyqjB\noSPIuMoYJhVKeVj3xkFv2c5Od55r54E7CriVgmFDD8Xtc+S/1aoOe5NIOVHO\ntrnfjYbb8Ok6I/IJ4kAQcQs+C6qyvWXLJA6W+nGKYD6rc6DfS6IxfgjoeyF4\n4M8b\r\n=7zWA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-957d70-knp587r0_1618869736726_0.8185838108942798","host":"s3://npm-registry-packages"}},"2.3.3-feature-cbf35f-knptucie":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-cbf35f-knptucie","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-cbf35f-knptucie","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4307bc2f22a1d792852e87d7af23270f78c70bcd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-cbf35f-knptucie.tgz","fileCount":309,"integrity":"sha512-qD6vhO8Jc2Ooj1xhsaNul+6/BY7izcPLfGt0BNWsuC7+uwJDFT145FeJhrGMu27ryjLxgtzsefaSFgSkEOGxgQ==","signatures":[{"sig":"MEYCIQCMT2h92cxwhPpYYSYdbHxVo+1dzrU5NI1HYDOgjK80SwIhAMHBnWMSvsTk8ywBp0RUYs44CFridG83HH0R0K4ccTN0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfp9pCRA9TVsSAnZWagAA85AP/ibKQwJ6fLpRS9tsczRh\nwIFOOoryTUSAgaroDJ516GW4XVvetNCnSCAGm0L8OFWY6NQ6T2mN3jbDwCJP\n99Pl1jzqeuI53LBZuaYj/NiHbIITwe+xBYmO6yQlRfXrNIuPAQ3ecQzlms1V\nmXTtdjRyIYqQtq4db3Z7YllQ9HRZI8BqWWlXsp0W1WfgWRpobPWKH2RxR6l8\n3vYpJSjXg3/WtvwDvql9v34jOrhDVbA3mQ01tiEs/iRWGu30U/HiKS6cnRUN\n1v/s+7v67VBS98c5ZgjQYvvHTTEZms/96qwDrtoBPKzxaJvB9ic5qPmDMPA4\nibgK8PLC5/+35j6llIXzmH+s4t60fQPSBE6ulz+cXEpQrsjFLLhXI6lDb2uU\nRlIzX+hLpmLgUUClTVzq6iNG1O+4hgHYjp53MXjsIjPUQBhHeEfml6qM5ftJ\nU1+gCyrNkwToj6F6mD5RKoiwgvS5CNvW4f9AR0as9o66D6E76BxlGknGJ7eb\nukXbiRJ2egsGR1GD18jtVHrJstQXh+zBMFyBc2eppSCBssyKKRNd22qK4p3m\nd9egu5GdoDbeliU6Vt7p3o94OsoAf7MhP2mYkPqvUpqmTP6mAdDKGqLmjxgw\nWdMdqEGrLl1yiyBr6dObB92WSOrwUeT64jH5ApPgNPT/pWYzLjaWtCjXt/C3\nwN4v\r\n=zMxv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-cbf35f-knptucie_1618911080535_0.4981802726527602","host":"s3://npm-registry-packages"}},"2.3.3-feature-44b7e2-knpvtir9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-44b7e2-knpvtir9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-44b7e2-knpvtir9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2c845ac66ca56c2f743cc06fdc9caf9437bc3f0f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-44b7e2-knpvtir9.tgz","fileCount":309,"integrity":"sha512-MIFAhcGN1cC/HhLicNkbfFMLsC4lIM/XLGG3YCd15H8zEYs62Zrs23qWlmDZVAHEVWnxfrX1HhHoW2u7jdbG+Q==","signatures":[{"sig":"MEUCIG28W+FpiTT+nQQ9XDhWCp4yMbdfZgn1hdzFOAWJUOROAiEAr+j9I+tpcG3EbrjS8p3fbQ572pOd9J6DMj03IGBb8/c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfqxgCRA9TVsSAnZWagAAoH4P/05D/+Kt2fLwEp9ybxQL\nINDmxwchaOATg6RbP7MWBKdSK7A6aATnTzbQZe32nqXz5ff27/7mqo6eA8V5\npYriNgGWAIHa/cVIR0MizVBEMDckS3KtnbKIje9Ysb8nyPRAZXdj7nzCZgfK\nxS2CE7ZWNYnuwwm7FCSjAgpTxVsYF1GzEKoJtedxwnFERoDxtW4CotLGNQSu\nixsGAY4/S9hNNW8kwKRNfseLdxoRFXmj63wFlA847YhZlSQU4FAJCxx9r6/6\ntKh3cWwuqOaAZA92mhMsEZUjmtC6yp4DxGFJZImJb0z+xRWVTEVP16F8I9ba\n0+ZiZ97uiWa6DrFv6+IiEjuLy32NpW555zd4bPIK9+MvVaRm4aC40aF2ZN9f\nD+3Iuhuz2f85XUQETeC5yhRCOkcWRZres1aX+Dn3lMKnSLMoEyTUj/S70qdf\npR6guMb8G4vgnuLDCab6ecQHRA2oeVZYRP/MmhhgQO81wKdQbU4sFQM4azDc\nqerzwX8zZ9Dmnp4TUTzVMwcTbmNhXkCcHYisyEtf3rfaKenSq11FMG9UQl7g\nlaVknt7DuDn89NYXSRn4d+kEuGAYIBjcIJrVlvBp84B9pgeueYYnIra2nE8S\nUk/1Elsh9fTLerphO629dztsohQgR8FdYCFGvXjJvj8FnTGVUIcqrjHO9Vzn\nqpXH\r\n=ALR2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-44b7e2-knpvtir9_1618914399970_0.9981723228064028","host":"s3://npm-registry-packages"}},"2.3.4-feature-084fd4-knpxxngm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-084fd4-knpxxngm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-084fd4-knpxxngm","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"83412e0443293fcfc3ac16f90030a0a660cac4d8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-084fd4-knpxxngm.tgz","fileCount":309,"integrity":"sha512-i4/IAidONLpgb6BGS43TY9Q+SS5fk3G0W8BW1ngXWzwLgngPJvVIeAEl0We57hwk0B0PBCGa5uouNGertMZROA==","signatures":[{"sig":"MEYCIQDULNYTG/uPVS7jngkmUAYzBx/U6LweUYVJVau+YubRBgIhAPwsgkWleHfU0y1iTF3sh1u32yZnV8nG+rCyUTeVxSEO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfrpDCRA9TVsSAnZWagAAKykP/02dK3EpP+PxxYS7FlcA\nAoDJWXvRl9RbbVuzNUqGMFqJXC4x6QZBxo0d1OgOFxZ3W4HfwnmTxMxP7A+T\nNvYArWG+cb+qkOhjFshq2mY6bUKI9sR2jeZ5Mw1+hgUEaUHZNeBlQzEmwCTe\nqtDMIuwHeK3wAsbBAsdNc5uqNN58fLcqUsQYjrn3cV3qyAjSepe1UPSt0+fO\np907c0ZFnWcdcaXDmOfEcz3FuTZ7YHdxy3xo0xTD6cJjGMfQRHMemXF3S8o7\nmB75mmtIJPgX7ZrFA1pLo5KKpkN9n8cn9v964o0SE/Vu28D3LWHTstS8YAAF\nxcNtPEhvNcr2NznvSEi+iTIzB/8ZBPKWG2GAB1321klMWRc7WEXofyBD5Dcz\nDkTiIBvNNgOqFlEhOqXQ+0qCuetlQvBAIBaGJcGlofQ4exzKmLvQ+Usfe/d7\nC6YZRWfkXp3+/Awtq7J+p39mrbMYqAD/zL+tmEWkiZobzo0txFeuYzZYT19m\n8QAh7I34L5ucFGrchIW6MVIDiQjKPG1HWf8vvL0IWin+BUtmoc3PY4JWC6nq\nghODu5XAQPh+0Q4k8Y4pM4SuhAUp2BSowekrjVcsuySNFuGJ5zwj9M6xZijN\nOqmXC8n/Xibj5G1mfL+TYlbvXIoiGygUVa+11Vnu5jODbNzauJjdL9env4WB\nxwlj\r\n=KJ59\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-084fd4-knpxxngm_1618917954839_0.5507032109063079","host":"s3://npm-registry-packages"}},"2.3.4-feature-66115a-knq2iefm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-66115a-knq2iefm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-66115a-knq2iefm","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5856ca7b6a9b17270d943619afbc63c6f96e8a7b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-66115a-knq2iefm.tgz","fileCount":309,"integrity":"sha512-R3vg/gCrwGbVtX6tt6VFt8b2qxUSVL0Dv2qLGRfLqhgjaT3R4+kQw8/23/8ILOQwrfvDRMcsQ9RKF4d3OWnLew==","signatures":[{"sig":"MEUCIQDz2mb6QWw2yWqQ/nivHiv1dwJIW/mWN3KUIlfcleZmbAIgV4dXeejS+SjuKCOhrQJH6sPbnedHZ3Qvrvxt2JEatQ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfthECRA9TVsSAnZWagAAgx0P+gIY8wzcIXFj8NyLTWh1\nq4lTuxEGFReBQtl701qf0nG6DQ2/7xRRcBhe74ueorNNxJFBL91PUeH1EIDq\nMOPpe5iUrLaUl8KVAulWesfl45zujdGa66cb38EfCcG9ekNPrrA6uDFS1DCU\nx8wPrIpnx/IKw7fj5ycNGm+QhdEdWuynVCwxUBDjyAsb9jxEG79L28WSz6W1\nowmGgURApJZ6OeTDeqfaakbUaNOfuCX5VKIbWQe7kzrk7rKx6OmyOaM0cIRV\noZUmGy7ZmMrlKuC7jn9P5vR8AM39h4ys+RA793Y9c9HB4RA01QBkUdBQgEN/\nhJOdis/hv+ukHT/P+O6cfLtUXUzFbOVc2wIf+o68EtoFgmAZ9UiHWfhUMJhK\nXEdVloUcAgnYd/J8CFatq5C4KV2dd1nIPSjIUsjGuNEUemilyP8vTmSGfxWx\nP49eav4hzPn1j2T/kmiagpllEp1CQTJbpr5QQPRB/2g6G7RqmDqLUp6xY1P2\nD3P/tX6Y7w2M517Jpykx4DbJGPlIs5kc0SPk1jWS9cuPCXZafL16pU4LJUSa\n2CWhBvCMjJf/4VzR39RtFwt4xJyu4z1I/erlinOBN7EgF95JycPYLU2zl3ym\naSvhvLwX3Fri4K/q+YJRpvH9wtnO1SqHv+B3GN8AO1+2Xbt7cEYpRvvtYtwQ\nyFpF\r\n=Isrt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"feature~sort_queries"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-66115a-knq2iefm_1618925635904_0.002640835611494863","host":"s3://npm-registry-packages"}},"2.3.4-feature-3d554c-knq3pygp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-3d554c-knq3pygp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-3d554c-knq3pygp","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6f297b57d905da84ec6d0635706613f3e6b789da","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-3d554c-knq3pygp.tgz","fileCount":309,"integrity":"sha512-4JBJ8l/1QoYy6E7Gethd7JuwvIZ3UxEEoA0vxqL0FSbBNI7O9xpv7eOqCJEf+4jnSWqodvvSdpfDipSIiIdhog==","signatures":[{"sig":"MEUCIExE0YUjxnHWSQNgSJ3LsdgDmHsA6oOuTf24gwBXe3vGAiEA4IL7raZ/7XRvP0N8G3B5Oc7BaYWNc5j7ILTkxXAATsY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfuA6CRA9TVsSAnZWagAALS4P/1I9Kkb72Qgftvsfchdt\nbtzPdT2AvKZGYW3RoKp/ICQA0OhMTmDDEY/W1glQjmS6cU+X5tdJpdyO397d\nLWmqHUwz8GyY3HkUbVtzWBNaA1eGbmMwBt8xl1Ud+3wdp5IXK+MS65lu0oPi\np2Mk3e1etOgw6960f9aiT9yhfhxxG+YQGxU3MBhJTuME3gsYRqC+W7VFraXc\n5K3MfdNa5DGotVo60M2hVERq0BEkkJlra4cVIJLdabmHPzoantJbn/gT8Pct\nChbaYN1QK8GudYTeEQJMatm3Z2eUVlqtF28yh3eZZJ72y3bpfOco9PXyIFIG\n1kA27aW/xhaAB5GdmeTA9yPL2qs85CDVGNUQQH9bHoTVi1inj9lGUYGK5Arm\nw2CPdBS+TPyP92IGvGMuLDml6kmv/qxJGiEOKUhkPdOjXn5Jq3tvdkxXdk+p\ngIyeANFZGob90KSO9JI9uZIk/WPh0LNbd+gD3qXV+F3eLhKE00kkKsZzMZ3x\nWQsbMqo+jzeLD4Ue38BYKSLmZoGrkIb/ewskYnt6yKa0k0OjyCVkMmpKX7hB\njUP8slFAqtxhtRvJsgbzya+/w0cjtAY2XpesbVoH85TqNiXUzXbKi/wRzzYN\nD/2elGoHEPCXvEBcmb4IevsjmHnKhE9+YTwfsZ886gzLDHlppgGmSeyDzfyV\nN2JX\r\n=g/XR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-3d554c-knq3pygp_1618927674321_0.13144367029242798","host":"s3://npm-registry-packages"}},"2.3.4-hotfixes-2e21a1-knq44kf2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfixes-2e21a1-knq44kf2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfixes-2e21a1-knq44kf2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8ed1e8835338696255466356a3895867aa13a203","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfixes-2e21a1-knq44kf2.tgz","fileCount":309,"integrity":"sha512-KDS9flxcPnq1jT9eib3XtoOv4iTLpZ6LkOXgBqvgD7sHBfhTIxvEd7147K0YMUXMmk4uZINxBLvysFj8fCpp2A==","signatures":[{"sig":"MEQCIE42AKcX/VwUaThcymDOoR2usxLva6f9pLzDx70BJP/gAiADg9l7xeaegl5zRhxz/tP9H39P3D5B2j9Ma3tV8XwGHg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfuLkCRA9TVsSAnZWagAAs10P/jfK5yBsWF7dHT9tSCEj\neD937x2cKS8bn2MAK8z1OX8DXR+kRogY6sNKz3Jwh6YPoEH1dEs7fvTlZR9L\nQDyDm2B+IB3WkokStr64/EYsMEkHtVJz0g+tZhdl2ZePL1pmEB5r2KWBiQZb\nRQV3WlL08zGwhFGP6e1cdONiE5DnQrsexBDiGENFlcQdjL7CZZ/EXqNR+Y1A\ntJOrPqc4r0KsnxyJRkc7plkHtmNL1mjI9fYjZwosu+AzX74N2aAFlUfL7mei\nFC6k4kuZbadosYKRTpHD5W3FE49RtD9C16GTWUOt5mwt+WUnhVq/rECtuMUv\nxEpxY+nVyHltgEReFUxNzOSAvDnDNnYTYZZc0htf5tjaWAGBGQAgA5YhN+s1\nAtmC3rOemhajaAxOc5B7i+qP0/wIUPsw9KK2W2q0JZ9suHnknENXE2ng8thl\n2uzeRbtjasr+UzC5A7PCKGG4VBh6DSdp6UBh4dHDITSD3i3IIRCb4POxIj0C\nDBC4dZ4rA8u44bRbZQBSZAtL/h9or0teNnxQAhnZuiGbuWlrlq1oIfrULJIY\nSaUuuDUvUeX9NdiJCJHrEY1ouFK8jAVFM/KGphZWI11B9W6Qd4J7JRgiju49\nOXH5jwiiXNiFShUHf5QwjpYIquww8AlWJ7De+RpZKwr01MK8CGX0l26aUZIW\nElQD\r\n=f1/q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfixes-2e21a1-knq44kf2_1618928355598_0.499275089743465","host":"s3://npm-registry-packages"}},"2.3.3-feature-f039c7-knq5edkj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.3-feature-f039c7-knq5edkj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.3-feature-f039c7-knq5edkj","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"99755f6018c67459919c82373f3789254605aed8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.3-feature-f039c7-knq5edkj.tgz","fileCount":309,"integrity":"sha512-8O2VJlOHyfuDWLuIZyGdR9cOPMFlGrv0V2qT6LWS3+a3kUKdObezJwR/Ye0cUKJvdC7QyVcGPiJBm6oh25CGIQ==","signatures":[{"sig":"MEUCIQDmD9X0j7UxZ18S+KtI5C7eckAXh454gLhxoM665nmyxwIgD4Oh8oAxiyzVfb54lXrDcNj89SZgWhAyZ2vOywbrqgk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfus9CRA9TVsSAnZWagAAKEkP/RuYlG62mFf44YnOR8OC\nEJhoEV98f3ysLR33gLXNNgAOn8TyCKZmcR1tyt62hHN7XRGF8bWuptG8TnBt\n1IQ7gluWlpR7cdSSiuKQ4+PM3+hekx1cE+BaMmdf4/lxu+ERvt9vyuZGvqtA\nd7/U6j4y/Hs2UzgAhIgTb7DIKHOknXaD9PhBkWEtcorzFs+oOQlsd0C0VAhm\nF7vOE6WvKeyTn6043sS8Cycr65LkwVQXXGKn+YJv20D27itmmp08p5P+P3N0\nL4rTTzzhC5Jqn5TCBrdPI6WN6YjIoI8MqPzoso/isoO8pAv3xr/w9q64jKcA\nPuOp8SFjM43aXOHO9/vDUzLTF1dtcyPLXXE90fidB0lRuWaoTxpHw0SSeu4O\nqtfIblma5WDPTFoM4hwhG9PKSU8qSRg8qvlTTn9DKNL2cSkPAkunzZ6vHHus\n3+p+t11Js8rUXDaJxlPg9OkuHMD6Sf6y4q6pOoLQDYFIKyxz+HHfcKynRswx\n/sfTlyE6Mq4AH2uNSgNw3pWsmKzPSpoW9O5nimiAkV2aMLPCQH+47H2fOxT0\nZHqG4tfqw3AclWCU3rqsy6mBEEGoJoh6Bn7z/JsgT6jxsn6Fz/9750QvvjCX\nAvA62JchvdAPks1lFbDlmiKjzNwYcwxwriVdn9hUtrg3OoexGGZVBh38dUC4\n1F3k\r\n=7EQm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix src/**/**/**/*.ts src/**/**/*.ts src/**/*.ts src/*.ts test/**/*.ts test/**/**.ts","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"1.1.3","@atlas-engine/iam.contracts":"1.1.1","@atlas-engine/process_model":"2.2.2","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"3.0.0","@atlas-engine/core_domain.contracts":"3.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^6.8.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.3-feature-f039c7-knq5edkj_1618930492553_0.06841656401373375","host":"s3://npm-registry-packages"}},"2.3.4-hotfixes-34d701-knqb2mt3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfixes-34d701-knqb2mt3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfixes-34d701-knqb2mt3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fdfe0a881c1eb07773e4620d33e9311254f9ea3b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfixes-34d701-knqb2mt3.tgz","fileCount":309,"integrity":"sha512-kjRy+97YCJk8DhyzsMuKB967oo4kdDZPkY983nWf5yvtaC8W5cAovZtkm+84kASI7edcxyftkHjIzfBubOFbBA==","signatures":[{"sig":"MEUCIQCTWzH1z9wioxjk7BrnUk354Y16L/XyVtVTnh6AFOZsowIgTmXfwtpjJZLR3dNnHRgAsukvuDk026BYUFK93fsRS6Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfxB0CRA9TVsSAnZWagAA9U8P/0cWXDhn2h1cn/8sCXHM\nuEPotASZEvLYeKYEJXLB8K5xKYqWMlMu1UU/hdSas6YPobc34p3bGhyqB9L6\nayS2+HA4UTPP1/nvej1qofg4MvWxyaPn7Jt7J+6sW0WigIgRi60tZEPb/Pm9\nBulohKldvkjIiAaanrEX32Gq1NDwFVVA6lxCwV+TEWOeVY+Ai96qD3ZRKiNs\npgQrFHAWKWlqzYk0XdbamErCB6S7gQMGA8pjgRrVvL879BeKeafPgaYvEGS7\ntu3O5we1DxvBpCoe8Sw6ZvCXKiab2rjJiL9OYHel+h1yRuDoFSOj6L2z8l4r\n1F12lUOge80OLLDS19vunFQMyvCkh0qZe5RkUP/IgJvy81HYsrw3Y0OLWfXP\nVre5PsqrhvtZdIsrvI4Lz7PzoDnSD5Pcxewf1rY3XX8cZX3o2QJzZKuRNlGx\ng2+7yBNivFjU72zIac4EinBNIncB114iKRQtep1GCYLU518Rgwvsasagb8h0\ncxOcwciblKkSxxIxGPcVoAwTs7//exhjBYNtVp7R3kEFy+w8fwhrvBN31f/E\nZxV/oay21Zkl0xZBjibx9mT3q14HyzdVqENUqFpp6GQ4dwMVjsOasBjO1s43\nsfe6hYafUlY7MujuRLeeNYBM5htLtqoGjXEx47/+SvMw3iqP71XB15e0RDbv\n/cWR\r\n=ASel\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfixes-34d701-knqb2mt3_1618940020334_0.23909817059986294","host":"s3://npm-registry-packages"}},"2.3.4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"50c0223716721d2929a84201e8af6b796e25c23a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4.tgz","fileCount":309,"integrity":"sha512-dg18kIQZm33TvZsEmQ9ZZ9GLeZZoLQNvV0rtn0BDeqXN7/DLxljohI1r3rc+rtj1IB3YvOivulX0U90BcioQOQ==","signatures":[{"sig":"MEUCID4EKIkVByKKeNBoDdXVgC8cew32C7vLbT89wF//jbj1AiEA8gnkhPWQHfQ9xCZwqgym3knrlKMm9b7gCnmMwUfVGJg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfyxfCRA9TVsSAnZWagAA0fQP/R99ahj6Etp4HwN2VseH\nawr1jkWyGd35KrgcMcP+qFxWpuMiU4ctIYIMTvsGsaiThXeUk7Midtmxabl1\n47wUf2aXw6N5LalQAJgM6iHrGtzp2JDAhfHa6PlUMmy1JoSd5Pu9LPsFUzgw\nMbgv6qrEimLokPjoOgm8AMr79oT9LxdG2y7w+/UXr4KMg1q8JPzmubLCBRKg\nDm52hdq1f8rv3CNAe6wo3ixDLnolonjjCCU8RgWaBB9PL2aP00bdlb2vup+C\nIDvzLgJkqnA1P/tUzfgQ18zv7G5tR/zuKOjC2J74R53cBEBApvxNT7dKsIEn\n/xtVx4KI0yL3vWMeDcdnbE/R9LkhPQRwJmpUB+HBrHn7vzwYfS+qVI2KOnjB\nvxFG5ALLQzR0LKuO/1xU08bC1MWLhz2wFP7pMCM9vhGEapVnR3loq0Exxoxa\n1eo7FERE/oO4li9+Em4/66UjpWjuTCYvNVoIItm1c9j7mrQCLO/kDZLddroB\nK5Al4KB4maqIfL2c86Gl5y7nKpTjRNaZF3R5c0AZlbcwdlyFrSFhOin+AHUe\nOIOLkAfTBFcs/RPk92m1RyGzNxUaEiiLZW8s1a/J/r+wbIkEvgDuMJBLE/4H\nu043YAxLt+QvgzXMTj2TZedZ3Ot1VsGl2/h3Qj7GANpAraev0UC/INQS3Bqr\nU5+E\r\n=FDbS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4_1618947167098_0.21722808461299437","host":"s3://npm-registry-packages"}},"2.3.4-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c48d8708d195c964b7266929ed10548440f7616b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-beta.1.tgz","fileCount":309,"integrity":"sha512-wH4HuMZ+S/nXFN+hg4nFnSu4S/2jQmZ5nFvGUVHrUIeK8eJ0TqUXAO/NR7sHN5X9O1xLBionCHTKzuX2ZuIj2g==","signatures":[{"sig":"MEUCIGADuxc3m6Ie3VsFpRIOp2CN67/Qp/R750cc2tEbrAOZAiEAuBnxUsJKZ9yIAjYZ0iuZucGMD4vxFiY/T3Ku/zj0KrM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfy/cCRA9TVsSAnZWagAANloQAIkg2bAyLh0nGEY9ihqh\nwOmpWsj5lFQ8ZLyWxhDgwucXbWnzGIMCn7S3AO9+cViOBOfmt8Wwe9Eg1laY\nrnmNr3kp6Qd8M35N4JwNOexMx3qBXh+M6JoGlUQ61wMptfm1Q/kTqTSxFGM0\nFumiJF7EagEZ0NRLjOqIOArZYG7SzLTg0V7ZPYPQ2pQXN3KvzhPxMEwgNn06\nsth3Sja4PVrGDAUENLmcYUb/NQ1yUpbfitGEbaGLFITqtYlCsjFQL1RFhrtc\nxiZU6RwNqIB3qu47UZuxLky1b2nvyiyOaTd9jKPpTNZ3A7WBc5RBR+h+6i5W\nRgVGMTBVcRBj6MejYBZskArxNwY1NbkqWx3ShdFHTQw2Nqi03fSFiLkWvaBq\nmBHPGX8F4vW3aqzPvS5lTuIAPqvnmq/zM0Y0yKUNg1V6KfFhckqgIhBc3iII\nRzLJHHoc64AtpetaJrtDCzrcl9ERpaEW8cPuNM0B+39F+mH2oOwhBt0Xtirl\nIOgwj5fPKghiGbMC7tjJhaOltFKvEi6Z/lM1+H2WCQQjdOy0lF+tBuJXuzbc\n84hk7Vr6wc/vsbXBnSGpVkfzkhkwmy++mR4kpckEz4AAT22aLlT4RL64OgQw\n0Nu1n2nBHX+k1dNK8liT8AvyBZUCQjoU3DaGG8XZuadFA5SQuGnSpW1OBTWy\nFTMw\r\n=difO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-beta.1_1618948059591_0.09499438213837985","host":"s3://npm-registry-packages"}},"2.3.4-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6fdeeaf4dfae4faa54ac4bf53d3034f63191d887","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-alpha.1.tgz","fileCount":309,"integrity":"sha512-h695fku9+jycmRL43k4M4BGw0vnKOy0I73UJEQ/+VIcuAbFtrw4Bct+gZ6V562zz69qIzPmiZL9eTsRNmmP7yw==","signatures":[{"sig":"MEQCICvj9kS+Us7JrMjVguwwFpl09i83ziPjbcnMw1/h+EjPAiAngoZjsMObm5C+T/A1VI4bUJ9E/WBHbpPuOfw6MV3pTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554143,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfzHNCRA9TVsSAnZWagAAR80P/27zQBeMYrSb/WZiOiSV\nhV1NrGZEEGvdw49q32HmErgXiO+UZZLDl9wjFK0/xF229RNF5dZF5fLGteDx\n2xXTFsKphc4Toi3nvXbw3fXikcRmNJecvebh2Hqw5Vuss2SbBhhmLGTLryCD\nlVhQczW0PhOdCOeCsWI4MTqF2GjugO8pHNe+bFmhPA06YXnj7rt4EJijsqqu\n2af2hhsZSF4Zss7vab6HIGHI226+K6095ZoO58j5SPZx4wPHPuBYJe0b0Cyc\nmZyoCLVvCV/OfJ1ldkjVkwojX9ALW2OWJI8+PNRhHZHOlBYDCNi0WS1w2VhX\neW8oydmytw74LEaEif0DD3z4B/6u9PrhAi15iPn0mhoEtdxG1dROKUjdBWsj\nrmnWlGz+OWiCN1FfrOuuWUcRyTlWBCjlOjQoGn77DH+6ZQRUxCXd+djSLYaM\nyasxCuRjsGZHiE24uZ5ExUmZ14HvNvrCjgv7Yk+g9DUiDW6dAJ2yCs3v5stb\nzwjADYEO1H2w3P9Cv7Y+CUklmZlfhP4eVPRhz+rb2KcaEpSHwod2nW06/39J\nC1v5JkFB+49Z9hD45CglLJ6RDyA4W0WMZhkKJas9RaBgUGqD5DYj690ipRnz\nzXVfmr+s3vmBrHQJ1ogL/K5h9/ZklUCbZ7A463iJOLIPOxtBF4CUGbrEkfX2\nHQ+h\r\n=T44M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-alpha.1_1618948556445_0.9341539561332222","host":"s3://npm-registry-packages"}},"2.3.4-feature-5a8108-knr8szyy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-5a8108-knr8szyy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-5a8108-knr8szyy","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3809a4e47996ede6b810e492ccc546bda473baa1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-5a8108-knr8szyy.tgz","fileCount":309,"integrity":"sha512-7y9TH+ROp7D+pm6TqIsoT/s1R8j1ZUzj+ihCbFvcs/DCqcRL8O5LNoqD0LhMwzE5OJljUanRYRx6rgWu7WBvbg==","signatures":[{"sig":"MEQCIB6PzPMteDhJ7PoHekucHj3nEz9LpihnA7UGnkABPx0lAiBSXRttQVkXCqFg0RqMuBIG0J8pExK8B/8Jrr6gSfSY9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgf+3ICRA9TVsSAnZWagAAo/IQAJuEHSn+KIQ+nsdd7jLs\n5UUEYDmWqhgGiwIJZoXsGNlNEFUi7neYeecj+1UuKX75XrwiQmCmZV9x9x3R\nXgKyHUTV19tZi6mf98fBVeD7x57rdXnskjRHGtfHDsv00h/naLLU3xe6i1wx\nQ3qpeaubI908wosA4i+q9tDXium2oZtCyQmJ57bHAScT+HL99Us3nGZDv5Et\nn+GbYS2vVEG9+lGPYS1C1IPrBA37Wk9dxLna/3l0+fZ3s2lZjGr72sHiu4Pl\nM2ir7OnhyCbyqLHUlqow3bsh6zTZd4g0ftYavKEZfCE6VH9zBOfxfTKt9Sr3\nEtrJr874njY4HT8El5rXRmmjEKRr/CvNqP25DDO5/YJqvwL5MLmmBVaI+LIf\nNKKfPnVYdTvZ7VV3VzSQhlSCEyynbkmHftuzNXzG3d7gMwDldrrCrhH7tiOj\nhbbnDJoJ+EeNwrHzlxpHqiVlrZNOLkNNV0kHCNxWcsEVEYQvyp8+WZ8XwrWZ\nP1r7UmmFq+k7nhh3ZMkPY1oWxelpebQEgk3Z8H96dZyFw/4TJBTuyyl+IUfC\nB8tE784xkRxkEFzkbtH+WJFDHHz8bOBtLPGoagTrtwus3d2zVpomKUxSqbQb\nntBc+G/uH/W8wUiMOwxKfRxdkQXztGPdctB0qx+wTslUtEcEb788xnd7Yntd\nWgFr\r\n=+ddI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-5a8108-knr8szyy_1618996679552_0.23347698374050863","host":"s3://npm-registry-packages"}},"2.3.4-feature-5541b0-knre5dus":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-5541b0-knre5dus","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-5541b0-knre5dus","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"eb0d8e21b35ce5db0e717c4e2d3f9e80f65c80aa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-5541b0-knre5dus.tgz","fileCount":309,"integrity":"sha512-1JGQlu+3CtUX7ypXqY2KRFZd/XLTywJMvmuX5785l6/w+lKcgidrA/b8VbYxG5/4rjezKWm4DC9aCdhQDwY0eg==","signatures":[{"sig":"MEYCIQC1aKV+us5EIoBs3l24Y3Wytm3zmwACzgpSISFype6vRgIhALWAJQI6eaqKe9e5CtJv9VNowkTBc5PIunAuLPP812og","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggBDVCRA9TVsSAnZWagAAt3EP/3d+cyHn0cNXo7WNILsq\nBBh60MgKu7p1QBBo1U8zGuWZUBbiBVXp6SPb9pRJ5KkUX3J+XMRVmpMbcX1M\nXlag8+7fEScBDD6cWqrI1pJFEjlYRFmArxBqyvL/kViu8P9Frr5w3hqR+a88\nficAZpCecjC2x5Uwg5okp5wH2q6CnHjn+XQYFmcS03tL2+PDiT/J8A+Py0Vo\n7+weH/mAon7M53E78eBRSVelOjH/revBs1Fx+OOTOx51xWi4ZxlN1ZWFnr/9\nFnQC5C6h27zTwjal6MNwtF4WkGPppb2X+Gdnmw0PiiBAR8F0dOFlTDugm6aY\n5v8kZVOWunl/Jsp5jYWm2byOIDsK9advm0BF9JYVWzYabMPTdYPq2LDbd2Lp\nsPrjg7duUZ2n6w0sAY+vMZkpIlAIpPcVgidNeSGk7uwaAi5jwdGGYK/cetZM\nMGlYv0w0/Rnv9zxqfByFWa7oehmi9o8A/vXFNqqVhRm2dYR4UsrYqIvpYgZV\n7i8MflxBUmjySvGmcLB11gDHuIvjZw53OF+wJFXbNH5GVIJVuoPuMcAap1VT\npbo9IK1Ujxy5jF/NWA57sW8vU26/lm6ZI5ftadG7o69i3a8oGIOUWZRdpL1u\na0ffYYq7W2mKeNvs0BEG2kPCEKXKsovtVik8uvYbKtmBQv+w53W7pPoqwhXw\noUr+\r\n=f4WL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-5541b0-knre5dus_1619005653135_0.23698846005716723","host":"s3://npm-registry-packages"}},"2.3.4-feature-83fec3-knrebuqp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-83fec3-knrebuqp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-83fec3-knrebuqp","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f8827aa4454ea72ecc37b8e40378c09720eff19c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-83fec3-knrebuqp.tgz","fileCount":309,"integrity":"sha512-82QVYUUyLB5xKQehUCRav5PXLQ0JjwwZvWzsAQgsbKksFIV/DR+FpI6rME/ssNsHOgTH6ij2OsmwWOrRXbAlew==","signatures":[{"sig":"MEUCIQD6gYNSdV6+nIPMyTqqdyZoXqOOHAuvMNbqBSdYG+780gIgZHymYRKx9YBYwjdCzSzvCdt0m2nqglJmmQfXaakkMac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggBIECRA9TVsSAnZWagAAdF0P/RugRBPr4mGLGyez94Vc\nP9kX2fWTtBdZvL33LXUQZ8Qnm4bg25Lqu5t7XMBRtvrFVEd/u0jUHerp7CQ/\nuNTDdSX+kCklBOkJDKt1qK55JZ4uO/tURKXnBySVQxRruv4NxYeO3aa8BR/l\nqIpUAlQPzT+F9VQwvo5r/rwMnoAxl7HjrRCz+X7DZghnH6IHD4wbKdx2C5rF\nGLSg/xW+ExKAhiUUwkvqvXonizC2zMQ0m8A/WOm5rlfQCj5HafP2aRNoxmDS\nIWQLzPjoQNnDzLsywDmsBpae5xCwG3hRbyHx/kZlNJlUrMU2uW1mmMasR52s\nDc4nVb8qk79DMo/OvGcmQN6hvnRIYHMVs8KLDGeQTLEE5s10KrYuBhOlJDyL\nOptnXZeFENvBQBftoGg14z+RM6Mjy9oJmY4+S8dfS+NwYnNrMyrKQFNpeHaE\nV1nMtFchdQ7bTxWrdoFNMLDpaqyM9xtCBimEPSZ0YP4LLVeQFtg8PhX1XBh5\nOPFrLwiMWmW3HUlw0cMeGXwHFZIslpZF5J/RA+g+2oi89U/yrL3WuCrRsGVI\nsMvWpXaTRWxzse7d0MP/LUQXzp2i39+IHVW1WpAonyDrQ2J+ZyXGN0nQPHOO\nlQvBe6hNd2i+rAq4gmdErteISE90oum34P7QJo4vUX5FmfcT98JzecsEyuSm\ne+0l\r\n=Qu6f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-83fec3-knrebuqp_1619005956253_0.968838818100757","host":"s3://npm-registry-packages"}},"2.3.4-feature-8e3b88-knsx6xvd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-8e3b88-knsx6xvd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-8e3b88-knsx6xvd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1b7f91772b33138be12bb74799a021bb5b6e3f89","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-8e3b88-knsx6xvd.tgz","fileCount":309,"integrity":"sha512-6RZ9dZKuxcKVETv+zRuXup8D/+m1JfggUU5sVS2MmwFtPCS6zoKmQ2HgpHyd5y5OUpDGtZYdGCtMLLufe2GyHg==","signatures":[{"sig":"MEUCIAw3Ik9IhMEDtmhGm7mdaBK4AelpCtFVv6DqrFHD2kmGAiEA1tq+q3PgnmGceuRi17QTGRkngP9dVKBg0YkNAxxIjQQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggXn6CRA9TVsSAnZWagAAR1gP/31IFy7oXOmtbalQscdW\nc8QhgnjeYiz5ycBSkERCuBPqR2tBetEU33WyoguynBGK0UwOT3me6uIFzjWV\ndQdQmJK1/8fRb5xpjFTyc15JcaWjX/TFYi7ONWJJzWbO4e9kg+HwaQ+eIc2+\n5bKoVMNId9JJZk5EpIHhAx6diSAJvvycPFieytH3dUL0jwVvPh/1PbmQXfBe\nmwtWnGkYLXP7Bqjl1c/99XPJOXlgdoLzEcMycvJwFKEFATdM+OW5tsaEK4W1\n0WoqxwUXD/sjLUUkQ26S87yHuSWA0gb5NHQz+DmqFfkNUXICOX479pGvtheA\nZwB/jndu1YL1LkZLVEDzaZ+VvJw7DiyYhjyKyFWlnj07V/HOH39FVGOJYqUf\nNNsEOMX068XxfnuyUDT46Zyml4Z/eu9+Sh1pgr0DuaLzdRIr8RvYpcKWY41i\nsiqPRaTek4ddM7TaYymuGPT7Nw7MFzv8NI+4mvwDpIs819Zq+M+mzsV5O0iG\n6CZQ3ipVEuQm20hA152MrlzSUtV6TBR/UcVqR2o0Dxu0QIpQBHq4vQXOoG8r\nx8S7PqFF24Zcd2R61cFF9zBpOLyismEPDz4xAJNkcq63nPy1kdlls1pIEhKk\neJITPHQdpvIZQ2FlsPwY01BZL8Xdjc/Qt7GnGmetJELFpj42cDS3mJrJsr3+\n+Hr4\r\n=GiAn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-8e3b88-knsx6xvd_1619098105990_0.6340765822336962","host":"s3://npm-registry-packages"}},"2.3.4-feature-8ed7bc-knt2juqr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-8ed7bc-knt2juqr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-8ed7bc-knt2juqr","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1474be9dbdc82e5ee624a19f1c02fd95a9fbae6c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-8ed7bc-knt2juqr.tgz","fileCount":309,"integrity":"sha512-t9Pq4PLCiLivHwKszMi9LbFdbo3SAZ7/9zfWeJBKaDSKNg2VqH34G4AD5d8AO9dVZkYZzyBR0/oT0PPubnjhvw==","signatures":[{"sig":"MEUCIQDyoFWVomKkP5o1UnToMgxP3N2XBs3w9QRz8zRF952SZgIgdicHuAfwxKAYFJjaM0N6K+MDXKCTmGud0/XDjb99rpw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggZ0jCRA9TVsSAnZWagAAT2cP/2c/Z8RhEjX38DghDkNI\nYh6bKCi+m6mZc+ufafDfAyXasa62B9kACmDdDlbfN1ue4pXdPl/KyuueXutR\nt+u0DLZFQMHdfl18THCspyw6k9pryisFJfmcy9TP6cpWiXbJOv6u5hPHflf/\nbf2uLl24XTdqcizIRJopwXGuIBFsZZa70s0id+zP/PsPC1/gc0emIVLrbnHF\nca7c1/VPaLdBbQK2pqoc6CPM/Pgv5Zcpc6lOAVmeVVGkG21miK8AZa7on0Dt\nERWcVIS1bCq7ioQYPpdDiCQgnmK0TIihrwv4R69FWsHUoF3Gbp5azSMkDJzT\nvL8kOT/8IXV6NIb/KBRZM3HZZKB1vGeSk0gRH/8cCJoSEO1izzESvYELfoGb\n2caog/hzxJILNt/i8qN0frQ9an/v5treFHvgtjX0SkBpmT5wQc3LyF5dRz/G\nqh9+ZwAqEKMFAIFao02Dp72la9uwwtbIWdnRsn28hbqj4VJeivh0eZM9Sj0Y\no3q8fFbNy6YlIS2wXlhecGCh3Y6qUP/0UnhY4W5R24r/TYviqrUCLcJLbO0f\nKjwThVjATO35yaHtfZM+gnHAk53yqWjRJpTFvbbPslM54LEAxALk0Gcm1wwK\nlNrxRSqRdAhLqeW8QNg8OGvauUqSAdZAiwGCvzTEoqlf13eT5SY7imFb99ic\nFltt\r\n=wuPK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-8ed7bc-knt2juqr_1619107107154_0.9871299835444463","host":"s3://npm-registry-packages"}},"2.3.4-feature-f1a7cc-knu76i4p":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-f1a7cc-knu76i4p","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-f1a7cc-knu76i4p","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ff2e0d6f16459011f158acf0fcbbc69e920a116a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-f1a7cc-knu76i4p.tgz","fileCount":309,"integrity":"sha512-LNTzBDwLRsS4a0JdpQpJjdPUl7O/zPhLD7hWlg0gCWRpbhBkPJxDf8ge2lA0ivIAV5kowA6Bao8fZqCJ6gDekw==","signatures":[{"sig":"MEYCIQCSmE/3J7jAL8Gn4EGIKGg5MdfcqxTuAQMB4FeAoRQ+EgIhAIJYqZyZbgFrNMWltRvhO8iiyfIVpjrwRrIvWhxU1xRz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggqeyCRA9TVsSAnZWagAA3y0P/0QiGYJg/El+Pf6V4pDu\n6ZV4qyG4b2FE4pZ8uHMp3Ek2ExsTYtLnCyJ2STU3D//LAeMFIaxRwDvNJbVU\nD4Pgv9JKqTv/yQ7coYrzvILQsVMUV2CN17iTGB8Ri+7A8D/DPQcQFI0XBhQy\njMm1dyvKJyv711W/JRGNQL+bdAsNkhyk+l8G4fSyxT+MmedLCxbk5Mpbzedc\n718JIHpBrqkr+Kbik5ZPita/w88oxi6Ch77qHfhagaJVOJ+7ImbaQ0mJQHVz\n9jg+fiGWN5QrjATGw2wO7lnweq83IySoy+Fvt5+fffv1I0ZNjwLKnfj98Ql1\nWc1OTR51XS/JeYe17Wsfd4CmVds77DGulpySw5wHXjWIk8PNlGZzylqIqwJx\nxf0dMdb4uiQ9Vjet7mjyoQGYL43l+aoYNneiEk7LxRBfPEIYNWpG8Rz/MDN1\nhYczFOiCTA/NSqVReafiaMuhoZhn8ZwZbeHw4TT8JHfsiM/WerrNGz1QJ7BU\nFrtjb+Hp4svS9uztycMKazm1g6qaL6H3m7Ovdw2MVqxILcDeMiFIeAPa+UQr\nf6KU0nxsx0NTEJivEu6cuIk2XG5hHIy444ePf3WZXBaxPy9RM6MlkP5CSZ8B\nch8qIh5tJhJ4ABaWmWKVxaQx+s3U/+vbPK2DVDfVnEFlMOVixv0vZbMeHiLh\nXVnA\r\n=BVUp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-f1a7cc-knu76i4p_1619175346137_0.6278197380820727","host":"s3://npm-registry-packages"}},"2.3.4-feature-cf41dd-knu7dfws":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-cf41dd-knu7dfws","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-cf41dd-knu7dfws","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bd2590fdc75b00317e92c646b6d3a80948291bd9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-cf41dd-knu7dfws.tgz","fileCount":309,"integrity":"sha512-6bRWSL/yLtmv+22Y084NlW6VKqhM7dwVRSJ9tCDIA+gUEWaXv1Rf5fT5MXyDBk6xKkDu6MceL4hU1C1wRwSiKA==","signatures":[{"sig":"MEYCIQDPvdXZf0WTWFbGvOXRXF8lHKCF5I2YbqjtbcMFqYnB4AIhAOcmLbmK00NbTQT3CXOx4+lNDihqtZXyVgFnkzKIAArZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggqj2CRA9TVsSAnZWagAATocP/22izUui2XvJ7cQCBhaD\nlLJIvFWqzWSbhn1D/8V1DWePWXzLk+Yf8uFBR5P+cG9OV1TVY4nR8h45SBCT\n2OpzQF0zcisL1yYz5qJChPq0RfkisKT3+rFsAR9fpAs4etG8lSBe0sw6B9Ku\ncPqmISGeu0eNPM526ibRXm0KsJQdysNojrlIhXU8ZiGpZGYZJ3qomVF9PG2/\nEhgm/QbXkQJnf8BFjyazcO3pXu/SU2K7GOyZoIhgL803k5ILVE7nrJVzKgUi\nJOkVcRrqtT9gtEcA1JCivJGyN3e8ZSmDQ59ep2jPlUj4s8RwH5Eyz8rVFgnE\nkNVkq7lvWu9jicVrqKWYqZ7qD+418Eaj6/7iR7AHwNv51wmoUDKMoOlino6A\nLm8oy7Iz+0A/GTjbQIUf2xB9eofG0Iuq/ZdaU0s3pHzc4z0016YeLkti92S5\nKzkI188H3UYc0Kx89WlmdAwokXrThbtH7DeChjASlLnoUS5Xy/ns1RdlDSj6\nj1entiFBAAg4p4qtq/DeryXif4SFaqjCMG27+0+LPs5J4oUJNI/i/PAVUlyP\nzLfUPw9rHCf4z1F3h4lzi0FuuYLLWmWSHdulrcZ2JsA8lGymZLgMx1rj2Ww+\nOlK4ov2amXF0VKYhpBcNhCmeCyldsX2LExmDlfrLJHvxdIQGHpYUdfXaIWB4\nkNqZ\r\n=mJXM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-cf41dd-knu7dfws_1619175669563_0.4439459839388671","host":"s3://npm-registry-packages"}},"2.3.4-feature-def294-knujh278":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-def294-knujh278","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-def294-knujh278","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6caeb7d660183128911a157e9bcc017ff751cc86","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-def294-knujh278.tgz","fileCount":309,"integrity":"sha512-PU/XQl913al6nzRr/aYqgg3Dsmx3CVgaRKDZlfAeVRkcHgYd/3mWRxuiZccrhu52nYHFErIV6atFhmlMES6hWw==","signatures":[{"sig":"MEUCIHst7fKs7yU6Dd++ZEFgIUnusw/5AsHoIypCwCzcLbaPAiEA756aebxnOfbd0/kCIDlkWSyc9jlq0Nn1cBhKLR8IR8o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggvhbCRA9TVsSAnZWagAAv9MP/i1qph/FhaECqRCoe4Fo\nEwnn2nNUtJf7jJPhlIuMDqufar9ak6rZbrDtbI8w/eBM3fRr1mAaeBzI0gD/\n4vHtdWVw1XyQI60uV6Xcut2iT/6rZNA4r0fzE5VzbqlyypvKVSY6zLedjhDw\n6dypRYcul3/Hg7jWzLqgnaTkSuC/6P0Bz0FAC/UHlxuaVKyRPtzONwkWXZut\nZ9lwGN8PO+rZc5lNEmuowtO8Rhk321kd7vTWWdOfa+eP0gKgt+he5nRYYzA5\nZQhU0Ml/nY24Ul9oKNFeTvAr4mS6gRvL5/4f5TiJxkHDw0eJQBU3Ez1A5Bn0\nVfi4hWefBIXvpHwU0awtBIBlJ39hFJprtE1RuX5tU38Vf4nd8qDadPkoNPX0\ngE+MCnXpCu/y91ci/K0tvOXoCZacdsyeROdEUda8Abb0jkWshcrXwUcOE5M7\n/Cj6zhizoT95Cs+Aj6e0KfpnxUkMNRZJf9iMAC+11MI4v9WGnQPhkanI81eq\noAICrddJPdhgl5c2JFeM//M/4icErHsXZesjs2BUitCbnXxXNYoPkHisZZ3j\nx+BTxGgNgaBsK+/kgdCZjbHy5Kr/kqZK+A21yzk7MEABNiJwdK/cubMrGcFV\n64fr10uO2iEF2HMkONMvpPBW4mq+bGdbgYjMyxPId2C3B7/uBunY1ONssPzq\niOYF\r\n=XWmS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-def294-knujh278_1619195994632_0.21815392252095944","host":"s3://npm-registry-packages"}},"2.3.4-feature-37a23e-knukptk1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-37a23e-knukptk1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-37a23e-knukptk1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"587a02c48686bcedcc70eba4db3b329775583fb3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-37a23e-knukptk1.tgz","fileCount":309,"integrity":"sha512-Oum1lAaAqk8clz7T6/F/VmmaS9YbATYbqx4DKJxtoHXEBhVpF48+L74NUr2Mfi5OILnhrpjftII3UFx7c3SYLw==","signatures":[{"sig":"MEQCICqIqS45QkrV8WatpARMh5B3cSCUqiefi1wAuoHPXd/tAiAgul3bvHVp8TVYg5N5uqzhaJTrto1zDwbEvbLeK06hFQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggwCFCRA9TVsSAnZWagAA+ZUP/1ItjjTtpg2/xL3GFGC+\n0kDX3P/jVRFevfejFbIlcU+2tJ2le5cbuNB+AJ8oPL0rF06XziMN+ZPojdP2\nyreWVeK9IfFqpeBDEoKqv8b1PJvjJMWcH2S1ROBNy2MdabWIn1Yc9SQlab0j\n3MLMb1Ez6g8z04jJlkptybE9GX19KfTQQzYN9Swe47DuRqEcGVvtqCIlrAWg\nPPWQodP7BJNen+DGOuTy7X8WCZkQHlwHJFhxUaLeBfjFe/Ft+hr55fTy8VwY\n2m9bWfIrlkZgBmtU163qZVrA0KRGM/l5M+I551w/ZAzdxkZ3+hh06HO1SP91\nL3MKiENzrxA8SY50E5tYaiOeZJQuFM24VoFINF60VtSCLAaEqN6dNWFvo4JD\nIHZ80kecCqClKy3s7FC0FOMImxIX8ewA3Ly9dM/nwsXh5tTGmYFoVW9sxRNv\nPmyTGsK3mrPP9qZS1ZkAqXM88L2aZhWWiOUrM4fyqGmvhh5GipT3yraV672v\nD8tjg9haGd+JFJfsfXSPBWoxq9SvhS0kjGMdtCT0KK9mvoDWXL40qYlVfbfx\nLlC/JRvJ9BU5OD0O8BBUg4pIOzNeKhpUMxtDashWCaro2xuTjw7R8WOiXOmx\nNDyGmFhAWSng8XEQanBkF8qWV6hwcXPmGic7HZpp1MOhXOIsHi4yeBoB7De6\nUDkf\r\n=yNT2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-37a23e-knukptk1_1619198085023_0.9524462851701851","host":"s3://npm-registry-packages"}},"2.3.4-feature-8b6c84-knuob4o1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-8b6c84-knuob4o1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-8b6c84-knuob4o1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4587bf6a7120ba88cab0d45dc53c0c4a9435231c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-8b6c84-knuob4o1.tgz","fileCount":309,"integrity":"sha512-UlW4vOIKMYCCJy0kEzKlUR7ZRVN7XIhVZEUP9U2xEOq6vpmR+t2M48QHdj7MZZaX5O1aWwQ5pnD0crwFex3NiQ==","signatures":[{"sig":"MEUCIFjBiUWPHmM1YrY8vX1LUvR3UceQWBs1nez2GOVkm9e/AiEAjlNEHnrbDRRFq9Blq8lxaqOYlDlZPzljopIKBLGMfpY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545609,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggxgWCRA9TVsSAnZWagAAP9AQAJOAHbKxtjSeuNLc6ASO\nrsRRRu5H+zp2W0bEUAqwJfvsarcGrN+AutWoxj68xXv0dG8VdmmTJDEnSnCL\nNaj/hcixULhM9oWTELGRGCe6x/ZSG2HZBjB3TsXhknKDWVzkMgGmfKocR884\n9kDoQimDXs9V2W21TMhKaqrEVvxKJxd8dHLKlG6zDxADtmcViJpu+HTH7D+u\nxeVMnmyccBM3j+qFwDFfhNurRGgVcoYJvKMwZbr/OGeUfz8PILSANlfbAvS2\nLV5xPSKI2q+6SXXKWolHhuRLg9/IRKgwPXWTt+ZQCNL/G7xa3qMBOfg/VZHo\nhLEqpM6x+GyQtYVxqS79ajS1JjjUUZNSgME4SglvTFwF9pgHNIZQJgPwWfZw\nyTU1F/bIYi9DGlJ84lDL0czu80VawVMb2YnPOmuVkmyebXpny57lQTuzUoSp\nAMfvqNEs9pi5pZtxWr2Q9tL+DuC3uOjMzE0ajkjgnL9PixvNahXEmkhlBL2g\n0+ddK9rjHroD/I9RkoWDQ7h7fdqdbHc6e1ses9+Z4tqLwcORQeHeTTZR1xMw\nKy3LLz/JX+WuyX4BVtCcYc4QuuGAnqS9gRlqlrfAL6v+vK5k8elJg+g6JZo4\nl60EbpOrxKx+oDtEJUHoS+0E3NwK8Aj6B/8rTqQgwwlg1CzQ0+f4VayMLw8i\nLum3\r\n=2ZaX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-8b6c84-knuob4o1_1619204117298_0.3493287616862275","host":"s3://npm-registry-packages"}},"2.3.4-feature-64d4e2-knyd4zyl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-64d4e2-knyd4zyl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-64d4e2-knyd4zyl","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"32788f672c3716a18ea8a00e2fa8987871ffc106","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-64d4e2-knyd4zyl.tgz","fileCount":309,"integrity":"sha512-CF46Oj+h7ZfAmyXGFcJ/U9yzky62NC0DukwyMKCxZqbxQSBXCvy9yQ8MAoYfpZSjZY7MLZ53KAj7EX25QjropA==","signatures":[{"sig":"MEUCIHS0PFHv3v/ARkGotwqvB9XILexcVIl+Iqiw/eSne745AiEApnBxvhq3dzonxWbtrxBz5H86uYT1dYyE9ZyYYDI/Bfo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghn+TCRA9TVsSAnZWagAAsWAP/1NBC/24BuJqV/dSOIO2\n1FAp/jcqsJmoirgDexM/Lik/LvHUm/n6kRnGHNWoJ6N/TKvj3w8o9o3xmMNQ\nnSR/yI4fHROKoIXTlV3Q3JXQCnlaCPqRfKIPH64fdScQcBgPisL5t6IDvIQ3\nYwOkC4o+tpCOdoBUPsitdy/Dg2PBtJj4wKLrJ5nTsYbLCJicVtMpZV2moW5R\nxTR2xVzhoHXBtCcWM/3PdBvFiAbYmQgsG29YGJY7kgl1HayGgLJ7mYZxK1zz\nEpktp8FLtHBfy9TAs1nnh0my2rNL/dQhx3+y4QcpCZHCfKwgnJLmT/4XcDHW\n2TraiRCG/ctNGxuSoqEjYNFk2KFdMONTJQsgpxIwQ2sYb1YTijLOxey8/dJ0\nlnP48MmjPCCLDC98KouwEjzitfNvmtHsg9OfZNd7YZk1jGan5HxAsZbkuHsP\nG7UTD+GRAjMNVQA1iQMdSRi1Pvxr5An1+8MAb9mLEcp0NprvEC/pRfgYmAds\nIEc6RLXDdsxUU5Yyjvn1Cb4ZxXVz5hb0VhWdXPGySinjiqJGzf/MQBbaQ/KA\nMGNJjt2ScOcwgi88WN+sQvQz3AlJEj+tenLy2Rpuq9QLq2bqoo4qC93jRTct\nCvBAJUQ+xTYy2bV7Xnkr4GQFG4ReHHurl6Irnl7BPBhYR5zU2+xnikXL+MjU\nCeSy\r\n=mOWj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-64d4e2-knyd4zyl_1619427219078_0.3202679068736558","host":"s3://npm-registry-packages"}},"2.3.4-feature-941dce-knydmrb9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-941dce-knydmrb9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-941dce-knydmrb9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7010ea1953a94b91f508b69cb4493b2c52cd3c68","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-941dce-knydmrb9.tgz","fileCount":309,"integrity":"sha512-u+yljsXLjd/foM56IzhhpF5Bpo8pXYpyrraVIUW9/jBfil2UpGxXIXcGDg96Lof7v/IUiOHF9pgiYjJkSViu2Q==","signatures":[{"sig":"MEYCIQDP8Dxp1xmwTXKEAj5Un46N50AQyeS41+kkK909i3dmNwIhANKEgqwTaro8UYWbULGekn2XTl+6NTXCloQNafVsy9jL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghoLUCRA9TVsSAnZWagAAL6kQAKF32NrEtSo1wfh3xVFV\nwmbiDPzJUJitXOHiiRND6Neu+q19lGewUhxrptlHaukSGpPx/kBP/JAKajjp\nuc92GU0OcbC87OKlDrc9Uim6jFq9J9p4jRsGVs0ZwmslD+Pnd8wAIs6rODLm\nzsNHnhMZjzq3HUk0yBsK4Ne53bt9xSMt2Vb2IvGvPOz5KlFEA4gvK+HR7P/H\n2dcYaN26Ovtki/oJhxRRHIw0rZLbVB77X4OLt28ue0YgznjLTmfx1NcsChPA\nymNEhqmC2gBbCS+uoGpL3ydqEPJci7hh9fkjOohs/YpspmKA2AanWNcyCkJu\nJX57WDFN2PmZrL5jSqhly6uqxKCeCY2rN07g8mw51o9uyghpgtrWsYCtvYa5\nKA/yKYWN+4pc2WAC/KwtTHUkS2Zobr1EQip+X+lRmLqq5pIHc6YjdXQ+SbHf\nwpI82JMFSB5xe13hx4C6x60ILhmS7h533bbba6/UphFhMD89ePs6tRxcyiVC\nzAgCGTIQ8hFTivsgocqRL/YVoi0cv7CWMI5W7QF+xsUml067RzLdc5B6ATMU\naDMPJmOO+oxbOLdnLakasS+gglZYZqXn58ol3lBorzQy0faxJ6GQHnl9Re6K\nJjTHPagoFdQ/zdUuA+HLOuHsraPXzOxRQ5UImUxVeYXk3TZmRBYBg5qr3tVX\nzw0S\r\n=Bx+y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-941dce-knydmrb9_1619428051421_0.80579493038289","host":"s3://npm-registry-packages"}},"2.3.4-feature-6c806e-knygsoxg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-6c806e-knygsoxg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-6c806e-knygsoxg","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"64e85a4d707c1716c9672d03dac17300bf7f6d71","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-6c806e-knygsoxg.tgz","fileCount":309,"integrity":"sha512-vh5JrU95cfAw/qYUaO45kyP1xIMDyX7T+aWvKdSFEa1kNWu+s069OYKbu2+zlnGBc0Esv2MFGukZrUUH5HW+Fg==","signatures":[{"sig":"MEQCIHT+lIbHcXs+StrKHH5S+NvVLkX/iHVh7CHNTRn3xnPjAiACHP5a5yP27UAY1ZzNcIIFpo43q5UiUbjI/nG9WggL3w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghpeTCRA9TVsSAnZWagAA+psP/3tSzr3KZ2ghHyFFsuUS\n6b8wyN6eW/0qD8IENpk3rnccpcdCv/0UMTs/VU+hdbj0fiE318bg9boG/m3k\nKcaOllCsSkyO8I/8oBOp/iS86cFALHZTrAkCrW4Wxs87S7Pvju4N6b/EDcQu\nJVJiXYRjE5YC+J1Nj5jV5odXtfUN3RXOFKo/LqYkpW2wNBYcCxCcvYtKsZiQ\nzEfKrfbMo1Clex/8hPePVGLmyyTOzTqCQCSvBzZPA+1JIV31hsRYkzSUUeV6\neDP8wOpRmqu7qFsXHjvqHY4No9/5/3fiuqEPnE9h+eDEK8v2EZMBiM+PJ20p\n6yav615A7BDJ7uEFgQgFGXoRqM6RJJSgfSPtSpMeZY1g1aZYDv6+Imz/J1Ty\n7sy0Pf806QiiUdDmFkvNwATAw9H9jZ4KCpQQNyJAmDSgVsxXW/ptSx70sOcD\nGrGuHMJ0Jb0ZkK6rr8fzkYhyw+Dwgw56zTtYoF73Bp2jb4pVmzOYiXgUO90t\nXN8D+1EDXmEnIYvbDpGHC/sS0Koz0dLj6RqzTJh0PkgWlY/IJIAE5IeTXfk3\njSS+In9zU15q2Jg28InpjnrSuKBibjSS5mnmu5gVT7/Z4+PKlWd15t3jcBcr\nijeMddwRX6Ru3L+mFm9HM6mVr5g7fVOL+nCZRjDNSE5teHVRth/5DjO/4LwU\nSpYM\r\n=awvF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-6c806e-knygsoxg_1619433362530_0.23528001591176628","host":"s3://npm-registry-packages"}},"2.3.4-hotfixes-bd5123-knyhz2ot":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfixes-bd5123-knyhz2ot","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfixes-bd5123-knyhz2ot","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"43ccd8977fae9d30fa4103c4484345a49b10a512","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfixes-bd5123-knyhz2ot.tgz","fileCount":309,"integrity":"sha512-Ir+ZLcaGBZE804YVoH1+zr60u6ylJc+rCPkzAKZYRUmVSJzsEPJzZN5rBPk7cyMXrcX+iXTsv67Sa0YJBdZvTw==","signatures":[{"sig":"MEUCIQCFUv9p1h4gClTBOkE6NVLrDaq2cHpFfLXdEsDYGLtn5QIgf8531rmuDuehdLnZKsqczjMzNBFD3vpS38OhV6YZChU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghp9QCRA9TVsSAnZWagAAox0QAJcvhSHGUmQd/5KH7C62\nxcEx4c+t1zuIJzOCtRI+oz3K9wVcB9mR0vMlL1+axtGav3z3PJmnXjhm5wgs\nQfn1D2tPxvWFIriuFh9zi+2boNFMiXSKXz2CUyrbksiBVGVSXcmeiy+Wd72l\n/yTE0OM0caF9YIPvnA2wrO7vD8TneSgc9KHoU2Qjr5Iih6oTx0jSX0h/uODD\nyZPsP9BS14aHeNmFoQzzPcnGRzuP/6lES/IhQzpamTKB/tNs0iDSS7vSq2sF\nvm4EwTcnRTUYJZohcn13Y1PNN7qijlxFg2ep0boeJqN53Fyb01muBu+35Vu/\np8Vird03neFwwbefB1lK6yuB1ANRYvxYkJ94B2ZoOiyPlcIS2uWcYlMCO4l7\nR8vNwPtMVIIqoT9uVbnN60+HZReLe/Z+bg5BYQoom4pzyx1/+KMR2nTyLW8A\nEiz7xBP3bynbPqysHDkL3HtOdzmDoduxRB/LI/ub7eCHlEdxmUy0bt0s/WNz\nS5EEnZp3S7o0neIE98q55iMtnJivyTG29E12z5YHxUKcPWarEdGuFy/NlFpz\nOj8p2hdqXy+JUTBcOZ+FFwNbd2XSmAlI7MQIW5QVkNAvpiFMlGM23nIYB41g\np0+QRP3vYtrlVGLqm5xscz0eHOfsv3k1oMi8eUaN0Fb4NNDTB7NbyH0cdsce\nRqfl\r\n=WTzb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfixes-bd5123-knyhz2ot_1619435344002_0.0256568994340598","host":"s3://npm-registry-packages"}},"2.3.4-feature-6342f8-knykwili":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-6342f8-knykwili","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-6342f8-knykwili","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"37f1d79762fd6af4552347dd64f783902d73a39d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-6342f8-knykwili.tgz","fileCount":309,"integrity":"sha512-bIG3EOoKgk+wZ9PBg7RsTJH55Tzmw0nGgNOysYxGcNHyzyuuUfRplGOIEZJ3bQajB5byPZ7QRPaiT71wPgaHzA==","signatures":[{"sig":"MEUCIBGUB8qfi+9s8vSkUTmKBizk1vLFHq1y9MzFArWGyVdFAiEArdIaZC6XmQ71+iKE/Z2KZJarBxvduvW2ICqsWd04AJ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghrKGCRA9TVsSAnZWagAAdL0QAKJmjy7+QPuOSiQ0tShq\n97p1BLhqVj4XvvBhIZQVbu1Ld6DD98EQw0/bTL7eFSqkoQapd4zXylGF7bt1\nw6iKKTgHoO+ntNCgwNawd+r07QaxXyezH0ZlEjytHFEo+5Z1KFNp8w4Efolq\nnO2etyng4eLswKPptS5kQruD4QlbclX836q1BhzH+CGio4Tt5dal8fpClZVA\nrj13GOPsuLck/MVWmT005afTNSYjHIIaTHVbcnxDiQWloYGp67jewTMXp8D2\noJu9Ya44pS3q472Kq5tC2mgnOhqkmuQe9E127ub0YSp9LM4oso1zn0Wt04/I\nbjWu2bJeQh3CMA7Duksn5svOUtW1PuaO3iYTAmpK35bzCTme9d6jQo0NRIJK\ncDe5+5KA3x3SHQV9eyH5lCnUYz9JQNe8hqOaM5qbb7czUzpTAkFxbG9KmQgP\nQVdI0xPYX8eH3dCm4u+A6HDmTkLdLTydFaVhJVsoesHmxayy/RoRZlAbby9a\nGA2gCv0B+Ms3iSiWOGtpOX4i1lHBy9byPQiuUOIQrRHhO1BprgDgAtRnqi4o\nFbS6287Yd6EFGMnVNb1zqSpx+gzb3vQF69WhubPYz57LXKJ7snQdtmY95G2d\nKInBBI7GtnYYeOnfA/TewNrnteIlycufF4DAot/DRbVKpjmBl1XW07rVewEx\nDVb1\r\n=YTal\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-6342f8-knykwili_1619440261992_0.32387340025572","host":"s3://npm-registry-packages"}},"2.3.4-feature-fedc07-knyl9qsd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-fedc07-knyl9qsd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-fedc07-knyl9qsd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7f60bce7e225a1301f82285f17dc10bbe3477231","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-fedc07-knyl9qsd.tgz","fileCount":309,"integrity":"sha512-eiYqxaCs2CIgmloo8rzIb4nSHFE+jcR0L7QGVcJ4+4YVEAXH24bU0Vh7jbgcrZpZuHFfE1nmByolbMdoEFar6Q==","signatures":[{"sig":"MEYCIQCVD+wqNwjftW/31leExvL3Wz7Tp86DMXT9ICbrAzvR2QIhAMhLtm+ba2/WSjcDUeYW6j282HcZP3AGAKCrAIuWHkA3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghrTuCRA9TVsSAnZWagAAUP8P+QGoVQuCzItKY5LHce8p\nqkdcSp2aWIJ136vX3J3Toedvbf2/MDK1KE3HiqfiELjLn5cGLuMrFl4XOKc+\nSboGgl1V6HJ0BbkKf8Hdmd/20f1jDqcBmC1MVlh7Eba06xsWcSiBtGVpQc+y\nHMKh0XyChpKArV2B+H6gkmsJkBl1zljKg8dfGA6a9XI+pFVto6neGFu3TEVj\nL+Q2jfCNVOv772EHd9BRH1/5XezAonmg63yCkXnVPnVLa8ZiYx0tjC4Klu4v\ncH1yLZ2viOpYL5sDI2cwZuPMyMlyVrDYYQxUFWNHs32vrbn4FK7FMYNSgnZB\nz1J/oJm2tIUnT9gXMdiobRBOdXcMEzn/ilpTxqg5CXRZUe6BlPR+QZ3Yu2Iv\nh9y00Oy5kKUyVY4rioPGGbOC99TNGxT8IUw2MR2nBdO1WiMz1h4uqN5bSALk\nEYCFvmE5WBWQWlZYeY9eRgf1G84GsIo0pap9MToUzIxMVH5cMjZmwv3toBQB\n/y6YOo6L48uu8p2hvWrJsOkAHYuq/B2l15WbWB/E0zKpQov5r4iKb5p6EXwz\n+EdH3pvN5kuraJr2gsPIMTOlTh1v0lkK1JtyQ/mC8dyAwj64928zIk4EQqDt\nW67pk/79ooQyjtqBHWHsVzysEiS7sWbYsoiVtxoza8egs0W31X3EY8fysWm2\n/b02\r\n=cSuE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-fedc07-knyl9qsd_1619440877617_0.35937066781346405","host":"s3://npm-registry-packages"}},"2.3.4-feature-55a3e7-knym2vby":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-55a3e7-knym2vby","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-55a3e7-knym2vby","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4fcbc095cc815a4b8a6d313272a179e760e542a5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-55a3e7-knym2vby.tgz","fileCount":309,"integrity":"sha512-dL6WhC3+GmKuLERivD8g21D7R49ZnYdOkY01qeg9lCXLI7+16xV5N5cYs+QJSy0RzDmtvNDwYdBxkP4KlJ1hnw==","signatures":[{"sig":"MEQCIHTfCPcrZ/C2bxtJ/Ufp4NJH+kudCOScLOgdALSKhiMWAiAziaYuZEyE4BDIHtqU8jaVmLMyQ3dmwDbjJ7ZHbG6azw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghro9CRA9TVsSAnZWagAA9VsP/iVChgn4yFw7l1NbTGJF\nzbXpiasXCACOYE7GkNdaHmY5E1DKsUgfAbcrrzyNORk6gETIui61OGSG0inW\n0cv2OYZznH15JbnEf50FNBcbswpLWQYsC8Gvz/Wxd6RS7aIFLcI6pzHTmwJM\nXSQ8oAcnchIX5GiTeqdkdSIIvLH49VSh6JLewcQthruu/70gdqDI/a4GHgo1\nq9OTaFRq5UxgiVoFrZcVxmi4Bi3dNEkh4cA7Srs5BMcmgXlrRTskq1hERsB/\ng6zfpQAByI4vqbwAAx2gW7O/Sn8tkzAj38zoZ9/KsC9wmeHy4RHFBRhtKzuJ\nHBORTpmVngKn0hCgMAIPZGZy893AyNaOh7z/b+F8Kf6ucfp4FHC1x8uFfcye\naX+IOxEgRBOFIYPAajeyW5m44Tkrx7S8whLS7ZlwK0DzybeFXNbApEyneWmj\nznAdsMk27/lfdE2itxyM0muGWnmmtb1qUmbghTgztbw8PMBaEVggsdaDne+V\nKhinyBBokWkLO/aNVK4qtLQzVFYnzHvTmbAx+eERcBu0XwhT02g3KjP76GBy\nkJuXAiLpkC6DAYjjyXrhvj2OuUA3fyjKPVO81OHjzNsh8zA+GosXI/fmsqC4\nlX2SO9+PyXH+Z8wsEpzcebnAigFm/6GhcXa48g0GF2nlLOFGqMXlcS0KKWxn\nMBX8\r\n=ipkh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-55a3e7-knym2vby_1619442237046_0.583465728990229","host":"s3://npm-registry-packages"}},"2.3.4-hotfixes-388006-knymfi28":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfixes-388006-knymfi28","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfixes-388006-knymfi28","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"58618bb6f3e47fc60510198c78f7b28f21a20cef","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfixes-388006-knymfi28.tgz","fileCount":309,"integrity":"sha512-OBsWPMQqpPk1lnuaPvw7Fv5te/JXJT1b6DiZcmNUPUKXF4cGANs38ir6aZoULgLzVuMNqGq0nxysNY7S02LZzg==","signatures":[{"sig":"MEQCIAIkM30pyXKetXLstcvyLKYy4+GBHucZnO1M2YB3/n+pAiBGVHHx8FT866+I86MRrK90NyhBAjt46qgZzcT3/v7BuQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghryMCRA9TVsSAnZWagAAyIEP/j1HE5lRHkpq7xNgJAMz\nmsLb3PNEsHZo0mtnZ69KKksOXib82VFgHO2iPG4eJrf4Sk0Y9JzRskMrZVya\nzQfPQD50WGFxUbxAs9EQIkkkq1g4ieBkhD2J26ENLBNewYpP9tl6ROExR84J\noNlct7LjVP8lopTE/kXP1zGgOAVqHNGRWMdiFSEYyfeuIsDkTjlTcXSZn9ot\nKviDJeyVqQK0egyfhP0A/NhH/k6n30LkxAD4YX/xPDDL5ZNVgixBDVZsv6jm\nA0eU9mSL3nQkqHp5X6cIRAYCzX7H4tKmPsAZccV2FD0FvzRWv00likw8AONW\nlpTEBnFZWgebr6VC5vOqOd877KA2aF1MBZTH6wMN1XZlKwuW6UgVy75vgKlk\n7/B0h0Rm/zJrDtvoYqed3qyYqYFTIL+dCjW1BeyB4jOKDD8dWK2XX2+giGNI\nhzdd7ZmqXQbIY7OkPbW/VglhLEir4zmlWqh0RAW6jJFt9QPXA1vbmuh/GuEE\nNxwyq5UJA7sLTZcUMoZ+phD0JAqT1B5OSHhtqAfTd7VBl1O43O66+x2fSWu0\ngI0x8j/n6US/vhep+c8i6+kBfZ3HhSK45Hexckxsiem+4kdtZOzn2aPdnTO1\nI3qwB/z5aGmFa5lvKk4Fok9gW0NJHB24oRze99vs2ePvn0pSTjKmzzaMKjlK\nGOOG\r\n=bDH2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfixes-388006-knymfi28_1619442827882_0.41973917363884494","host":"s3://npm-registry-packages"}},"2.3.4-hotfix-ad40c7-knzsgn3s":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfix-ad40c7-knzsgn3s","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfix-ad40c7-knzsgn3s","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a08949bffc323c03d6651c76ed44c3223495fce7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfix-ad40c7-knzsgn3s.tgz","fileCount":309,"integrity":"sha512-lpu4sdqcu1zN9wKPLAy4IWVKOLt8OaEmu+E9TVTyy6HnVNjKrfKazD3vVkl4NSdboUaksu+gHnLrYzGljCFZOg==","signatures":[{"sig":"MEQCIGvFkRbq2UdqpQwz8R+bIKszTLIpBfld1wSf3P7Ny+N5AiAk5+NSPmZg1PF2CXNdYyzQ0ex4TZyOLsMcZoWSI+LvbA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgh9BNCRA9TVsSAnZWagAAZnAP/3j8HBJAVfnUcrX9Q6KQ\nJ6ruRv+YvRpmDXctspgaBlOMwbl85N8Y/5yK7Ho/ATwwWL0kQYbKMFgt8xsD\nf4k3cDs6AVHbfAuT99uziO/ZmWR5jlynd7KzN3S67iIbQLp1ihP3YRy1lT8C\nB25rm+BI8l+B2rqMwhcWQivOF2JvoTCoQ1V+3co1LLFkpwpdNHRdWq0vN+CH\nv9foGdipkWjhCo1DggFB0i3H+KZ1N2lO90KNk7GZLiwEJnBoL8AVMlahX/cu\nYckwmxo4UjlBCaWShmmZvHdto0Jovm+6QBdp/OyxDpuPxby8nr3B9XYG8SA0\nE4xHQNuvi490WUaIp4LBd3lqb5Q0gNDiF4ZyAtQFOL3qKjJvDBfdlqNz4BzP\neV2RXCcgCJEvzrd6VPoNC9dM/QrEHh/pbyKU3GSHgQ0Yn31CBLtRMeV+3Fvj\nZ1rb4N8+8u978YuGqaj6UKYqzuVqHwC8GARh6tgIRD8ABkS0iuEXv7JmHCD+\naJDfFa3Cobu2I1sw6wM7F7MNA0yEPNMypMRhbMT9cmpP3v2SkYpbO/INAoQi\nC9PsCn489nm01T4JrZvsiYnVVylk4CTu/7myo6XVa1Bz7XfSfWuwhE0rEg7q\nRsD4GDOE582IowhMo5t/zF/k9nChQBFrMh/oLPU8THFtG7vxj3pIyKxhZzM0\nuRTn\r\n=fO60\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfix-ad40c7-knzsgn3s_1619513421396_0.36777158148223577","host":"s3://npm-registry-packages"}},"2.3.4-hotfix-4d3bb6-knzy9130":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfix-4d3bb6-knzy9130","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfix-4d3bb6-knzy9130","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e58082ce157489a45791df893135dd3218fa1c23","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfix-4d3bb6-knzy9130.tgz","fileCount":309,"integrity":"sha512-vKER48jrJFj+6+IJwlUyNauzpGl6CPU42qgFh66DQ4FOWDhY+0k/caiA7xK6n6HldDnid13L0xtv3C8bG/zuxg==","signatures":[{"sig":"MEYCIQDO61YRR/R7UjEII0PInvNt8HZOvYs8nojziwExuyF9PAIhAN7+fxQj4VaSE8uKgn5HbH/bvJzfAiuCQNdcVnXa0xNM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgh/ZLCRA9TVsSAnZWagAAzQ8P/iga2LSnJyJXx13ektW3\n+TjPHl82C0PEXgGOKTRyC5A87fYBOD9DvPPvwmCmcJIYCZhKIXGgtMYxw0sk\nCxy83sANDuoM3ThaKw+Cx+6TQIIIuc5KJhWKm0mJdLLePmBdlGJjBWbTLm4C\n8SsvBF9llPW9IwvrMPc3m0SKVzzFb0Et8GSM3Oea2D0IdGJho2hDJq5pjEvw\nodN9Jh+2pCJ/lIg4yiDcl/iaZxJfbOEhYLj7PBThB3StzEgKBsAJnJKQwe2f\nQTf4LcUCGxU8sqHblgLx7HcO3M/tsxlKoS1Fvl1nRP2LYe++TH06Eif75Ych\n/VPK3u7N5v4AJ6oYi8mtIYoJZiwiSV2k9D6XWdtXxXT9dRG2PsJxmX3mdpL3\nmz17kRKQqbILKFd2/IDgcjhk3/rpmvVBW5jsHJKyFMtCdsXk1lvP8D5kHP4j\nNQwTpWgUwgWG1NBjALPiX+D99YCEIa8jidBMKiLX3dTqMj8Idu02vVu25y8q\n45iXAiE0UC4CJhkGJtwUI5rZaUyD7NjI9oGGLYy6uwk+yRaMu/rtKPQYzflD\ntlP2ImjLUF/lq4332riimr12fq/rg9bL6gUw9EUP7k7r5dDgEuxjHm/Avegj\nfHqvefnjTRiUS5OUCuhQWj/ErGnllzr4ZGGI7r1IdyrQ6cCVcFjMPASc+xeb\nKK4t\r\n=yosY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfix-4d3bb6-knzy9130_1619523146634_0.06221125108693526","host":"s3://npm-registry-packages"}},"2.3.4-feature-3c5805-ko067vwi":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-3c5805-ko067vwi","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-3c5805-ko067vwi","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"66d165cc36115bd8fe9a7980cfd3c768f6e3cad8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-3c5805-ko067vwi.tgz","fileCount":309,"integrity":"sha512-fe2rHVmX8vrM4as4sBatd4Sl/NnNq/wnmsRnxltFgg4pHrEyLrbHdANDFtqLrMiV9jeBZyF64N5+7eT0nrwo9A==","signatures":[{"sig":"MEUCIQDtstDwQ0LXkuXivA0XkGJ9N6/7QlNiYObw9LHwr4AqegIgLp+eu02sFsTfVm68BmgUDNZMRrkc6NiVQg3kKOiC8nY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524498,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiCqQCRA9TVsSAnZWagAAbaUP/1DEnCZBFtJ25oMjx56K\n9O/GGvKba+57R3gTZBDAn83a0Fb5ytmsQ1IALRE41/8y+K9x439u6US7t71N\nxJLatDjjxUoV4KvsZMa6qQPX5dN2bxOsEOW79e5eMt1iVr0OA3Puu07PXPGm\nDY4Rh8nyuCM5Dt7OXQEM5hmHQjPdvB/NPkEWgJoG0h9P5pL4omz3JkBpEZRz\nMuMpL+sFb7MAZbNE78f3jw4NpaKNt+rwU8lGgA/Ou0GOyf7g0Z80J5HLC77C\nh9FqyzVz2Y15eu+TU/LIP0gaGZGk9oLy90IwDMUyVVeXmtRzHFw3fM0Jekpb\n5s+6B7jNST9n7P4BcGfp0BivbLZFDyK+YcicBwB217W+IC9sTLsX7XR3NCAe\ngVj0Xv8WiKdxeV8U24Bc04UyTFptsPm1vlE6XcDaJh1SEWo6zzTD/8v7lztj\nqCSnybMFhOFi/6XTdKbZN3TX32nDhoCs52/ngd7hye9fc7Pzk7z5YLaQyYPp\nlcUdTH8AqXQOvdh1ggyCSWbBJ6pu6XSfp7EOAZ8SdBbORSTpp8xjQcFplubN\nvPnZAOorv6FrQW3wUtsXuZlNO1F8Hi25UcOxBOmJcSKrQWSuhIs0N26xzMu5\n84PYmCCm0YuOEFUN5xPmODhgrAUljtiKHhULt3oVntt64PaMZNfWzIsJiEXl\nMdxV\r\n=aWBn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-3c5805-ko067vwi_1619536527467_0.9907165617128226","host":"s3://npm-registry-packages"}},"2.3.4-feature-7c4633-ko06pxss":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-7c4633-ko06pxss","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-7c4633-ko06pxss","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8ccf39d54f19ea57bd26124cd7be903b53201200","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-7c4633-ko06pxss.tgz","fileCount":309,"integrity":"sha512-l6adFkqeDc4rPvhAi4gz/NPIIk9rztNNOF2FR1wTuCDj4iSdWw3sC2zW2eeV59huGWTD+PCjehEyuS6t92uAmQ==","signatures":[{"sig":"MEQCIAaNDPeUPqYMfbfFlzPvqVZW3P92yN1Ntlq4WJOuyOa6AiBBTRvZVEDSiVPIK71ydwgQuFKqz81d4+aHt9QmxCKtAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1524510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiC3dCRA9TVsSAnZWagAA14gP+wTjUDDR53FW2JtWSCjA\nHTR2+2+Xl02LA1Os36oLAawO4VQ71LwT9yeC8EH75a3aD4uVe3+RxAc0iBei\nNBxxBv0BrPLWF55/8yRY/GRTl/32nnI66Ld40TKG7q0SHEdWOFz8LFLBC58T\niTb1GZ1Wj+b7Ni1Mp8XpRTxUTA3JgXZEU6p7KEZPILmwOYm0TWf5NDva83Wt\nx30sGGX44hrB1wupHYwP72zsVd02jg8fpUKlE6dGxbCTSrBp/iuIiGuEWnwu\nE2nNBUQQfqTPg7YKh1pakdNfLPZ8cVTiuGHJ4k1b06qL8rIFJN8wgg/7IiUE\nAguZo6DRURlXjdi2QmFUvchxrekV7vl6gcD/MyEdTx59kD8Ibx6amJ8o92WE\nIfG/ZCyhBGQWi0C5nmBmHcQ/K4nwBw4EQS2IP0c6tJfe3Lds1i6opWXB5kPN\nKM7aC6RSic2bn/8+T2W+brlre5iGu0fgwihl4pxdkEVyq4ZTUotDl3vIR+Vw\nz4IqnOnsgqPKr2MVvRVBESpNbrH6h13jtZ2Cog0esZpNr1QU1gCzDYEWIAhq\nweIulhA72s06oxuAnOF8Sg93GaHfeXrD+8wlKyufRHwhO1ZgqAL8J8l+yocO\n7Mq9kNh3aDqxhIXp/z2tHqOJMuuxdHGk10AkwLxDxq3WIowhuHnzl0TJfgYB\nxVCF\r\n=tDxF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-7c4633-ko06pxss_1619537373149_0.8171279225302752","host":"s3://npm-registry-packages"}},"2.3.4-feature-222dba-ko0b0jfl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-feature-222dba-ko0b0jfl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-feature-222dba-ko0b0jfl","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"31b49536edd34a239eace49ecbd267c00d7fb7f6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-feature-222dba-ko0b0jfl.tgz","fileCount":309,"integrity":"sha512-SKQ247T5dq+dddZ4HL2BQGRwKfJ7f4Hnqt44ED5Y418eHc6XPVwqYvx+u+KJhRk4RrLPWd2IowzV83ubo6a6hw==","signatures":[{"sig":"MEYCIQCXFwLpzk9M2sabsNZc5oWw6pHwLoazcmSXRNoE2toodAIhAPiN7nmLYZDDWUB3lQnmwdEjR+52cM3rpS3L+XdJGy/N","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiEoGCRA9TVsSAnZWagAAZMcP/RkuoPgY+DxCQ6nuXLY9\nbr2jZLEtn3wT17TNfWZbcxAuGpWkDKpAjA1q/jDMEj9878I6nAPrnl+NB/HC\n2urLxqyGvWtK0RGF/rbS91UxDf5dX0uX40TLZTuj8vTt2hnKyHE4vbvHnHV+\nvq5l9pt9FiBajOYgHS3ij0zwYyTCRbWpQQxiRugJLlx8zQ7AVbe89386Il4d\npVOoX9ujKlKDbU2sLav7fgLc4htIq6zJ2VjEopZMuglUw6lMPl2Yj12pDOuV\nMwZr1nOwhg02aHtDDRaZsd7jpLElOoKo2rkqlJojjH80AZFScCNbkMi1+KQt\nLph8rVUbPjkFY1kg0x2geBxedwvAAcJziQBrVVs0WLNJk7dWIRyjnTPY7yNr\n6gK2wQZNDMc7lGr1r6hMCRyffom+NiHyMffie/Lt+W5mzsAqhvgDLRJc33VL\nYrOL5jTZvo/XStibi+O6f6+iZXJ69PahZnLqWbSFwI8LsgIt+5VNUCzixTtJ\nBvHvaPvpgUTl9/2jgdvaqFWoWXJWhEF5Lu8VbUR0aHc+T4Vgns9wyCVBMe78\nnA9RgDFo8PfBkLzI6ilGg0Z96J8QWTEUuhu+XlOR2fpWcS3I682KM6xBJKho\nN0F4HWKnXibTtxIfR9d8g74p7J+nqV7JZDEbvO/EGXscfKcRLVuFDAG74zkK\nQi2f\r\n=Vr57\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-feature-222dba-ko0b0jfl_1619544582268_0.9428058458014332","host":"s3://npm-registry-packages"}},"2.3.4-hotfixes-91cbb1-ko0bfh1j":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfixes-91cbb1-ko0bfh1j","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfixes-91cbb1-ko0bfh1j","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"254e24c4aaefee0a1e21a6f46467184d87b30f88","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfixes-91cbb1-ko0bfh1j.tgz","fileCount":309,"integrity":"sha512-o9g/FHMkrsEaTzCR7GH7mLIVAx4j7smfkQNVNMvtYL6295v77tSWi0W7gBY62dXnOMIvIiEZCt6RkEqbfUYoQw==","signatures":[{"sig":"MEUCID5ROYT2TbNJ+a85STXBJr+6nLzoPBpbQhU99NBxo8RsAiEAyYPSp9j0CYPDRlh8orlFXtxFYyc1OOOfxUVUEiVipfQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiEzDCRA9TVsSAnZWagAAERsP/iC71kHD9FrbIMM9TLA1\nhz+/VdFncmWskMueYIUIfPrUSvTs7N6VFh9FaeY0zZ6JQwZicIt6swi3Epk1\nREVlAONDjRJty0nqpPuWn62p3+jRVI3+y8r6yABv2KduVUyU9D7BjN6yWunv\n+r7CaxA9RvPVYIaRcZ7/QjGJ/tnop8OavWQzzCZjPF1phDMRgr1jsCz2NbjF\nJT9t/XkNvjjHivgDawGWKcWQyb5XA4WasWfn1GbdEWzsyydyIYHr0vkSgJ3D\nbOItogx6DqrEpdTL6BeMQ+rbGd2pYzMEBdXgnEtQnhFX22iT2hOsPTsttPNu\nR6+aHs/f50L+gkZB7VyQi/y/euQVW71ZjkOKpL3ch5kM/Bpi9l9lrsErwMYQ\n0e6XDvQ50vOz2oPlcE3XSUN96MBfU4apE3HC94Pm6PBCLac7odONohxsZdDb\nPQp2/jqFYxMXX01w9yBc3im4UrMUAv4Pk1SUUY7rEeq46RkBG8vpMgKcF8jy\nr4jYKHgFMo1CJOTldFEN+LwkI9cy99IT8rrYwOEEWPEctoCvHNnZmDr0lg27\nQSK4lvGpfjrioyHG73dmsXsy4AbKta10T1ow4eZ2+oU5heDbQJVknyW7JKYR\nKLWYEBB2pn6NAA7e1RkaNj8v8d9KItCCVQKoMBVbhNh3pb5PmLDf5vm5FPKw\n2uPs\r\n=hJ+R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfixes-91cbb1-ko0bfh1j_1619545283110_0.9565506015385348","host":"s3://npm-registry-packages"}},"2.3.4-hotfix-1510b9-ko15k1wl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfix-1510b9-ko15k1wl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfix-1510b9-ko15k1wl","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0a2080250dfcb856c516f4ea8452a6fad076c72c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfix-1510b9-ko15k1wl.tgz","fileCount":309,"integrity":"sha512-iN+c9TOe7r3CFROsU02qg5czUsPW2Oja2A4MWlXlqR5C8t4Y2goozr/DrpzT0EBytPJJbhzQMSLjXAsGPPrlPQ==","signatures":[{"sig":"MEUCIQD0N6V/JN4WyR1DJfpAon/RUAhNfSOrr0kLh66iRg27HQIgeZztqwXh/BbP1EQQTcpQQVY7HqXFhLormpGiu/WuqZ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiRJsCRA9TVsSAnZWagAA35AP/2dsqLq8Gp/JB29gOHDd\nby+OUdp0rDp7goO820kz2UEjJ6/MKXrZVpzVc39IJ2SOiGBVEI02CmOejH7r\nyNJqvlp5rv01eGzUWJzMLrfVy/Ldx07IssJ4Xw4cerNU46DAzU7mA3LoSzhg\n7P8GUOmtMCFpFuLQKejRjuFR3DXbE0WfGzWHjx3gq2YSeBT3+FMMQxmhKVOF\nMrcvJYjO4HR4EiLZd81ikWvh7CBPYnqaujusbD7pxIHkVLCOj3toNCiGrC4S\nIPbWv4Gr/1tOOwsXIYeHIwvW8P+IwE+FKwUZFlR8Mp0qGZ8AY8ND2XklVqGZ\nRlJyKF0AEwBM71eaGDsNw7fAyd5Og0pg398Cof+aPxs2p9C8SfGwhhhvGn5a\n58mJklTGlKYSV3BMNvfbZ1sViqjxirUg6V6o5LVpW187d7KJ9SJm20CdzNor\nBEr5Mo3WlvwNsO+XVwACaLtQjiOOa/LjHsvjCnhncY/ppm6e3v9flmVjDqAz\nSRxmGF+Fd7JyV+ChOwHZe1SfFYFFYaOU2caSAaUnyS5qgjm/CSWGYB0gAMf9\nN1Cc/CjEnGuaXkbnIl0mFEFCxX6sRUK8MaBHuaPJk61+7MH8obkf+/5YuyRh\nWS/OXB8nDdEf1FHQyqoL99zvQaZp1uJyEL2zZL7Fl++Uen35AmsIpmG6UYRF\n2kcd\r\n=r7bQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfix-1510b9-ko15k1wl_1619595883972_0.6624764342334302","host":"s3://npm-registry-packages"}},"2.3.4-hotfix-89c9fe-ko16rdya":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfix-89c9fe-ko16rdya","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfix-89c9fe-ko16rdya","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"65755e2b76b4197cd1c714a10b09f63733b01639","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfix-89c9fe-ko16rdya.tgz","fileCount":309,"integrity":"sha512-VP9ycn+//KYsiunuZ2FKXKqMJECekZ8X+aDZo+DyM4FvLRx6aaCi4SLosJVGjiOV4d5vpVVGXHf3ohhR7opJfw==","signatures":[{"sig":"MEQCIEcWBGw+bXpJp7ixqEQjo63a5IVczknD30/e6JGaXdkEAiApcJPMGcDc7l0WGn3C5TWMqspBjkHp8mdeZGFj6SC2GA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiRpWCRA9TVsSAnZWagAAV+IP/AsD+va9Q51X4N3KYX2V\n3DSNhA+WLHGdBN13AMlnDn0YuTAEiwxa2skJU7AHbx1HLVTu4kadwDHahCO3\nHxpqbw+8GrBZujZ1Ztnr+AK4wUFPrEEpZKAzsuJ71MAX0T5amC0/IZ86DAUU\nQ90BZXu1NGarxlUZvUnMQkZkQsBRno0y+ye+Y4tpT1tjW1LDYQ5JkYNYy1gy\nLZDlNjkjRppvtPVYSJ2U9r7lU+k+nOQyGK9TFJtnavOdElw+KxKrxLn2NyUd\nZW+fQkdpCzdUmgPqujItpxt1SFkeacWagqCgxOt6lEBvXuLk26qihDb5fMwq\nf05OKpDtSBdCD63IgaHXHWRbWdHg2Tb8Il31wpbmHim+4YIS/Cwf9n/YsEOu\n3G6GDN/9JLXZSKQ6BqmTbFg0Z8Pytz9olc41ye5xqxsR583L8raVV+QIdpw3\nOBbAwNqpUG+LCx6BBpOyB0OnfVrO8L4vpqXybF2jbxWF3clpNiaDvtQXijum\n504F53tWWk9Jf4Q+q193qc5qIH+JictxxPqrcDVfL8CBPIZ0d7UahvIIdDOR\nnQH6v6ntalyCzTjPKv09hVfj9D4IlhwKJ+L1tPAuJohwQA8CLGChepQE3cPi\nXIUt41Q6f1u5Mq0qJIEak0JriBAYPPBYy1Ufgd5DnJ+t2AgqcvWnwGFDTcis\nd1Wc\r\n=dkTK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfix-89c9fe-ko16rdya_1619597910120_0.34567026857742755","host":"s3://npm-registry-packages"}},"2.3.4-hotfixes-256b67-ko18xaj9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfixes-256b67-ko18xaj9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfixes-256b67-ko18xaj9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f1bbf845f7b5a7fc93668f646dbe532e983f6656","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfixes-256b67-ko18xaj9.tgz","fileCount":309,"integrity":"sha512-PuoA0dvLVSNhw4CivwJNRh4aPuxeEeTcFRMxU7hr7nMssBVdUagDb2t3Xrt5Ssg4U+biuWwttSUxQ/BDRpBNiw==","signatures":[{"sig":"MEUCIGihgRcfJa+t9E61cDZPUl4O3QD20jiyQA5cxGJ3mkMWAiEA78SS6ZZc8c7+7kae9o2uG/4tawBDrOjOZnpdlct4Was=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiSiHCRA9TVsSAnZWagAA13IP/2gM3SY/LZAgguCfHKfz\nO9qzj/IPTG4xuMOxAaLOQGYy78q26TXAuIfv+GkcbtPhcLAFLpixrVZimtIb\nE8XMSbP7ggpxBl2FKliYZ8kfLIRa0JD3GSO8j5CUI+UIZWqmvRfecv+leAg2\noJ2jqvlfWLtDBOin6ujYgHcF7LbKbWXjEyNMTmNMklNq6eyuOTEYwFvv/uQT\nbsLwx6bKde7rLidH2ERzJhy9eMsttWCasWvRgjeD+v5jIALxa4i5gXbo6hbo\nkH5pIhfYoaXp54bn/6aNR/Fe2IElyiQ3RzO62yog4kO6TYbTUw6pJ+Ik6A7J\n2dKGzcN6eFbXbxWA1MyBvMtp/wZ1TOVlwU7mtbRBo7PiyNSoxWZANCHXYXNY\nLU01YFtOoFMD9pzfjwHfF5zTl1skCieWWMVn/+UZVIthL+RlV5ZQYPUS3NeZ\npreLNi2L3oX/rHb1uRdkqnvbBi27DmlA3O/FWHA6mD6bsOsiIgDRLpLBVGjz\n3qQtEudHY8rV8O8b/+n+FYO6OGuAC5kF4ITG4NxRiFRnNNYfxM6RvKgxNZ/N\n0KUaCKJSfzS5U4jcLz7Rqlr/NhXOFVEaV9BCH2kbbOjyYB15PJ/phVEmVy9T\n1JLtp/bb/tNI1Q8KUuQsAI7LhcOZon8r1jZ+Qj5jwBRtXo1hJ+g3QMoLWOH0\nkkps\r\n=efun\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfixes-256b67-ko18xaj9_1619601542647_0.3700775241400831","host":"s3://npm-registry-packages"}},"2.3.4-hotfix-290269-ko2mhmtl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfix-290269-ko2mhmtl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfix-290269-ko2mhmtl","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fea2b57eb34ea1c96285fe249dc8ea1336f52f4a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfix-290269-ko2mhmtl.tgz","fileCount":309,"integrity":"sha512-/0bOv2LKyj6Bh/XC5SKHVUXkFiAhkeT0K0MAM9va7ydk58yp9oB5gHb0e4Uv11CupxOxdQ1CvRHJA2xEyD6Yvw==","signatures":[{"sig":"MEUCIQCL46qB5aSAtcNvWY/1s5ns/pSagrteKBkZDL18ZxP6zQIgZNuIhZ9aoR/pCa3dP0p0P0atiJjL0FiWqX7tDGuQKs0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527772,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgim22CRA9TVsSAnZWagAAN9UP/3rIuMVtOZUD5Lvbf6H1\nT1jqJjg4xN7lxan0nii/hpNgIWExfGJQhXLBAc/uOAGzDwA6fbRtmXi/CVcn\nJPbq+q92uPBFLDL4HFXCY/CuVToszzdY+P30VgEIy7dy8Wz/o/La/pzPEjPF\nSXwurrB4OZl3hR2CCudygk6bXauvTuBZhvCkvXYRCtay7nd+k5X2OAYia0iw\nfrokGtUdRJYzgjsKkrVXgI6Skj+oga01uxJeGPLp0Ns3ywrj7ZlpW5ORDTOg\nKN0WdYbVxYorMpgftEdEMUTdahhw+2hhZhM0Bx6RKDUHB2XCMZqZRnwIjix2\nCTmCu+M+GEcjSE5L9WFImACBjsr0ClwfXDUYIbp6rqrS+WIzO+8fX+9+MbPf\nQKgTATeL8Tu6mIrZxzZpY0T0lVVJuH/jnT0rn8xivTCxwy6ifsewco0QLjdd\nY/SGyb6tExNFhD3BUx3ycswOPbLChzYuvhw0ASUMzRUR8PBGcktSVkCX8hc7\npE2l+5jQBAqVXPLCY+XQTKFRH1XrpTYvGHSHJXEUtZAPx9XdhwIrbIiAVP7Q\njIU33vkUydvFC6hONTwN97VWhOUZXdd3ffqOCIxHsmNhRYsJeaY3auhcpKzL\nbSxtmMUemQ2yx+cSFW1Qsp3uyo8sZNclb4UUHoiL2n4/KtMAKwCno9dx6/Qx\nsmOK\r\n=gofz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfix-290269-ko2mhmtl_1619684790352_0.011447526647854644","host":"s3://npm-registry-packages"}},"2.3.4-hotfixes-1975ec-ko2oh5jy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfixes-1975ec-ko2oh5jy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfixes-1975ec-ko2oh5jy","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"96e44abb2cb3cf8a4a20f943ccab7817b6e3f1c1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfixes-1975ec-ko2oh5jy.tgz","fileCount":309,"integrity":"sha512-0BDFVYWBAvgvzIVoXN/rF+rAnl+6UPYHSoMj0W1qBRpPv2RFVTMnP5c8PrOiHLwsyUwDdUyLJKj2bnE1+wol1Q==","signatures":[{"sig":"MEUCIBudqTaQrakuTLcCtLzYWrJVY65k57Fno3CzOy36AKrEAiEA9M8Ak5hpi2SYNmJkI3/PiXtndOGDsIJnwQDADrRsmKw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJginq6CRA9TVsSAnZWagAA5ioP/jWekEauwuTVZLi7icO3\nj79zoMnQeucy6NXS43ffQTcAhII65lIhTx2G9yQDSfcXdrraRK/NbO7sgDml\nPsvAJtFFpLWZZTX1o/pIU7JgJ68FwLzi+QtmEs2EzqjWi7t84+0Y29syJNdk\nR8uxUSidTpb2EqTickfWirojFo8d7cm85kAu9uo1KX9yfXeW8nVaJ+jifcVm\nhE6j6FQgEKTT8xUR9tr6nxJMMnf/3LfXG+f1iJEg8dD0bRqdIHBPJIWqHNAW\nKlqUyC3GjBj5GGQ1274Vdvz2S0T+Vt7lHdPoYStdGpkXxJAdTe1gAwHYHg21\njB01JyxGtDR258bc6vO/pyRCQ3UBSs1Q5ow8k2Yw65eWquGterFNbmdEfUAB\nEB6afe4m4LbUgu66yyyW1mbHEnde8kiAA3N056Ahk/ZI/AjqAHOZ4eFKdRvY\nvKJFwtNgpQC5+/w4omrzC2+TQwjMICAn6T8Tauz1v71jKJz6/ntsWNuEpAj7\nrCLdoFyJe6r8jVFxZTq5loBcSJHS16n16n72nRXXWKDD4Kf6tjMQdj2Adkjx\nL5XIRG0MU2NqXyLjAaRDY2cBZQfaQyy4EGXqOcc21bpRI25uLKyDPD/u1es/\n8jToI+8Ex/lmMKnmJGM4ROnGs5xgTg+vVUiTCZU5jnWVujmH09l4V038QfnE\n36Dr\r\n=r7NW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfixes-1975ec-ko2oh5jy_1619688122419_0.6404278793641938","host":"s3://npm-registry-packages"}},"2.3.4-hotfix-38c220-ko2wq54b":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfix-38c220-ko2wq54b","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfix-38c220-ko2wq54b","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"055d8e05b8598e9dd203acf48c3982e93cf2b0ee","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfix-38c220-ko2wq54b.tgz","fileCount":309,"integrity":"sha512-auOWFB0HL8UJvxUYGLTdA0X7c6pqxyAiP8sUONHMspGDtez/wcUocJtlL18fqp0DM2I+CCEy3GKabO38CZ30dQ==","signatures":[{"sig":"MEQCIBoejWwCkXdLP98yZ+geeL+RnYP10/VSoMaXM7yZ8i76AiBXmnN9XRV+LhdT6C2Ets6sfPnS1g0aTGJ2WYeZ5koujw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgirDhCRA9TVsSAnZWagAApaIP/Rl8Fc6DKNQ6Bv8orIkT\nGQ1QukiArNR8vkv3TET5QhjTmnn0NH5j8PsbWA+R8YYEeHaVVnZ4eU0N0ulc\nYZFJ2j3oWpsaMAeOurfgNkZVNkN4kiTGm5bioNET7zC4D1lkCyuzS2IYemne\nT+ccQHWGdmHWkaZ+r0KUgR83mLUUBljJuZ7M5eYL4vjrvaTDd7+6+8MM7vTS\n1j5qAFt04y02nMjdRearsK5LTlsxy6YBvn7qCuK5ShYYvDtoSW6FzyfbU5A0\n8F4f6NY/va6VEVa2/03OJ4RHZPEGv3jGvrTx7oMdf77ZUnwfQdFEa7Lpiiya\nuGAGo/KixTSxEyT5Zd3cVkq1Qv72u0uryNyujcApTypkarmqGilNamgGkNsf\n3BUN2COOkDjnxl4f27lV8W5zvmkhV+uo9WTrSlAdo8IzpalSglzVaVVIPMcI\nLpFkQ0jxJNphu9IaxDH0mFfqJh9SEnWU1NO/l8XDV9B8pSY5KAiaMzW73phe\nc7C5Q1+cyFyzN+3Gl2ghCzsz7IO/8LVLmj3l7x2famZBHs1sZSH9kC3CTqVD\nEnO7EC1JHWO3qk9l5noxE6fa4DnjJru5LuA+RVU4si7yn+ExmwPQhbTbLvVT\nUrRVwtSI9RndbBP35BsaYIU7rlePx356DY7E0HSGZdN4CA+ZkVaJ2GYKDi4F\nUAzo\r\n=aSov\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfix-38c220-ko2wq54b_1619701984909_0.810441586957346","host":"s3://npm-registry-packages"}},"2.3.4-hotfixes-3c6e96-ko2zy2ur":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfixes-3c6e96-ko2zy2ur","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfixes-3c6e96-ko2zy2ur","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"132df48fd9cf3397576afb3e05777039aecf6700","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfixes-3c6e96-ko2zy2ur.tgz","fileCount":309,"integrity":"sha512-EJPF7X+DzD0rWVSypadqAuL5EeLQdieOmnv7EKzFQwWB2GzDhEkkMPbDnhcfoGwoZYG9L4JnjjDhsGxZp/gJ8Q==","signatures":[{"sig":"MEUCIQDfXyQjawzMOj/zKfbu02F8oFmQlNNiB/RhbtZXr1VNhgIgBAswswFWNwK5Q0GODQbW+U27XTtUJK55d2n8kHZhWR0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528942,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgisX9CRA9TVsSAnZWagAAvVoQAILxfDRakKUn+eGWybrV\nxrx+e6VY17rdPwA4wD9/UloS8GSiwGrMdaO1XhC4BaFQWm195aXcDVKhPt/M\nmlxa3o77UdQtPxqZtafKa6Ab1hVywmh8Yue1SvtVhqL9ScziU0IbtCQNuFVU\nPlMhTLxPpWbAq2HB87WgEkXmqSlFxdSYPHSp8CVfMn6BhNNyIqgVTiNV7c+T\nOVB30NYLNT7hF6m0L/ZRh8uitCfA9BmsoQJlSoudfl7p/AIqptH4nAWwO0EI\nBsLXyECqkdPBrLdsaGthi3wJtLs+zRV6oUI8wQ5tGOzz0sL9F7k3pH58rx+r\n6RLFNbN5V0hRAcwL8yjuiejCbYpWCvf/Qf8OpC8RzrMFU+51khgrD+q8AAvW\nFl+Ny9WlQzg1tgcek2FWtUpMCAStQefozZby7H8+vjEKU642oCtU+sP6k4BC\nCkqtTVSWludU6iXLqi6BJ1H6A5iTVLV3LSD73ZG/n/EHXwznulgLQYCyfAd6\nL3EiNfjP5twgdrk52ZofNP7Z0kLf3w7dBVP3Ykd3hqUcRG8ef1ZRuBtAMy9y\nz1wXRIbtg2GSp99eQfIuOX5efJ5SU6a+oS9+YE1OoydaaVBRHQq78aGKg/Nh\n+aKjAnAijFiVB2LjYS+84vQVEapqTGiCjEB3fY7Y77/+fz/Ro4NqSjHpd8rh\neE0T\r\n=BQ8d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfixes-3c6e96-ko2zy2ur_1619707388626_0.8689467136042439","host":"s3://npm-registry-packages"}},"2.3.4-hotfixes-3c6e96-ko30be39":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.4-hotfixes-3c6e96-ko30be39","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.4-hotfixes-3c6e96-ko30be39","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a1755e61ce186633972d4633270e236382c0f044","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.4-hotfixes-3c6e96-ko30be39.tgz","fileCount":309,"integrity":"sha512-K1c38o9Y/S9ta2z/krISxHAw6zVGBuagLhTACpmO6na/GqI2ZtT1X1fbQfAL9nywx7bAY0ip7u30gpuNkKftCg==","signatures":[{"sig":"MEUCIE0bxUVANkh8vOh6V3fMisqrXUPlIXjBRknLJ9ueQcNRAiEAkUsMN7MOvtiie4GrD1g0ff3fUIIzke/n65w/gi8qNuU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528942,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgishqCRA9TVsSAnZWagAA8joP/RStODGmJICKhUb8XSV7\nPHfQss9CPXvxSNa5zGdePvtD2xjgeQg+Hy+ZxlPVzL1PBDFxiN/PLH0Gqc/y\n1j9EE/8wIpnVY10i2rnQvYrm6Wxc6m/dtkFCLS4iFjgcQafv3XEMmrUYNcpz\nyO7He0nvVBKqX9Oocf4c+Xjm+8WVBkitXM3dAP0juXoPE8RwfTvC/JItLBLl\nYR7kOeHehXOcjdU5kPawfyzKx5l0VfiZDxuQPY5/lcSL1O1acLwhKdZBPsVa\nUmdktBthOXi+5EFS5JNOua7+kMtVCCpo5NUr48S0UfbNyRDnkb+827s8mdWA\nV1POAfdUgWJqY/jlzXvDNh6TzTcjChQ/IpgIbNUtrPyv1AcjcgLfgSXxx12+\nwdweuL7cqK9mlSXR6Bi2fmehPz29n/7x/x0ktXb/M+Pe+56p+mJj6LuaYeDh\n1xy+/o5SxD9fCU/q3Ibtk1cA+9086RgmAjIUohOBqDmp2PQd7LyS6V9dEjKj\nTAhsMGfl7qT4RaPZJ/0VNPxw9TBWt1iz0X2ko9IgpZSDuuMk2NNLm63WFt8z\nl26uP0fadCvxeS1hu5BpdL7zYHx4eV2p570PeyReoI6PBiarIcm0dE+zki4B\nCraZc+Z6AUjB1rwUIEic6jGYGW4bs8UTP/2DzXrBbcyYNq1oaGdBlx28R7hk\nc2+V\r\n=Vn7D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.4-hotfixes-3c6e96-ko30be39_1619708009984_0.9751161157514519","host":"s3://npm-registry-packages"}},"2.3.5-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"77f5168134998d20ec61675134564597432810c4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-beta.1.tgz","fileCount":309,"integrity":"sha512-MkuW+FFq/ev5dNao/2EKn6XQ72xotNnfj4ZiKf3R4JBdxm50LpyzIuUIYyFyvcuc9nggoOV4exV25hPUjZy/Kg==","signatures":[{"sig":"MEUCIF2WGBJAW3QxjNOpQWVIJphMt/pK8X5oUY2F3t7OVEgsAiEAh0nCJw3fclbEuh69lMHc6UjRGBS2YGAfVU8awJJPfMk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi7HhCRA9TVsSAnZWagAAXigP/iEJ1q09ZC2f/3fH9m9x\nK5ZxcbpXN8NO17eE07OF2YPpnkpIAJjviTvVNp7vVLoPO/iQXwB8LiQVir3s\nitalnnZvpgUw6cACXOrxOAgADwQOiftpa9ccP+FozL1CSg1tHXlcTSw+TMPl\nr5gHqsipIRex/OI7QsSex4Sl6wc9t3sGHkx1+N/fvybg8MdeE/f91/6wUJKJ\nf0zw71ISTZY3k/0VEZj+AJQ4J67UdF1hyDl4lCRU914zrIsVOE2lq51fdwq1\nzmCGXf3vZBFQT7DMcuEKW+E1Y02fGqqi7hR8Yb/d9GyTr00uFBv70M0/qHze\nkgQRztDuOaVwDu5gXRnN5vdG8NYUUs0b4bn6Ada/kYtKAntz9tBgtZPFNi0n\neQqEdXDigAF8IirPAb3gN4+wU3LNm8LWc//kcxleykxSoRnmpwdtzNT2n6EK\ndXQu6416kYVc0e2maqII22aSLYxjmKwRJxNxO23p3SvJOaUcABLpgDunelU+\nxwZVLcQ73BQHr1grqK+u2KaDXitxH8FwBVNWsBahN+//O7f424GqN2yWj1Ou\ndn3Ytxbcbei8ZgDhShiJ7uCJ0FFIVTFn/p/tHc76734SOIUtrjKQ9P76Gymk\nHOEMBoA5NzKUORA5fAlq/k674FJgZIJi6pnZ39SF/0DZfPd9lDuyYi9Key+t\nqBw7\r\n=9i7F\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-beta.1_1619767777056_0.31451919725359234","host":"s3://npm-registry-packages"}},"2.3.5-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c3b15679b333de53ea287b91d7452f0af288d047","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-alpha.1.tgz","fileCount":309,"integrity":"sha512-D0kyJeYKOsxYhj7YJzFOovHtTF1HBr0BMcW6k2SDDYN964smjsJ+P+7pIChqFQolTGtqYXlHoCM9A7ki8ha45g==","signatures":[{"sig":"MEYCIQCwmNC7otde0OipaLxwFXH3wfECzuEsm/CNZboLYX91lQIhAKgbAzAVr+hu2/aCByK/sBg9lak0aA4HfVcCKJAPOIZr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi7JECRA9TVsSAnZWagAA4r4P/iRhqhLLnVF2AWkpt+hR\nEcKWGYeKSn7hrokL7aZMepTvFsaWW6VgcruMMIxWiQzj1ZN9PP5dNxBBVXdv\nw48atm6sHArth8cAEZRqJtVXY5kOxH2msZlNtnYMBy/L+yZ5sJSGoXxFsH2W\ntzJ9exbX3cypn0NHmhdTTqaPuhzO7nLAejjVNou1jdlsvSjzXFVjTrIsrhcY\nvxsrxm0784Y6qPPy+ZGajGiZDSxboNvplIjOI9sZwn4OxXn6NZ8SjNia/6hA\nkVWZB+E60slhDMo/lPg2p7vBkTeNv3/S6pR7iGH3cBwPQbbUyMOgaPnMSxI+\nrajVZc6CR40E7UDNtiDoLZVbvV7AYPbGrex58/SHgWoPM2WfChL02EVggJ8W\nzps2iHsdpIQKLjPgvhEHeC3gG0DWtF6OU57XYA6raFOVdZQKDfx7TKpsw59D\nL31M6a9CZDyO3u8ICMk7ZBTUQih7bXJ5Ml42TzotPM6cgHNqIwbMBkJNkmmz\nQJCjIEheicQ3SEbSa5765bRN0A73pdkn/B9FD5nyTyRi124ZpbV14P5/N1hc\nrO1qJogWl3nc33fLhIUNRMxnob7HXmtL66OhmH0R9e+cjRRoGdDyE+aZJEp8\nQQYpXGeB8y/zU/eqPC2fMCxWnrLPLh4Tt92nAq/+H6ChnkRu2WRMduCrU/Zb\ngSJa\r\n=sMsh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-alpha.1_1619767875992_0.9614994829132739","host":"s3://npm-registry-packages"}},"2.3.5-hotfixes-482330-ko407wg2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfixes-482330-ko407wg2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfixes-482330-ko407wg2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fc0f2a943f4deaee9d2920d77c7e0ef91e467858","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfixes-482330-ko407wg2.tgz","fileCount":309,"integrity":"sha512-GD+CXbDW7B+VCtWlb1zvtiMW0HH+CUkJ5bjEFwIckyq3NugBVVZhy0NZBOOvCo5r/VKVvzP/hzrcBrjYqeIMPQ==","signatures":[{"sig":"MEQCIHOFx/AZ8piWt/A7M7+C7/FzJNToKuPimEwaJBroAAUQAiBkebl/fGaH8OedAaqgUVRO0fM9rpogvMLkBMviJeGaig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528942,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi7P/CRA9TVsSAnZWagAApXEP/0q0B3/ct4B8AxZFtzkp\nIYozePky30CiDkJDMT4vZJ/c8NCq3jgvco50C1JMB/QNk3+nWic1b+zrkUnw\nPBXZob5xHblk/mnTyUkgtQ73N+g7tEB4LikY+pNm1BlP8+1Q420Q5bEqjfal\nOyTrS0ntHSmtB6k4mKBPcHvqL/RA8ZcPoOLNkvTG5F0n4RXX/p9Kodsa5rGa\nPm8COQqpFVuHq4D+Ln+eq5E7ElZWlcRyD0d0BhzitRGSjs5CgRGiU3QOTJZF\nJCUORqUJBKkf7yHiXXQR/pPRB+hyMk9TYxF0P/7vdRuPhSlJkZsPh5CJTWLg\nISNKXmMtqR/Q4JdedYQo7gYvj6Gk8M2eNyS5IHyYkef+O02Oa8yPMwcTjtmX\nKgT0sz8Uifqu5WBygqF+cuK+1MWZg+M7dvG9c1Z+AnOpdq+DQXcDTWFpdUei\nWvJgsHeUMJMxyJuTSnioqXXr+dQhsmRDI5WDtg+aJZNsMP9D644JHuM5RrYe\nEcT3YinTf6J8b64OIuR/srzU9bw0YFG0t0xj79EyF4rSCfP01VLuK9S1fmzV\nncO2lWBJtRmnTuwcNwmeePiPcjbAusXTm1HsGBzTYoFZ/ThqWfMCBwLeU8gN\nQGPxjhpZoVi+0cs/M8nk+LvgzRsUvxZ0PsyWau6WA2l26QspAsHLbpjZIPgR\nNxGp\r\n=Qq1X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfixes-482330-ko407wg2_1619768318579_0.8464585723280171","host":"s3://npm-registry-packages"}},"2.3.5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"545c79d5c598d378b1f453d9543ba065297affb0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5.tgz","fileCount":309,"integrity":"sha512-WjUBwxrR3V6Sgs4drifg7lUDEo+smmRfNyMu7vPNwoddeVR2ResnAys5hjKco+lPR9+hmTKNaC5xHvZfjwX3lg==","signatures":[{"sig":"MEQCIGQ5aPg/51YEse0O0/vAhIUJUs1slYZqiUuApF75kH+lAiAfhgM7qrTh8Csp7f8w87caqGjeWlJGx6+J+xW+U2uoUw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1528917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi7QqCRA9TVsSAnZWagAA/AMP/0hBqfNc2d+DAhsf8E6O\nJVgc4ieZzAetoXDeK9231b3jdwclVtFCEHux5rQOu8uydZvOKQD3fJ0PAzpV\nQsp/uj4KtcohXA/692Appw6vXixk+gpp8KDuQgvpnTUPYb4MHJODtvjfGxPn\nhXnGpYr4dkloO9OpWc1dzifkR/FJZeR3D3cioLiZ8VUrmL3X4Tw0dyypLhTW\n1hcDuoZQRqeNudaBWzNvLVldu2uivPv0YDWOSdTEijxRlNfW8YCxipbq/rH0\nxJFOEFVJ8ixb6uHRZnngcC4NHrgxxwQJsdS9udorZAtFkTjBRNBdszPs2iZD\nBEqv5sujsHIqWBekUBZ7UeA7JLyLhFFk4Xao6SL3BgVjWHkUKN+7P+T4eW5+\n6R7cokIjAwJamcd7fhy7Tg6uNv+SilAhUpMzCZUKam2OuERuc4VBmlPg6IOv\ne91C4YfEr/0cCdWCFs6NeGfftCA9ADZjbzeNwW0VU6YdYnbAqHghFHYkf+LG\nBd1Dob5pHA6l5eZ81aixAi6JOPoFqcGgEtXn3n5Ne9GVWQPvpcDzRRpftoHU\nRq72JMDq6/24Fa0KmWc8LbNcGgt5F0RpxjA60kvSwW2+CDn7YC75u4tj1IC4\nIW8LHfQa3B3HT6vrYeAC5lEjPR1rIX04VYlETYy6iWtxz0hsmCeUxjJk9VYs\nWnKP\r\n=3gU8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5_1619768362376_0.35117346001050653","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-981db3-ko9v2ztu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-981db3-ko9v2ztu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-981db3-ko9v2ztu","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cf28fd0f561cc8ff67a5cbf3f4927ebe7dfe9fc5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-981db3-ko9v2ztu.tgz","fileCount":309,"integrity":"sha512-e8Y79EU/AvBc/UOXVrc4HV2t7MONpMX5zVol80ctnpkuAxWqZhTSbwOe6w9UKTElMN+BnbQjG3b+GbYRSGoW2w==","signatures":[{"sig":"MEYCIQDVb7Mc5xF8m7WHFFSLt//764Q3DcjrLsmkbaDeFSlBFQIhAKp+BSw/bydEkTESIHOVBrrmM9XDKCgPFKUvTrayLOnP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1529799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkRt3CRA9TVsSAnZWagAAAXkP+QAMj8Q00ENhCUdk2qOQ\nODCTwJJeLHdoCPTIGFN7LxndDm0xrGMSGpBJ1Jjzl2hs+YJmcC/UNE8jHk3+\nKtqLhGEpCaS9zETjzwxl2CgH0DQfwBgjxzikuxYx4A3wz2rn2BlJULxFZ/hD\nL1dNQXtQ1RNHo3RjErjyK2ckir0MC2YhxtqpzDfJIEYZQb6IFRaklmgifpFx\n8/DpzwEH4l/YweFEHZkJa4Lf4QreihYWNG1pRATax/gHAWOvO8DnccSCVMHk\n4zdJGQZHOEHU3DtRN0kPpznAIxXz9rqSYGWtGsbS1P7FMhdCoHDJf8N6nHcq\nhYQa3l6KLawQZPDvpOzdL2btmJ8I5TWG/hqy9gNS6xA+yLvxdteoS4IcWyZ8\nF7X26wTfUnGMsoCNRCI/pdAWitdqoYIBP8tXwPRH5OsIW/VF95w9vi7wrBoa\nKwRvgZ6eSX6cH3tPyyaalil+ui92+1NMiGzpKwtyZ8VitEW55J8/mKmsaRC3\n5QMhQqL01TR8V4koj10BDS7WFlc9zm2Ad5OmqyqGmrHjbJssXNGQvrUvNU9X\ni5vvZyLISRgRKZAsOMAfXzOQFpPM9/AqaR4oSQeM9C6Quh3/ajyPdipeQj2A\n79VDRipoMfvNE684fykFcRrDpuKikDdi9OCjcLLWKcHnCl/3PJKfWYsDU9Cq\nCMKu\r\n=hDLc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-981db3-ko9v2ztu_1620122487408_0.7884827039720395","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-743ed9-ko9xrig0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-743ed9-ko9xrig0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-743ed9-ko9xrig0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"258ef0857d92812f298edc555882f8a58316bd9e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-743ed9-ko9xrig0.tgz","fileCount":309,"integrity":"sha512-QYvNXglY51XykBS/BsjdgmLodnxmrMP3h1fARnBGKuWoY7vpmrYMbJQkyEUsN0HFTfyNUX9+Iv0MHo/UsTn96A==","signatures":[{"sig":"MEQCIH6OMLnbT060P4MmRGxmunFPaipppt1d5z9tSecoMJPGAiAGgPf2kQb55pTZ85/6o/ZoQTy/x4RP1sbHIKlhpTPgBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkS0JCRA9TVsSAnZWagAACHAQAJLhyzsH2G5r9z5wH+RI\nfww/RxKQtUIB1TGrhaWRcjduVF4OKabepwKUJlzqy0m2e6WF7ueOZctKA5Ug\nBrGOI9NoSSm+HTiAYieRHzK/25inBbnyQxF/Uyh2JkmQN8wGPBDEyC5ObD/J\n3Z6GALNCF6cUVLFp9L2cMczwDsrp0sQkJrJ8zqf4pRJ9liFnp07e5GT/OGRH\negDimFNcXYuIeZUww5jfmsr3p/4EjbimcBopd6V8FOSFEOC3jnR+eVz0rzN2\n5c+iJud+uojFXHf9APHXq5a9opFWFkR3IzAwg9ZXXBCa2eHOr6Rxh6nbLHIV\nz0kJzG0dmJZXAssNGtWd4gNayexaqSdHfaeDjVvpnfq6Ue6+uaPYYceRJEkR\nsIQLGAkdUWHb9bt42NNm/DsBlbaCYYOfI84cWfD4eOIX6r4tEgYf8azxot41\nAPngzzE1JeGF8qHtyEQoZc90nFYeeD2n3tgSnHGKfEGSsEeOOfmRhCPWw5M3\nXi77foGe0NfuE/PvT3bVanZRdhNUwk4SRgQbmU/ptDvup3OGGB8MV9SVCoY0\n+q9yHNxAqPPLm00/h/A59MCfScuJmJrfYVBsiGcrceEWnUzz/rd6sjoP7hqk\nZ/Y6yaEDYPII7pErcnuII8NbI8w63VvEvxi0AMbVP2WeoWQ0Ti0u1DmS4xRt\n4uSI\r\n=fcmH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-743ed9-ko9xrig0_1620126984565_0.9054345453956678","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-fe9658-koa728a3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-fe9658-koa728a3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-fe9658-koa728a3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"af2ac1836cac6ac621450b551d3851efe89fd767","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-fe9658-koa728a3.tgz","fileCount":309,"integrity":"sha512-FjZMp16XFTgA4h4DZK71lwpyOHRZ8W8W5Y46AJ2IhlmXPDywfO2vOuJtzGEbHBtpn8QqOWVOff2j3cWZiWCqUA==","signatures":[{"sig":"MEQCIBLPPO6ppkRVbsllJqIjlXVLrOK+mke6QFQ36cux8uFeAiBdEyAMnYQzqAylmtrEgA+s4eIPoW3kyGHa221DjEQqkw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1533468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkWoJCRA9TVsSAnZWagAA6UoP/Rv/8ltKWMI4KqFcSbBE\nwDDL8LHzVnhouWuxsiktZw0NoovRfvlrF8LZjWV3PcajlHhv21YmLu6LOau5\n4zK4yr6McOAsuRYMU6cPTB8vLkOv0I3izsaO/jHFP3awtlfFONdL04EIZeVb\nejeE3Mi0CkWJdiDrLWT9hNtCSS0kn0T/OPieNSQsrgM4NJ+/raReC43Nrs4i\ne7kP0qVS336D4gKphIHlKmSVJpcOoYZuTmtVYfNdjMUHdfwigS9vwuE1GAtz\n8rzCh1x79johffGzMXK7k3dHM6FMpKmXJAhmE16V/vme0CHrnjVYDFvV84Ac\nFqg/tvoFoZwhUWi2CrPIxHaNVwwMZFzAi3Uah0VhevBPJYCkwEoz9G3hH470\nlPI3SkSL6jXAbzLOJe8xqGCl7vuwn58m2ervEZvACG0dA4YZBqPM+d/i2nPu\nuXh8E902gMRSB/Xf27AzOKLzOUYQ86sLojnrc4+qe+oD+hqRlqL703Y1z4MY\nEUeSWGj9T8KRYN6uxuemK+G2rkbE1mu9Y0Ht+yZk6ArnZO3xdDjmbrjIgqUj\nICeOi3s3SCE6/yMYzE8LAuB/GmIBcr7yJWagB/ecIzBqGsSPw7lGoA6slB4p\nUvCOAtSexaCKDp47n+XjF6CvC0UsI23RQGIDVPLGQFoXK03RwpTnqmPM2y6h\n4+LZ\r\n=5EEu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~attach_event_data_to_process_instances"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-fe9658-koa728a3_1620142600523_0.7381945413028486","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-eec2d2-kob5p0ji":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-eec2d2-kob5p0ji","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-eec2d2-kob5p0ji","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2cabc3896672675df391cb0c5e2eef835ac248cb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-eec2d2-kob5p0ji.tgz","fileCount":309,"integrity":"sha512-pKnp6v8+bTYhM0BCY5Ek9aZqQl/SHvWJgqdjvGD7JHadlUn3eu120wf139Pf7ZpL1/ZrYQd4C7UDcMDDqO46Wg==","signatures":[{"sig":"MEQCID2dPD58F7YHVgPHzs9R/Q+vyJ9fEr/LMoDTIY0U7SgLAiAEOKT/YfRCpUlhjclt+aZilJwCp5FX29ilcMB7gs/edA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1533211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkk1MCRA9TVsSAnZWagAAOSgP/0v2IfAeOUry7VJEZ75O\nPafe6l6CXSrd7kDxmtrNGM9/uUxUwKMkbC9DFIJwe+4shU8fYQXQXtcmX7pc\nu0fDbd4YKyDP6Cg4p1KK1HUAldy/5H+WYnUbC9W6lBh+BdEXraU+2Xm+ERQx\nA/xEO9txlGn6Zpea1PMHyVGO8p+fMgiaqkWWozLdb9OihDC3Bz+CjrBOTqLx\nJFzVt7UBuc2Y2OPnXXAB2rTTKvegyVTdSMYuWCASnBTyp40dGV4tjcfIq5ti\ndf0zMFvcGNtUiXvQ7BEgzVRGK0QR8nlzyQjTPqp1b/2ShLLf8g0jJNFyfJl6\nQ/hlfzuVxxvryNPUvcVo5t1TK/kkg24sII8mU3m4aUwHQA+HQsnBXcm/Zfml\nS5Qs/Y17fwY8LZ3Ep4KiVpn3d3ZXcLF0+R0EYiPOdpqlhtXBBSN+JFTGSw5v\nwQHPoYpD/VvpH5qzcBdWgI1E5bRGQ7awN9cN9U6692YfcI9jfFgCkZOCi332\nuG6GN7BOQcenb7gYN1F5695pwd8nkDn5m/WmUSAXgyhFd7LajrhvYNeROXn8\nnzxprXyaKtI6AHGm3soFO4Y8ZxG1coqr9Z+yRytYFbb58XPPP2xL1r1h/NOt\nhruWPL5zz6p2o9hvp0SYzxXmTqW3GSpdxD2QhurVCeCKvu3GOzgZwukUrlL6\nsaMC\r\n=4knQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-eec2d2-kob5p0ji_1620200779779_0.7202168010162124","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-8b18ae-kob8gvo1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-8b18ae-kob8gvo1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-8b18ae-kob8gvo1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"14bf4caaf6f674658d4527b968bfdaad0136ca37","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-8b18ae-kob8gvo1.tgz","fileCount":309,"integrity":"sha512-6/srOwCcTm6QkNBBQQacCpsFX2ILLWdihMRkEsL6xdSagG1wfMzsS5kgZiFPMZmVjq3w7XnmuJE6Yr9diaHcJw==","signatures":[{"sig":"MEYCIQCIjQ0uFIGrNv3z3dfnPXIgLlP40gobf8lDyMu5g0JaRwIhAMO7v74If/3MImLCxLzV6ZQ14Y9DyR1Sw+sCqzusZD1a","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkl+HCRA9TVsSAnZWagAASkgP/1vWZ8+N+u4MQJvfMD3n\nrhyEKaSq4g+rvAbjwj7bG+yFbGygbEsjjhjNmnPqa6kay1Dcpiy17x6T07o2\nDHqnMFAn2rG1z7NCr/rG8FQO886c0FJWtFMhfuexq2jYvIDpEEbv9GSnDbLz\n1z0ztSFmmLbu8fWyeYYAK8/jUZfHunzX5iiwqNgM2L/k1liEcbpWkP1TINdI\nlg33p0LvTRB4NJrpch70Iw6+YJZlQ6N8unWrDRs6t9pP9xHQTl7wTx3/6pAO\nAJVXF+x9ck/p7uNDPqdFYWnGXaCYi5cKVXamWFXxqsfsuKz4eQ60nfDRn+ow\nC8RaW9wn/O+evmh/96fARRHNHhhXRx7O2ufGnMfxet3a2I4N2OoGdjfjQwk5\nIgOMTkfnCZ+M2swJ5m6FrsLt06HXeTCs76P7RwLCY1fb1P10V3YYmMlX3UFo\ncbyEqcCgpZZp/ht7TzirIU0HbpXMOWXujA5JuL6J1xXx35fpk9F572kmbExZ\nBXYhVlPBYKGSJ3oFK3qoAf8+VdeD33SvPY/mYegngZhxRWSMwFYQ10fq2qXU\nnqTaBsRw64mZ+EbXcCpiCweEH/RHKeu2yI8+rfWK7FXJHbosJs5m1cFLmFoR\nyFTu+z0p6kdjUBLKCGC9X+0fBOykYHhQ18hYRhRbX4texpK0KFVx7ysFZLkt\nIvLt\r\n=c/HO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-8b18ae-kob8gvo1_1620205446540_0.914465485480227","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-3d6112-kob8m0ai":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-3d6112-kob8m0ai","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-3d6112-kob8m0ai","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"aa3c1b930a28e1545c269be597c7e2855998b013","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-3d6112-kob8m0ai.tgz","fileCount":309,"integrity":"sha512-2qpflQhHOdIMe6LOwGcNNGBxCFLTDg+blpNBy+vuGM7+8rBfqRq9xZHV6KScCjLQt7eZ0PBtsq41t+ySy6D6/w==","signatures":[{"sig":"MEUCICIDxoTdZDEjY13dCvKhSZA+yXULwqLdLAtgMvJZXdfSAiEAidVyZGOo8KsnwNqObadEPlxf++vZhW/o/7ghfLLcaTY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1533473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkmBrCRA9TVsSAnZWagAAsVwQAI9kSyndO8rcY70RuFHi\n0tDkpWstPkHNtQzOrCL1DzQ+ikfbGQpZWN/wu61SBB3DfNZkQXN6JnOikVmK\nppP2qTzykOXsdHXqKLFSojy2VkmEADO5F1XfHoyYg6abPaxD8XYXS7ExdmDG\n4ttRjp4eqSMqmjvkB6pkYH+TefhELjCLUsLfQP1MngkLifsb3NbhmBnfsksK\nOLcxIS9aqo7ZR79qAceQLJ6p5A3BR9n90BLsGNIm1Y4CxK8f7EHvdHiOqRy4\nYZ3+F+LX3cMQ9o2YxvH5tqrYlVvSU0YcMMHe5Cn/MsLfJ/epfLaWOOGndUew\nkypNG+ybEODCdOWVWxt0B/gc9nYmqVCt+hPwf4GFCUVGhoxoa1cGf9VpfxI3\nkxV9V92evKf/870PpomAcNozCIPMDv2OpiVsVTWoN7GP4YQa7OSYRDeYMuA+\n2pzaF7DXZeMXlSHWKT/J/1yPzLUVtgkp5nxNSo++ySE1ydP5au9zTVOYiwJk\nA6nTxJjyTeci2olNoGCDU8qR7wtYdp0cE/20/sdssJgEvqjwflpsSamRPVWE\nTdMdDHVIEmgbKB3P9y8uO5yuGEY6rwwmZEFEEJv+3+3/9OX+Y+Ro/RW7AxYV\nJ4H9KuuATg2tBPHEf2n/+yujiYfTfw0gPc3t3aiFASxgf3h6MbjQrBVTKz44\nNBxC\r\n=D24i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-3d6112-kob8m0ai_1620205674810_0.6740719731177627","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-f2706a-kob901jg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-f2706a-kob901jg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-f2706a-kob901jg","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1ff4c7138a6b066f7939b9d546446803a6d68a8a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-f2706a-kob901jg.tgz","fileCount":309,"integrity":"sha512-3SN6zRZ9El6c7O5+U4MyX4Mqoj+k80ICtKYTOhFYsFBuQ8mSW2easfcezuowe4CWclM2nbllT6yYqQihGum9xQ==","signatures":[{"sig":"MEUCIGMIuK3uDh4vhLl0DCu/YWzor2WcyWm5MfeLVYQbSBhjAiEAvfM8McbNfMQGv4+djzoA9+uu53wQjWwfybqfxDvhUEA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkmL9CRA9TVsSAnZWagAAqbcP/iwiGEGq0oEkotFBplXF\nuDMOsrrAsHdz3z+oyC4rea1OQN1DTAmQCjuCAKZImYhSUO64a00DRaCjQ+gh\nCa+oImmR2xLM91rhRW4zWCAXR45wG6iStH0rLQiPn6nEWEHcwLubynHzSt/S\n2TbhM8k89U2YQ9CaE/dy8Z+uRdwm3KFXkkSD0PITWfgZzXD0dTn0ppazXpZI\nHKKXD7e9BtfcKYmChxT/ynGOAj1GDDGGSfV57VJ7CsVZyFL/m8WPhOoHxNJy\nVgFy3rqXuvfTIVmfjgM9QBAEsjIm9FLerrfZ9M3e+J78b+7+QRLKjmSauBUH\nWTG71sOaXJx+NfFHXe+u+uzxePqSTb9gGYZBxDG3Eema5evRhwJ+0/2nMwt/\n+GXgEE96Eh9j8TEGjO+vYxlD7cZLSl63bdSG/TlTskvCAsn6mDpI+ZYhqLAA\nNCnUuRWOofSPfM4iKYdUTKxt736q7WVP8rSJjBtVi9OLuZEShlbwvHxRnxJD\nY0uYVkZ34Zm240hur4UOzfYxoIJm+oG0rrQjPxQI/BrT25OQvuTdqv5T3kfG\n9JWYaGRnfpo3DR4ZWUOELBVk0aOdD4E6AN6s0DKp0YE+DbV1PXo0tYfWB6kq\nTYi2keXVzcYE3kjFBOo0KS1QsCg5eoSj2474MAnrGv/0H1jxS18pjDQ/4Yfo\nSEJ1\r\n=28tS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-f2706a-kob901jg_1620206333062_0.11290316183626392","host":"s3://npm-registry-packages"}},"2.3.5-hotfixes-4ae375-kobbtkrb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfixes-4ae375-kobbtkrb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfixes-4ae375-kobbtkrb","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e44470da086421a570dfc4120fe5af420d4aac45","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfixes-4ae375-kobbtkrb.tgz","fileCount":309,"integrity":"sha512-3/JQl/Pp1QH4HaSyX/QwMByEnA8YuLrIRSLHSaDVqpXe82AV+5fnwcAxahE10z5efFDrSGJiyUKt0liA/RX5OQ==","signatures":[{"sig":"MEUCIQDnxhC+8Y+AMOyjRFHcWluCc9paAhJGM4suBcXv/4U8zAIgFhqlA6s//G9fXxHZoU1EePYjnnrGJY5JmDA9dAS/Exk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgknV+CRA9TVsSAnZWagAAp78P/2rmNlhv28yX4LjPb10C\nrmfO1b7hrjf9RFeXcW802Qv80mE+0D/kfo11T7xlF8vpT7YxL+gMkKErsAQj\nQusjCABqdOAgfrHk6/lR4L+ZXUMSRvE96JC1oFbp51eFZm/qIeb7YJ1Djg6E\nZjbCYBxcLPp8hsVhh593cP3YLBi4PMnTcZO1eriuZPUh2UQHEqkFTPfoXgrv\nd4rx0LkNsG9EQBX7BnE/WIHqzvO/Zkn4SSNjVlHCOmBztsnKWSqlz5mmgR7a\nYE8ep1dZ+dYYrUSzXFXh4gKIqSsLHLe+O2kD8SyQ8RTN8Eii+RFdmWtmuzkp\nhfyNzWk0zDtZ+C5k51fp5kVQIUvYJkAtMGTaj8CbGHYo3zXzzaXxqxCdPISp\nU2NtDSMvkJlt/nF6P/7ho8WfsmSa8Oq922HGr9nIO22TY+X7tu/u7Koro0tc\nGW7Gz9ecRxViml2APCGyS1ECrqq+HEcinDHBjJortorwhpfZMBVOGeq72IbF\nVg4J6TEzYCyCOrtvJ4Qi9w33QPQDwVA+hb/+NYx66uAmUPALN8KvxIFoCaGi\nOAOKeMQBSIkTNNoIOK8ehekrAOrrSgD4aPoLgOs8Xk+CnSp6axRnOg5FtJd/\nEv3fP8otSLgtifw+Tmtq3XMItHAYidIdLUaL8w00j+Zg/rDwS0mT3ezNy4/F\nIB+H\r\n=xiYn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfixes-4ae375-kobbtkrb_1620211069794_0.6941193577671769","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-8e9553-kobgl9s4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-8e9553-kobgl9s4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-8e9553-kobgl9s4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"04c93e1539f67d75d336276a73678740f4e6315d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-8e9553-kobgl9s4.tgz","fileCount":309,"integrity":"sha512-RGP7FIzzUmrwzu6kGCoYnd9JJ+Kmks2ueXGJTZwLKwdMPaj0DsqeJjAxFLtUqCYkVR1vQB8RgVnpZkOjJ9oV7g==","signatures":[{"sig":"MEUCIQDB8y6uLdEVcGW3tRhZJBoYadIZd429E77xw9MXJWQNmQIgOyXUpmiiGO0VRQ4dv9ytC2aDJTlCvdBx9Mpt+HQBOAQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkpTICRA9TVsSAnZWagAAqdAP/27XNWR/aAhUYzRTvJhd\n1di4jC14pnkga/0PwWk1xVKuxRcl9/Lxi0PPTkIDpLJ36M8DsdkbDT+EuYmk\nNy5tW0etgU6FLGgyNIGlrf8tcfn3br5q/p0G3OCLmcKhxjIzjbsb88ct+yNp\nQM3N3LP8IgxZuEF8NgRqwMlWPmzwjbjzYoilWyL8Dc/BKMpxstfcQsL9gnr/\niD7NKv/9cE6AtUWztYn/r0BF/UIo7isUG3jCd3Solt51MDSMEpuaK1JLxax1\nl9+3NYRm9mvVZkp5FCR9PCfK4DZtm0SdyXcQb74H/3/jtsJjs1El8zG46Bh9\nbh5hPYQJF9tQnmKYRH6Mv6iNZp5u+udPRevTZFCGV4JeP3T7O+KaXCajMfZd\ntVx2IG0BYpqhNdHcXMohM6Ufau4DJCSyBY52igxfEURcqYOC7SRcshwyzBGl\nf3ltjIWZQj6wi+Q+qbyoFz9S92yJPaJD2yq0mhemMEQWD1xS6EOh0zfCMNnk\nLgk50Iw/Cp+deAsVeocvgf+svIavfAnE5SbC+q4j7tfcWz78Nf1lUbDAOzVf\nXccwm3XnmQ8glZcxzWLhfAmQdVAeozH2IYDkV5w3gfAjsMh1IyTJ0F4+gVia\nW8vMKw77UqemCAmFFpGO6RRbzWmfo8JMFW3aUWaujFZP6wuvGoBfYD1Lnw/u\ngJyi\r\n=nV96\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_parsing_xmls"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-8e9553-kobgl9s4_1620219080148_0.641969999268089","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-f31baa-kobk4el0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-f31baa-kobk4el0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-f31baa-kobk4el0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b5fc192733aa8c362ed2f80d5a86f1afde5fed86","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-f31baa-kobk4el0.tgz","fileCount":309,"integrity":"sha512-UDLeGx3TeFeOYjQPt+YYauObNY1ZhCU+itAUqS54iJJhrNDB+1uJsQq0nfg0UbpKycNuGPJ4UD9x+/voXbBD6w==","signatures":[{"sig":"MEQCIDEyRbqXzap0aaCWTdOwdP3aJ6b39rJKxF1RD7qNBDQqAiB5ATFMMOph/Mk/uypEl2zcN5Z8XVgbVP2HijHiFadn6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1536934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkqvwCRA9TVsSAnZWagAAh08P/juLOhfyRlKKYn7uJd+E\nb8xXlkm9b85UYGtE59Go9dJXQL2ERDNc3+/4oKeJy52LCFQOisKSs6WsiRRQ\nGyb6fMDKraTz1weqJEYEnEoZQxPGuP8V7+Fo8ND5ODy0kVCCBDQ/1qz6z4el\nEL20hY3+CyR7OhuLiENbiUJ23aH44/4u4WqTuOyRb+YybnPiH4/+wNoP7iwI\nQQwT7iDoBQfb06wcDRSvY+8rrv/oGq4p063Gjh+G7oRXj47Oe2rVsnINYsFy\nRl1e8CmpMOrPQCxwuzwsgmox1VVN/FFrPsbaQquN4Vn5wPUmqVUBOUX2wOMZ\npv9IohU+KTUBb0GVJ+9lBDjdyYjGt56NLpeIQuv/FFDPAs00kXgmFl3lAXzh\nUu+NbWFaoCgvvFAz4g29jmk8ZlsZ6OZHO4jd8PqmWsZuNvnDTveAt+3rUyRd\nZGWJs7q8zoOE0zeE1AJU2p54TyFr5c6SKRtd8s3nCGj1PVwhN5Z0pntgb5NI\nuHvO7PdOBZquR3OQ80x//KIIrjPo9DY4HkCW9SCxyfe4RoKxt/LcMEXqKvZh\nEeVfPdATewQRkZcnVsJsGPha4cQgdzhSyvBFIPoTuhFGenn/VX+nPnH8wo4n\n4YkzSPC6dzl/D7z9uDIT059DWytkaELlqJkbjLa+WcNV1qn/3GX06RRKSaSg\nFS/J\r\n=mRvV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-f31baa-kobk4el0_1620225008109_0.42461264785444786","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-0276a4-koblb1gh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-0276a4-koblb1gh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-0276a4-koblb1gh","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f067bbae7fbbbb1afc79ea8c34c47edc68ce2caf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-0276a4-koblb1gh.tgz","fileCount":309,"integrity":"sha512-dX9Dr2O8wdz8k8LlZ4i9HlABmh3b2Aoqsx5q/8AtsLyHxlUUjjg6/1ndAtqG9PO6zPpBWh3hF2OS36EgOPJ3tQ==","signatures":[{"sig":"MEYCIQD6rqK48qs4NbrIr8VK9Jd8HrWdz+j5uUtIXU3l3wJzTwIhANY+GXBLTqxoj5pNUijtGFuwAVO4bzJxtRS4OIsjHjQa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1536952,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkrO4CRA9TVsSAnZWagAAKuYQAIN+w9529jGKYQZZoPVY\nVmSHiebyr6WO7j/E+qd/Fj0/NkcjEBsd6Qu/4OdNt4B5cSJP4vS1ZpXITCQp\nDWBDUc8SHzLjwxJ9v8DrRznLj3wgD+0567K2mjCRpdvRHniM0K99nc52ok7o\nBNQBx8WkhthLu9Qhm2c6mFM9EqOvJUkHTP1Q/9SPmysaNIktEVeM49yLmuzt\n7lM4muxmqtbp3EDQ5kaTeYv654hxhiOG3e65eoKJgys9BSi7OdB3W2gBRpS8\nN5brqW5JWxI/U4WA+VtlWf1puNpw/ozG/DL6VZz3abw6PluS5JRHpEf4awMu\nwIG5Zsvp8tbE2KOHsIQ4wNIMgzdvdYg0BfCHKipD69waYY+Vy0sMryfyMbAU\nrgC273oZua2SlZPIfgGNEszABHVvcxl3nxlRvKbb3xZ7QmSScIz4I7bOD+5q\nn0PDcdmOeKw3Q7S2mVF9rWnqI2DbEYIec1Z/mxgf8I063FzSrpu0tW0hO1Rb\nMZfyzEny4eIfKvFooEBtija5hqcDzSl1C573d2uGNpqloH/d8lWT2qlnnE/t\n/YJelZKC3da55j9JbVPp1nDwWKiKP7e8ZMME8/EnHsMEpaVS6bujjq7g8JkN\nsNS6fbTFodcPFKzEetFKC1QLE8w5UMvFuVkNTAlUXJmr7kgUv3wcgw2g4Rhx\nOh/P\r\n=cZoi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-0276a4-koblb1gh_1620227000084_0.41213150793808784","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-98cbb3-kobldrg9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-98cbb3-kobldrg9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-98cbb3-kobldrg9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"23d3c56889852e0c8726974c36f29c8226572999","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-98cbb3-kobldrg9.tgz","fileCount":309,"integrity":"sha512-AlZKd76S4+w6Bq72fi+RW28xYNPUTvOhFskBuXTYRednoA/dSXl4UlIJks7Fb8eG5oCe+OPrgbZ2Ra6MVlUQQg==","signatures":[{"sig":"MEUCIQD9JL/mXPi5gdgBFULIJsbK5tPEOXz3mxWqsM+ibdbh3wIgEcVEFZ7DuJ7Q4tfOYUF4dMU8okoGaV7DjlW/Ak9t3kE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1536952,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkrQ4CRA9TVsSAnZWagAAj8oP/jESQBe3F6R3KKeXvLT1\nMfvYjkt1SKC17SlctyAbiONTjH0Tz7kxD0Lp+wwRypX0XcE3XQsk+PXL4yp1\nbvE1AY4SDVBKJPCEm7s9SULTrtwohhpmj33pb8lmRxG847Ldllcq45/iIOmN\nzoADdWu9rPDc8/YhVEBMeIkf/mltLsCtr6/Ihsz04yWfzTnLn7dagp3gRd2R\nGQZWeMKYN+UuhDpIpatGIGMLCRZJJRwy6tx7BvGv4PbW7hx4aEvemXBZb3lo\nYf59oCTX7lMLJ7kRO0VWmSLs7/QA9n+jb+231xe7BEbuYAI8+S2zC4tlr6tg\nvuFfmSMxTXSvitxI1zFxYWkPnsvwRtFAjFpI+wAOdImUAIB2eW6V+JZ2+z6A\nJ39Nrvb/vPIbZWFtG5shpHNjZ011Wr72Uo4+wLAUFj95nTGN69iFbeRF9RL0\nWAUPNFHhSV+XJz3Or0ihYepX5YsLqEZJnSh4K9gqz/0+R00dtendhCWa6Q+S\n4UOEMEnqCvxU9MrZlZD6Jj6kiFCoFInAbSmy5M5YbT5JAFTKFWOrsMpLSRNq\ntP6LWtYHxZnpG4JcC9Z4BGDywdHVDREVVHtYJZb5itfbrp2uBgp7Kw/5SOKt\nkpsal3R6/6QBelg/NCJjGlq+yjr6Jo4992V6nXdWG5ylCF6VUpHfv6CoCvor\n/ysq\r\n=v9Rd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-98cbb3-kobldrg9_1620227128313_0.7528530951997492","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-29a3cb-kobofyy1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-29a3cb-kobofyy1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-29a3cb-kobofyy1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"62a8a2062e8ff356082680bb4bb1d9ea6a8d6c1e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-29a3cb-kobofyy1.tgz","fileCount":309,"integrity":"sha512-1EHAQrDtfrHHP8GD+/1+felE+5ca20SCStlvyltjN1fo/BjwwPw+sZZkT2BANWeV92AndXaAPK8AokZ4NdugDA==","signatures":[{"sig":"MEUCIQDOQEgkm14AMw9whN4hw1fp5T1Bl8xI8HHxQOaJiMQ0UQIgNXDSjB/3xnBDBG1CaX8Z6mY6LY1h/qq3aJ+jVd3IdfI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkshNCRA9TVsSAnZWagAARtEP/iR2t3Bt3CgmoCcKbyg9\nLeL7+QMdHbiaJbIxYOS4KGeX6Qbk9qgqZ8zyrMf7CbF8vwWdXM+84oXTjJiQ\neNPeeTE0DQ7MDbpFnO3nqF5YzHC0wrhS2dhSVb+ejhZ5a9Uj0pUgDxDri7p+\nJH9gPMLAWzchpBF8SAlNyAbm4K0rVLMAFUIiabYqXPP0zLncuyOFgZYdokoa\nM7OuTMHIQ0SvwB3tqHKnjf8ZMT2G50EdC9eZmWCFCnHm2OOxsjUKm5b7KOE9\nmIAOkXPlxUX0SHQTXLkmHl2x2kdPHxIh8Hwsbf32Ww9QEqPc+9DdyfqkrX7j\njXfcJDrG3uVgfkbDLdzXEb/7PWME+7874+qjv2xyh8lCuPdaDW8gwba/I55n\nq/47k3wjS9NFf7RWHBOuNKHOBB2XfyklQQiuwxuawdejhkwSvdSVGqXLFacg\nb3JW7WWTgtEBDymahh+0QSIydHcO4lM9wc+3BP3Kd0AldvFlp+zJXW4qTy/J\n6ag8d6UthSUdOJrTwAbLL2l3aKeiMUUQ7FAQuF7eLqUB7opSnIuSsNv65HkG\nITeI/ehObpbrDlz1LodFRXNoUZwRQ1PpsSAST5X497tS5j2SpR1stHU6Wmrj\nmMhBg/Z9W7nTyyzuvQB3c/S0iNqiIuBnVQV8UZ1afqlbmLm9vlU6urfiwRot\nGOlj\r\n=j1N0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfix~fix_parsing_xmls","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_parsing_xmls"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-29a3cb-kobofyy1_1620232268949_0.8379127392768748","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-e29ce0-koclp8sa":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-e29ce0-koclp8sa","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-e29ce0-koclp8sa","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b45b29ca0443544c1ff9de85165c3da346ea40d1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-e29ce0-koclp8sa.tgz","fileCount":309,"integrity":"sha512-/sH6iMhheTwpMI1uk8rCFmryHkmHEJ8OFEWrrY6vvfVH39OMF2wGdtNSit2m8ClyfZGUPISURA//jdBcaQd42g==","signatures":[{"sig":"MEUCIQDqiJHxtQj6CkrnWQhJiFYp8kCeuLt6RyA3XHo30v53ugIgDj/son3/JBPvr8KlOg0QeJjA3S4KWhLDXi0y1++Qmz8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1537017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk6KECRA9TVsSAnZWagAAOHgP/i4aMhsDLlX7iPNyxIAu\n5AN2PeHTnJA/0UWnOnjI5Cee3tJFvWXXHQIBF4JWUgZ8tLLVILmi91bxtISz\n5itaJZOZfY80mU+rCAzpkOJ6H/U9H0FAi7nLEoOWaCocqZCa9KdavP8AfB85\n8m9nfZMgDzvAUV0FAvMWQhgGLikg5qqUBeAky3EpdHAZQKrM/+yfP8RTysra\nuVDDDpdFWt1+p945kTY8mGXLgrh0Qc1qiybtpO02BhxWGpK1WfAoNRXaco7B\nJZXgoqrAvBjT2W5Y08Iqyd4CRzYbA1yAzT8VslsIdNgBXS5B59RfyXBMh7Mt\nl7rhK7xTvQJP/9qHuA4eaZvjs1ckXOdP1WWQnCaNfe0KMUB0NZRcXVLBeRVQ\nZx4NJBlYisHSThHB2lbcKcFDzFQuxhq8UJvOaenxaxCU63nm/CYulk+StwWd\nZQKzsKIppELnRMtYjBJvoPr+OABZxToUqy9E98BEEFTgvxRZQRoxV+UtPvUn\nb5g8bDMpZs6KdYf8Gu6N6WFXYL3GbAu2ib8JJSmJRhKEatPRz9fehBSJOKbP\nvadwdz+Vtm0YO5oP+IyylXSRQ7raQh70qN2HU7CLaGdC3oCtLG3sZ2EMdUBP\nUoZ+mi6B+9UpaiV+AtnB1FDiOLabSO9Aw2Wl2FcuboWz3ZFh3MMPUtrCCtyH\nzuZU\r\n=4R2I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-e29ce0-koclp8sa_1620288131486_0.9292595086151076","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-ee3573-kocmq1xt":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-ee3573-kocmq1xt","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-ee3573-kocmq1xt","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e7bb73c2ae3cb7fb82fb82ad04a1de8b381db63f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-ee3573-kocmq1xt.tgz","fileCount":309,"integrity":"sha512-BgBg3n57amA8ZssdLSXZrsSMNoeX2C910c3wP6rVSAwSua0Ixh70a9WJN6eqNAwm5lKKdI5VV7AbjrnKX5DH9Q==","signatures":[{"sig":"MEYCIQDtOTmsQ+10iwpFKZDNI+JVam9SxUUE9RFM1O4ZQKt7UQIhAOrNzmjS2XmJXuhNjKxj5lzjSZat2zeRgdmcDBeQLtzY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1537006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk6k2CRA9TVsSAnZWagAAeNsP/2aenxydDPqm45POulgI\nveqxnIV9cIUaEbzLFBUECL7+lPQi11QXZ5Y4poyJA0znntVKWwkXDzKvhCPR\nA5ks1yVvhIb+pFKhMrc0rMkcB0DpjjXcnKsSG5thMQ6/x+IyU+uohkSitUY1\n/T/oeuOSA8RxGGAigDENqrkHchUrGLPuc84z1BuQCYlEZZ80OwbXyDdPSQ3c\nGfwSVm5RgQH8DZoXwpDbW9ds0z4UjkVNr1UiGyQZuAt2Jtg2TDc7BjRY8os6\nN7VXrHW3NKxayqnR4thwp6KTMCZdsH+GX8WA5yKlfcMfxYy3XrZhiIHETPuT\n2THiB+9F5Mhr7EL7+A8tDUBm2SXlxE4/50htL0smfvw/YacXYWwmJP9O54f5\nGUcQIdqO8kyuUAgBlVLn7tFnPSRFZLkYLJvbhnwpSvHPntmgy4Cs5Jl2Wcsj\nz36s9d5NCc6NA6sIs3lFiasjRdWKad8ikde2t8PKKbRWQ1Zo2JayBYwuEqP2\nUYN+SA/ZOBmFEaGugboMWFCLLAWTPPcxeNUiEFB5z9ZBQbHMD4+cUeRj4iFR\nYr7Q++6KW76U41OP8o4KWp5zFHCNLpjND0ZhGDQkUrOc8lZS7GBvl98+0EWJ\nrG6uyup6GZE49CHp2WdeOZBiOUy6JrG4X6xpN9wJYPFbbEUUGyMP9IWbQXIy\n95y3\r\n=V15u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-ee3573-kocmq1xt_1620289846241_0.3288400449698705","host":"s3://npm-registry-packages"}},"2.3.5-hotfixes-9500e0-kocn7uly":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfixes-9500e0-kocn7uly","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfixes-9500e0-kocn7uly","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2d0243ccd55e8319d30ae4dad0c4331af7e7e1ad","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfixes-9500e0-kocn7uly.tgz","fileCount":309,"integrity":"sha512-G3a+LNaIR9jP80s4FBgVztZTIkZC5H+tA/B71xE5IH74xJXNgr8fouPbrx3DdtbfrJRBMND4hm2uVg6ZbYsjgg==","signatures":[{"sig":"MEUCIF0at71N5WQdwbsulep+bNCHAkjKQztyWMcAuh6rggHBAiEA/YAxsONm7erI/EgjzdE2P+/+2XVjp12L1k/ILyBz1xU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk6x1CRA9TVsSAnZWagAAecAP/jlCLxtbH8EoU0kIAwuB\nbXmOTWKprOjRowFsRjMd/L08VPUzzfVa8MydR9a/KfupDJKJdQKE3jKej1mV\nN9IF9k6TlF8b+sNiDJzkTBRBiP8tLmiFwpDFWNeafGr7LT8N3i4QGSzVCf8m\nmGOXlg1TBbS/5zByFO0ko/iGBfv2lcx9VDkjaxoJNbFyRCD9UCkgh1f8lp/Q\nJ+F6EOG3aV8vD0WuXOCSwJGYpyyhk7IFGVzvnNIsHGsNURO6lohOEh6P8aSA\ngzu9voPe1HkhW2bwO73D+VuCkeYQDahJpGhdIdRuVbJG5Mm7Ga0lyGwiAkOA\ngD+oKOVT7OpZd6sbrzZcObMEGaRlSK7WRThVovtL1p1/ZK9TUrXcY/891lh4\nZmWqCI/ecLMzAVnfFcZf3jiKnjS44ebMx45x16xuSN59ySGywkUqeWj8azCj\nh88oTKMN95yo94jZHRPfBdnnDA1ePAU5A1uXOpZyxhL6MYC9RS0iK2xfiOiK\nAKvSXXoIHyBgSiEcSdPn4nMA+8SgiJ8NQLtLLPKz6Q6ZtXvVmUwyaIpjdoRO\n/6bmjqR0A8dliKKkLYpJCXQD/VKxiIBrajHl93d+ZSUtmqKtS5vzq0PPyoa4\nlu5NCB1+LvgEYjRttEWWMuM8SCuDtACSDIFhk+lpHA6m6HUOfL07N0hheR8A\n+tdm\r\n=C3Tr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfixes-9500e0-kocn7uly_1620290676708_0.3457476739650651","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-07a4ae-kocnofjc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-07a4ae-kocnofjc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-07a4ae-kocnofjc","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a51d7a8aebd9d97da0e23261d57f33d9c752edc1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-07a4ae-kocnofjc.tgz","fileCount":309,"integrity":"sha512-9eTBqWxU2BqQpS9FNkJAM4lpjbtE1SHoOYkG2rU4LmD2FYZ6+jBA21tfVMkB1bM0lOMvQkIYPnPvddfyYqOTVw==","signatures":[{"sig":"MEUCIQD4ZObCtqh2o2Bj5EibJiMK7UI/FOsxac4vwxw2yqrLyQIgX7wVabA+0OUZNIvdO7kcewv0SHG2DEOWZUpzm4pgk1s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk694CRA9TVsSAnZWagAAFxoP/1S68TV6aKvPE6veNQyv\nTeoD+FAIs578qjcTItJWt9tr4Ek91lO3QMQ1gUlaZ1MBtfowLMr22Ex1DT52\n3k64qKrl26Uu56XSs0r70KnyQfUV/7MlHRatzCPf1JQbyacxgeH+RkrrB5Na\n5oAuQpdTilQO2Sm66FEAVI06F3wMg8qkmgWvc1k/nXWV9+NFdOkpC7+9Xmyw\nkMSoWTXB3wjEpueYdkUVfpQQqTGrJ39lWtFyMEKfnMdu886oNSofc5cpVzFN\nF+y76rBe5o9f36SEU7XDIQ/y+0Hbcmh8cwPHL1La9QqYZlvQhCHNwUT2BTSi\nsBOt/iMZguFXXHUQKys/Fp8APE8vLdlwbwXcceRbiyICw1m0tZrR8Zxhuiav\nYwidH3beFitA/h2x0BlOyA0OwLobRSXXP7jpKVA4CwYYve8MfFLkFeFXDeg4\nKMQCHPMv+tVROMEiB4biBLEIxG4Kb/PTF3FumQvN7+xKkxmrW01EpWBtwOjx\nQFbUckWGYM/USAWMVCjrfjVOtgzWF6MTESiD+dY87HGzhwr1k5H0E58cUAzZ\nVdwkICbtfiZc8+gvrAAlw/bquL2chWLGnRhah//7saYp7bn1Q2jHfx3088BB\nAd+s5jShSlKyKNMbiwj+rH7XpAC4OyMkXQ6UmB3sDRo+txNUDqfM+/nXCsUz\ngZ5U\r\n=su7g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfix~fix_parsing_xmls","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_parsing_xmls"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-07a4ae-kocnofjc_1620291448206_0.9948904767530846","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-f6c9a6-kocs4wps":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-f6c9a6-kocs4wps","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-f6c9a6-kocs4wps","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2985d0794c218473d45d3f23b2bde5b41cf2fa6f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-f6c9a6-kocs4wps.tgz","fileCount":309,"integrity":"sha512-Tku2BG468wOTMOC2Uaq2gJD3nZQFQxYWTL9MxRAAOILrCq8HcXG9p5/LJjfFXfP89znxLd4Sbt9LjzNpyxuReA==","signatures":[{"sig":"MEUCIGmbbyGnuwlXf1q17Sx+2EKsXDm6TIeLYXTRH4mDnAe7AiEAvo3EBjJrdyrkgm1wyTpez2IdkwEWUQdUbNq9vcEA/Sg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544636,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk8y3CRA9TVsSAnZWagAA0cQP/RcKCrZGghmAdoIhHdLj\naA1wFoIxljB8hvpjZ9buBqSfpReUHYHRk2MdpUmyzbMxuHgh3C+RvEmy+nvu\n3gEUfgsQ+pA9yWMXCj/UQit8YFDE+1fo6Ss31ZK0RBEEHpXO8Gj3FJQMo8lf\nz9FL/jPP3afwg5YAtmFHazEDQ58PNclclKRQI2Xy3moAUKL/kunqcnRUd9ju\njxvyJk/q7FWXSK4kBrOJ2/Bg2C1slYDmebZ9czcdSFV5MMUkb9c7MTfQBGtz\nmiSmM8fR5w8hoVUhcXlGubvN/qkQR/AZiyx7xHFEuT1XVIA5OfzPA8fygcjg\nu/vV/dRn3P5bQW5ZMwowKIE65/6MrABRMtn/pD5zen9TcU5Eo78xLnRsx1ZX\n9wjnTA5iAxkrizUQ5m/BJ+yL2EEvVcfHTMNv6FKGudvf7fN//R8FVAdVbHFl\nCXFBPb1YtTvYfuahCU20Au2og/dYOkukQJ50LEq1Iq5UEYQgchapqy4IyhGo\nkNOa7Ze5k9JvIvA12Kv6NgRgsTQQfpbQUtNmph9f3r0Ewtd545R7nNhynlRw\nTKjPD/crqLvjKIHFAj7f9j3ikM17XdE1+JdYNNuid6GQDF42jfFAlf23fs4F\nkQNqPbsVG/LKjfVAG3h69D/C3mUjGODAwQfvs6XjbGaa2/SGkTDB0+h6UObJ\n5dNU\r\n=SvEF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~attach_event_data_to_process_instances"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-f6c9a6-kocs4wps_1620298934519_0.990828720837255","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-ebbc72-kocv50y9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-ebbc72-kocv50y9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-ebbc72-kocv50y9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"59387ed5ffaae162eeeed554294b5df1a80e7111","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-ebbc72-kocv50y9.tgz","fileCount":309,"integrity":"sha512-JKsTWS4DQcSwE8Z+L1/ajF7G2lkKRFyqzOfAwTklX9ZbcueHtapo9z9JOePXCjZ63CWSbfXJzurS05rLrBIVIQ==","signatures":[{"sig":"MEQCIAbEjkX7Wu7T1p3LsXTaYidIXMO9ei0jN3Vvqo4KCgMcAiA/XRmufaqa9sflPTf9TXbbcBie+19dvtuS4I5rzYY5GA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540297,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk+BtCRA9TVsSAnZWagAA7t8QAI7I/akgoyFlF4LL5oHB\nLtY9zCWeS73/P74U8wk9PsXxBpfgA2H4mo9/DWvcL2Rn47ZjWUj64J2PIVli\nGeB9NdCs+2q1oS1INo4LmoittSlA8QXW146q/iNZ4WbWJ02x0H0gtRa0FXAc\no0n+PeW3rozVoIxcv6yGqZeJRRq233q9/bi2ipHDhf2jA44DEhR9acbC/oLK\nwYxPOmwfcX84kZ6fdxauRru0jp7ka5mmP4GAHZYy1VAJaV6GVPaeDRtVIoDp\n2oV/InpEB7gULAhBfvyOh8GCw/Nsw2Rv3E/btuBnrC3fHR/ZEkeo+TZwhDbD\nhbRMbSwKsYbGaz0eZU8TpyOW8X3N25nEpYR3RoagAamZ8O04GhtwelJcL4ER\nlmp+HUbAabImAmrEjPUz8t1YqR7j9B0nfSTL6+j6DrTw40fO65cjS4+yf6he\nDsyG/iCUCeHbUiV1baBlFtVnnJF7qdwca9CBGfp6p802dwUJwULB3bU5vkxQ\n5kQ6/M5z8i1NkB1VY91IHkE6S4L8879uFUYcdc87wdmhwYK5rNTZ7LKt/vi2\nsb/nZcB5NvJsChfQP2ZsLk1HrhZ8XQ73+W2qP1cU1pdpTuxHSB1HE1Igxecp\nwpMbUBc9re0HRf6F48cKoUcpUvrdA9gT9eAI7vlKWdsWM8tmvQcvF5kYQTPn\nBTkV\r\n=kOEQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.3","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-ebbc72-kocv50y9_1620303980762_0.6536438149425929","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-269da2-kocy5ap5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-269da2-kocy5ap5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-269da2-kocy5ap5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2f7dd4e5206eeaa2ca02ba1814fcc02ceab2e425","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-269da2-kocy5ap5.tgz","fileCount":309,"integrity":"sha512-rs3g5EcddfFbhub/BNOYb8xjJO0BzeyvYvsHhCHuZAkLlzqkF83QTk8zfM2+JvZ6z3nGIzD90zhpG5cjoOz+lw==","signatures":[{"sig":"MEYCIQC8/9rIZ79oHUZcx56A1PaBNUhjlZGINBqIeUpmI948sAIhAKnA/b6Lxoi1YVSrOJkLzlKI9sAcoAXNXGrbjmQtg3Fd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk/QpCRA9TVsSAnZWagAA/tYP/0MNUQ13MB4Fh7ZrlIo1\ne5af8zJGEaEro5Cqt23Gg2Oo8x/sTB0MXkjxsiResCLPKGnM02YgEr3lGqr7\nxFRjT2RJnI6lMmJKlTChvXxuH0C1Q8A431+RfBE/sl5wnmqlhA+dEZXRQQmD\neJGHDJ9MA47doAgh3oHSbQxcqW/k7mRma6yw0UF+wOPjzdnIOeYlZbZU5xTn\nTNZIwhY0CzYahj71O3MWq+2Ra52EDotZeRAsLiPgLslcAR+wbY3J4MwIAMo8\nAmnUNNVApcYewi6QzeBJxV7EkT+PzyS+VdUu3/oF66DqCtg2V/4Om8HzzUzn\nDiRmhZZgbBgjZCwQa7QM0k5wR5VQSzCN9G7tSZr1vGo5pdDshAK2+AaGPqaF\nEZSZ6Q6787/62nTduMJPOkP3UJwy7JYQS6N0VFQkEljUufdJ+N2jq38tO4/I\nCqcKvNU+w6KgArO82Bp5tTDLjkqlSGpjSNadw5V/atYTbtlSsVh/25G/tTa1\nKVCWr47yAk9qb46gTy3d4RvsXTQ7GbEu3N8RAJyo+kgw1bVYAiIe6+PVIIT6\nb87rd9WhZRHVRyQdUHbZ602q8hWaIB5mwgE1jwcBVnfVYXMU+e+FlGoLBkOS\nkDmNPiuFmExQQJpb9OjCqwylr8RkiyIP5eAFGaC1p87Owdy1aJmJhkuFHWLS\ncSbU\r\n=kkV+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-269da2-kocy5ap5_1620309033100_0.6195558431954282","host":"s3://npm-registry-packages"}},"2.3.5-hotfixes-fe6343-koczx13s":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfixes-fe6343-koczx13s","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfixes-fe6343-koczx13s","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"77af3f56df4fbd5a6765988d44f95b88cc0965c4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfixes-fe6343-koczx13s.tgz","fileCount":309,"integrity":"sha512-b3ngzKud+IsvjmWUhNMwtzaAvNUSKQWFyI6eFOsjiBEmG/UPO2kZspkuc1AH+6UQv0gkFb7rPqZClShyLbHmFA==","signatures":[{"sig":"MEQCIBKCFJflOXuoL+p6krHBTiO7h2o6Q+k0KBKnMrfIDTvWAiAMn++21XqLs+9oeJaK1ZEfr9BRXCez2hUgDf++csidDw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk//MCRA9TVsSAnZWagAAFCQQAI6yobzvJ7DbYOVTuulv\n1sIiGU3pgHc4A+SzdJcdLmQp43fGl6xZYV+APEgnPfTmVNQ7AJsuZpzejzZK\n6zI0xe5vintoaqd2szPPgNY4tfRTv0a/wD0gr3ugrGx86XsLt7GUn3AVTHp8\nCbZW4THg1BNqk9ZFnGXUlLW41gjUjnecYD+LB78696LKqgIsdmuJSZsJYz15\n0qxWsF/5BugCVNwWnzcDTtaJm/cS/BfBXTETsGeyk+dCetbnkTpZJN1r2zj2\nUy2CL/u3kkKLkn9zUtbgyDHjwi3VoPbxBW9MthzjY14ntRMd2XOWyrUNuqUj\njkcrWXC6+y8abdBxPNKXCh7LsbF5FkeXWLZl/wwdN1Gj1wBUFKLDg2Mb17PZ\nUWBALggzr0uqbcgzvwQElOroSGEZ28clh/aOWbfKaizriLy7dzlii7Z5Myiz\n0fEP4ieqTLFX5bg0WlsKiFIV1b2UIVtBxEnz6+rfydFB3VwbbJHbTZgy4qGT\n9JG9BbkkPh20zzQquVlCCUZIT7GbkMygnA19uEHnfNZGfWnj2ccAg1Yv6peJ\new+SBOeb0Q5ERNo3qBi+9rRt9B0JxCmPo3OD6CJDZSC1xup8Zhmzg0piH+s/\n1ks1B7UsNl/UU8z1Fij8qYZM/9rFaDawKBanxx8qLaq0kXbo0WIp9bCTW0Nc\nqG+f\r\n=nlxQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfixes-fe6343-koczx13s_1620312012208_0.8909261429902564","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-668cb8-kod33so1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-668cb8-kod33so1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-668cb8-kod33so1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5513536bad58f5d4213c42ad007d16a56e097c4f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-668cb8-kod33so1.tgz","fileCount":309,"integrity":"sha512-mRpvqpN1GjOPnafPEs83C9jSgs20vOS/d1QFgtNGN4SdhXqm/4mu2tPb8li39t+Qd5qZSTWkOqIHkicEvu1EmA==","signatures":[{"sig":"MEYCIQCYkmTQX+EwtMj1ANo5JVaMNb+MGrBHmQiHFAxHlvgilQIhAIIg2zSRB+cQn5d9t4/j1EUif+3H/5M/dHPIz6eOalL9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1544638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglBS2CRA9TVsSAnZWagAAX/UP/00Dj9ag8tlM18AOhwOB\nZih0nAMPpfgJiOAh8vdKjbPDHvwi93ZdYLxNcGMYJ/eEFKLD9yStUDmJ5KRz\nGWfvP3IJ6ginkv+gf5SgC8HF5/FYgWYrP1mEXc7hC0hQQRwC2dYw6nReXLpe\nBzg8lwe3TlaINHGMpWBq23h8zNE+Vmm58RM5KKfuKNvADESoGqNSZnHUWUtD\nYW/zikOD5it8Vs1thYi6fRL6wiFuUVwtoDAlp6YJuAkVSLme0qPgHEuZthlY\nJwZOwUXCqJwdGbvZ+GVhLaTpbnE9VeuNpvYQcfe3gqxOup2UY+r5LQEK2ffq\n+/0w4ZJbbyw/fKmYu0l9y76klj8IMuYCk9HJZI1qDNNYe+ctssAyTSGLXJjM\nHHZAO/e3mBuwbkdt+uZr8PZ7zy9tLJYoOBZbtHooaUh55REVB/SRm8c5SOyE\n+Fw9HHkHLMhhYMJ6QWoOAkZ9EM9sRZLw/kL/HygVOcSBdHnf9bppaYJfOhgA\nJuVzeOHw7mslTSCJ2E2izWoVe440u9S7aa08YUD9A1XgGcnGnSliszCPa1DL\nIgOifBliQJVoPhdtdSGXSLXcVgtTMOe8N8Kg/Fvtmw49Mfzc5DaLg1lU1Ook\n8Hhi9Inmkuoar+yjcbL2xjsQqMb0WMWPGt+yf/qOe1TGUAdRcGd7EU8gYMij\nMPAi\r\n=esDh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~attach_event_data_to_process_instances"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-668cb8-kod33so1_1620317366157_0.5055652882233765","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-944355-kod3w4qj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-944355-kod3w4qj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-944355-kod3w4qj","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"da1a1a50881e7bf04efc724e1ca70cbdcb5203e6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-944355-kod3w4qj.tgz","fileCount":309,"integrity":"sha512-XTHf2NupxZfryy+fG6CHoHtF8C/xss4HFeZVY+Q2raHh5NwMJhqdhPVHYagBZo2nLCBXB11lVJrJ1j6WzHhprA==","signatures":[{"sig":"MEQCIDwv+1R0OivjreWFWmwewrjMenTuj7YvEY07iTcoIl2fAiBvgtQiOXnBCzb+6oberwYE9lSeB7VSsI93uHOuwQp5TQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540299,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglBndCRA9TVsSAnZWagAA6bUP/0K/JdAQE2dglo04iBes\nTVGxfwBuoq4O+aDvtLBrxpnlQujIq6K/hklDKgkjWNppAiJ48SoQom/viZuM\noWaLM0OaF8OmYRLRR5QDQV+Op7MXvJ6nrXA34DhI2b+5bCdaepN7WHtVnRAm\n11JJ3JtYHf3B95NVzdHFBxtQpzha/sygxJyfBu492M65eOJwCazYplTBISpe\nM2TuuZWlP4iKqJuHBfAgpekwaKnG30hG17g7q53ddy45U6nuZ3Weihq4UHSF\ng41fvWvr+Feuzmb7BbA8srLtMpmxsRZh5bytbeDyzQDZgod5G02bGw6F6ZlB\nmWijTJkwkLOmtkmfYFRZMJeiZy3IJbfR1BHCMi+3IQjjx74rt1JfRbOi9mln\n++KcHIJwHoI/AjJadt5ljIpNEVjdi54jNQE23PG28TENrXernz1E3lu9aQA9\npWy5VPxQGYS3ow0EFqeTQuGwHLfUDABw4lPXrQClg0gIEBVSCWLcwf7MYbOT\n1pl7HdVY7MqWRy5BYydXXf5Y/E5ZPRn7qE9C8s6vfZ8R+f37yNIUGhUtgIRw\n7SB7dzJ4duNE0bBbY3GpTlJ97hMIBb7A+nIsxX5lui3XePFd4YlNokvws2xd\n2f0cEnnw1GM70U9LNBTTEjBMC2NTYw0CvevT5k96skmXqsWJKylz33ynhQvb\noBNA\r\n=iGb0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-944355-kod3w4qj_1620318685073_0.5102311985745658","host":"s3://npm-registry-packages"}},"2.3.5-hotfixes-cf6478-kod55uhf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfixes-cf6478-kod55uhf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfixes-cf6478-kod55uhf","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"80ca44134c19c892e1425ecaee67972d5a72c664","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfixes-cf6478-kod55uhf.tgz","fileCount":309,"integrity":"sha512-7itPvpf1kRAneaE5V0Ycjzl5ouQDvM8BMq+vSSBU/z3sqhJj29tZl4uFWP0jtjSeBIOz2m7z9+r0p4j7mlEpuA==","signatures":[{"sig":"MEUCIHe4ilVKO0VrQoJd5Ef+csz4hztik3JLCN/lLe1Md9M8AiEAmgEuBu0LqrFvJFGelW1thEey/yizcg+4qe5+iXUhgik=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540301,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglCIzCRA9TVsSAnZWagAAUmAP/jAskEZyYw0ONAQQ3uJY\nbC6EHY1UpWL6JHXXC5TrRxYVwrAjmI+mkh1fqUeGN9YC1Spc+8yV/c8RL3kc\nYuGtE5rcnLVbB0S+VzRRZI/LV4b4i3R+Xz7i8k3pNL76ecDal4yOKHRAGU4l\n4dSyycZlXQKW0OQSPOfAGtzaLKWCh0WbD6ztlTkRaGZPHu5+LKQ1kHABRIF3\n4L28PDA0xYmG2nwd8IFjeyE2XoSOPq+f2y2v+Q4YPJQYhd45+KJcsPP3nRrw\ntbcPOU4rciE7yvtlN0jZGyfsVsniDiNWkLoRSq6brYgHNEv5I/hKTz/zpxkF\nNTnVIX2uO20zdHvCN8um4c2etQLdGUfslyWsE82YOuo11Mt7IWRqeftrqz27\nAwOJ+WsPk1RmhnHGdidiHGUiLQZ+fA7s1muAetf5W/AwsQJHVLr30QvBzWXg\nQQBAeabhxXNPBDy7c20RTP4yRRnv/zGlf8W7HDqawmEd4aTegagKT2FCXZsu\nXZl/AUkRe2d2HLN0+lEa6ckTBWsAN5T9uO40Wy3e/AT4q3NLA9nmD6EoWD5i\nMXTmAsGlNOwAt67R+RsK9wEqXbCf2yU0Hj31dsCnmsvTsjcM3NBrZVzIYbu6\nE679A2mXgj2DOLVnuuWCvC8BVaPQY3ODErrMH67d3SgDv2u8sfO2bSbOyXTf\nruNC\r\n=8AWW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfixes-cf6478-kod55uhf_1620320818856_0.6298785239159856","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-6c3004-koe060o5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-6c3004-koe060o5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-6c3004-koe060o5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"daf033a0b3e7de7643b5a10aded68b82f9d393e0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-6c3004-koe060o5.tgz","fileCount":309,"integrity":"sha512-K1ZUzY/MBfu7OsTS5WtXy0/+ANaZgCt940wUvAcLCMeKmWCFPAH9Tz2El41HQMw6Benc3v65ktCJiqZYS6HueA==","signatures":[{"sig":"MEUCIQCequhe+S3tTxthoYgL7lv/8S3iwlwx7vzqD1EJW44zigIgbIBiE/bzavNdyQRBKkD8wxRuG1gcxdq9OnCq5EnzcNc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglO2eCRA9TVsSAnZWagAAAXAP/iyN5RVkeNyZuNZNBqBI\nJ1tpeoWPK0dswXCd3huhPh4GQ3T9RqZ85AaBP2GA4yvuMZwQeqAz/Rtsdrf9\n9fZc2cTfMl4kQvRsV9+YwdQ3CykqDhqoIYgC8xLKoiZlCC9MYQHdwIHPCQ63\n4iwrbPuUYft4rioSWJtF7/VRzGBKJSeW3hJF5rbpy8dloK0ReXc8xSNH0+SP\nDeR5HSkmOixi7Tdc9AjH7fk1Q3iP1fj1cmy3dZFPqrxYSf5t0ZT/APYYVY2i\nLLyr3hdyTUfy53irRqizZqgKMYSG/yEjTrZkV7WuSQzVe93AGpNz0RCmOjQi\nTt1fAuNAzKvG1zvb+uRzQAPRva3fukfRTz+atdAiSgVDY0LfjtTyDG8AyvzS\nPGsAH1fJMHz/1QNZqOKrPKGDwMGtA7gHDAEmsSbLHs5KTnYZSAwVM9V4DJW4\nrFSoVibu2tnNvEz+3DgRDi0GFEFnCqMMC2vihqCF7T3BjxC+dwiVugqVA6hE\nhW+RSDAtZw5EcvBldTzJtbkX8MXhQiS95FGmyIQATz62dVjJDne8ZQ6mZm3n\nw8ut2sL4uvUWJHCuf4j2bDCdzrzfjypyHnwSnDalGjCHOlfeRa4sTJdyYGVT\npovDh/6TR1uCbWKmQegA+MURLfq6qSBdxw2tvfxVJyeyRMqAZ0ncRv4jBFgi\naGFd\r\n=RwDz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-6c3004-koe060o5_1620372894230_0.019625872509011266","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-6c3004-koe0a34u":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-6c3004-koe0a34u","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-6c3004-koe0a34u","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"12a20696a9961514d37814b81322ed73d8d279cc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-6c3004-koe0a34u.tgz","fileCount":309,"integrity":"sha512-76/a8EfDh9uE/CfyeKZ57vF+3CJh2HbCcY+HNkTcJwYFk/H8Q7evOFBApoBJdXPYfUxnvsEF83l5IzSBsLqMkw==","signatures":[{"sig":"MEUCIEuK92Tbc6q7TR0WVD5sGIX7GdM26nOMMq0od9rY8jmMAiEAr/xD3+ikQS7qHv+GwSwnu29fGNUPuT+p0UTlBcOVpQA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglO5eCRA9TVsSAnZWagAAhFgP/iHHES9Vb4ZKqPFBfcdG\nriN90wvW7D+9YlooDn4cIz8F05TCStpN0hxA+sXQGh9Bzv7ItNggUPffHMXo\nzMBY1u1fsFb20DDqXNCD9eUg/1eCX/cOUIgsT+++gqZW3v/v54JzLgQCuLsX\nGPTLjGy8P9dVT/V2pgwzriWGqImKyxomeEDheLk/LkhFMNq8MQoMV6Z7g3GT\nYveYICxrvKIEQvPef6FJUrEXg0n6cFAbtxw/qs3jSJwPr0tDRQL4QO2TPUiu\nZsfYolAlKr6fuxD8QusQEPC2PqL4kXu775ubwWQuQl9UMJgWjqDoiWVxh4hC\n3cPMPNfOQmyFD4PhtJUIY/9yQ7NfOFHGjuG21LaDa3Tlq7x6809SzX7rIu3O\nRIl9COTZ+O1qDW7mM4cEN6VkGloUXMkMM45dvqpfXNwl3+ve5c9A2K/LOd6Q\nbWyZ/yAxpAmqcjxhoh5kR9XfSAX6gp4L/JBl6Btp0QbqpznRym2ZcSJTe/5A\nzbiyjb38d3SJ62+6mAEZf1ivsDpb6M/DKy4XhYDLqeDbjCZb0KmfcrxAwp8z\nEq0ouq4HieZ2HccA18iHpMs66yKnB4GotbMKfABQwAB1BARzl5eewGPTt4WD\nBj/K8+5JhewPrkI+mbsqA9FVk1V4qH7QJgdmE9/AjQ5ICo7g1W5oMjv2IPn6\nBEFk\r\n=XMSL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-6c3004-koe0a34u_1620373085679_0.9708891837915699","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-23b9eb-koe3dhbo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-23b9eb-koe3dhbo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-23b9eb-koe3dhbo","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7d5987dab72ff03e3ce29ff55ffcc69709e08784","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-23b9eb-koe3dhbo.tgz","fileCount":309,"integrity":"sha512-jRKg/dwEEqxof79MwdMQDoB+vIGyv97GD0EMlSe5quXE3WS0tdX5Zuz0i15gRi4SOcJ/lSfPH3AUv4vv4xrAzQ==","signatures":[{"sig":"MEUCIGbpLKs//TUN5ZcQxRogLIOBkluIAP3GfuU7teJGIeHzAiEAi7aA29hzKYoDp5lWaWwKQXQVriJ65MrUUdQ80a8piIA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglQKoCRA9TVsSAnZWagAAfd8P/1YKf1TIfH4ihw5xBAmm\nKCVJhz+ik43P/UILbG5lbQcHgYCJqIE6ElZ7PtZAQX1JXR9E5edDy7iOagRU\nDTVB++UdAZD126LbokG9s8dgi8OhVFGVBdXST8o5XtgfRcvc3HlKSx/EHU1h\nywlzUgu/86vNY4sI5ZIc1820HLmUhlNTISJg3XC32xYxNfTIqFiHqxxGYZbY\nBTOzTvluhcdyY6Z8vdtaklLH430LWce3/Cl0AYsWBJHWLTmb/en1l+rxt9ht\n95i4xnlArr16foJTWf7OmvNIYxRGibDIrwFxP5YWD97NcUsrG8Q5pOvi4oDZ\nsZ5wMiotmPVNhtSRNPTsjZBW4a5aDu3mx9VZuCx3IydivfKfiak9G27KHe04\nNDlH5uPcD+9dI3kg1S++gvzWBCSQ5hVPQk+sDCvyJBj9oAnAdLiWT/7PtVZz\nzJdsAuUR6VNUDMr0l3Hnyj5zv+cTjBATTyk9a4G5cfbRRMdja6pmXCH8+6tZ\nKaZUaW/kfD9J7sjufJNoranDPdECGa5cXG4m2oZYuedCLPgOHtxUyA8tpjHH\n6AoHJgSLDw44IcCfIfaNonBZMHrVkjT1MS+O/99bVYgxWvpEtMuTicnrzcU0\nlMxGeReshAx5th7grBZpBcFX0Y8WFnV+Ywg132zc7Gn1N/XF3fcvs+7yLFQ1\ngxcf\r\n=y/ZG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~attach_event_data_to_process_instances"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-23b9eb-koe3dhbo_1620378280350_0.5027624312157135","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-1890a8-koe42o55":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-1890a8-koe42o55","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-1890a8-koe42o55","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"17c94dbcad72ddf2eb693e66e46b189ddba00396","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-1890a8-koe42o55.tgz","fileCount":309,"integrity":"sha512-gjrjWCm1CFHHx8VwfvGUQcR2JuzvSjr8QvUuFFwjdjBqx+M0W3boD3ORjLmSoCiUFk5dt9IdHARQKF54mBzHcA==","signatures":[{"sig":"MEYCIQCFMH3EEkuyAbNxrv3UY1EffXmSluZtA51uoSBo0Jr9cwIhAPL/zq04CocMZebthkh6INCQU4wbzEU8z5snxzUa5GNY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1541745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglQc9CRA9TVsSAnZWagAAw+gP/3F82S6NLFjZ17DNKDWV\nUd6RGJwaguYR8fHEreFxtgSCud/nkJrtdqTlojjSiXtRpMEd47Ixzkg2gKS6\n9oPlh4dYNIPMGgoNcAtrQ0V6d+2INxjUGvuxrKI3DfST7OBGMrO5q/SEyRtG\njPuBdV8/4WT4CTQ02gkcv+1f4/P14EBgdGSqTLUU2ilW1nZEBBrhEuROAcPj\nJwucuYjcXueYF/FZCPPfn6fTGBuoWWxPCp4rv3l+L6iFQdDugqhHGeWEIP7O\neaSeCOimEX+E0bqOInya4cm6T1dW0EQMBJ5RP12VuC1RB1G2O4FMx/6ipzsB\n7DqE9z/oB8+s2FicOKBAq4A4pJz2EpppWPmPRbsTs0wvtxcNfVDdeQP9YZP4\nFT7kh5BgPXcGRhvWcHR4xQgC5QS8yfzTpLtNvMqL3u6xo6zuPxkF9WHYuiTH\naTbfqLVzfG9lCwTu7Ri5+KEg93VE0z7ulz/c7ALUmXB9/yEJZwfoio1OEq18\nLSBaTQ7mIaPKG64vmy2s+2XoqSp2Cdd8QPuQnLdC3sRn2krN9VNhkqLUguXd\nBVLRA7unXUYDO9qAd+SjAQGnKAaelwKWYAXXnyBuc5oBY5Iya+7BjpNehSSH\nuzAPNp2C8EgJpWs9v6Z2OKtiCR8Y8WG4kIiPKy7KTeEoH/BbYCSPSb/j04XW\nNUSD\r\n=YXbV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-1890a8-koe42o55_1620379453218_0.7160547406928086","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-28d47c-koejgm3p":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-28d47c-koejgm3p","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-28d47c-koejgm3p","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"51fa4943fca12a988a2f17c3714fee15cae17222","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-28d47c-koejgm3p.tgz","fileCount":309,"integrity":"sha512-T5Q7M3BecUJmrm9QakBRAP+R94MbQ3eip0ATJ+9WJQLJkV/Yx9c1FVwVKSe5HgtjzJvyKx9cAu2b0svRxBPdGw==","signatures":[{"sig":"MEYCIQDqUimKvS6YP4BCxETs9MHGyzQB8BW5Ie8aCd1AmMMC8AIhANJZR7dlCsltuLpWaqNuQOAuxkN+nw5nYl6HqZy8NF8E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglWwvCRA9TVsSAnZWagAAewoP/27vbFCLSALYKExCZJUx\ni5WPcOhhC6s+BxY4KqySMGDwUPp4r5UG+m4XQkNXHzCoUsbVHr9GzucyKdnX\nPlhQju3NJgOL8bEXRXssJie5uXUJGZhwlD8Ck7AGsH6mIQ7CXgmqu/NDQ37b\n0GixM9eT0oOH2OtzGBYfC/FkI9fa7Pz7H8ghIJM0PJbapqTq1EAWb0AJJL4+\nz2niaMIMPVgYehtGSdo4fOZFnp0c3GGNuCOw8e6N3Cj38zgKmWxcyAsaHns6\nGpMZeZZ49C4bGptnalRIBfAzZrXJu118dCVM0lyL1Nq05dxDYOW4HgpyenjA\naYnmy6ngUYNWFEzlkdwmsfojQ/XETWvTAXugEeqHDgN7p5PZdOoh1j7a7qvn\nhJ0x3etyN4BJh7fXLydkxLIHH3JhjlLsKgOOyQabtXGpQDPFArMtFRnDjKW2\nh0g6Gb01GKgcwWMicv3QC44rCncHb88crtrwW0GeGjsxyYFslIo7hPXxjW6N\nsZFne5i+6VlxgpiAl5HgDgZPafwDBw3sAF0mLSQGygYGMcoJM9WYTXTXm+vH\nujGUER9ILwIaMz6KeHwaZ4bn5Ik+smkFNo2MrvfMMSMk8So4M2wWcSVi7Ulf\n41UHHwoZ8Wp2KqOgnC/UtRo+w2k8n5V0XtgxN2E0WNG4RC0wTlswz4NY0atu\nikr6\r\n=BNuz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-28d47c-koejgm3p_1620405295226_0.7520306917110586","host":"s3://npm-registry-packages"}},"2.3.5-hotfixes-a8c42a-koek2vq5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfixes-a8c42a-koek2vq5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfixes-a8c42a-koek2vq5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b10aec518002b45629f8f57f3360d9f678d63864","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfixes-a8c42a-koek2vq5.tgz","fileCount":309,"integrity":"sha512-ZB+2EqEma8AVNr9/vjvkIyaR96xh1yjclMx9yzn6HfjVFF/8nML/DvoSJqWy8oi6NpKbe3SLoX2O+JzPdUJDjw==","signatures":[{"sig":"MEQCIFXQdgh43gFGXrYMhH0dOCa6lz/Ufd4qzK29PFwCEDcYAiAImnm+y7PHB34oQQ4ox70zSInYXAk2eAufV2GIPdEEyg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglXBFCRA9TVsSAnZWagAA9ZIP/3zJuErNgNwL9/Zf6tQR\n6Ne0ONbH5h6/qboCYx+c6o/nwUaJ7TJDUxZCWzuE0KkfV2j5axSGLFKQt7t5\nxMnr0T7qsbRnSFcqEpn8LvBadn+WS1ggY9MoPk7qOFBYBf+IZafa1VRvgRkU\nOFRoAutkGHsX3kkYrtm3osHWRGQnwpz9uUurqlCtZx367jNx0stITaaHOCYw\nvxKbN6PC46lBzMN3OcLWeSZnCUzsZy43s72N8BGtLhkeNyquQaXwSu62F3gk\ncsyYQQUoFt7+90UFk9GP1cS0PO9WUDzH4Wqe8pRHFTO/lQZbko9QKFWy7A/u\ncZmqlFwe5pIK/bfYpUXtn8vYg0JRIRih4pivKfajd5AYT5VxB5n9AcKQS4z0\nDVgvm3G5kf3A48187Y1Eu0mflilPaBjIU/Fdm8QI786/FuTj5igScVx5NfWI\nGJ05RqFpNOvn6Sdqajl12czbrtjosHfmgzaCMS1BhwknEhVgsNYq3AhZqrVC\nmisecYo8KfJEFazRPxLMFp8dyJRvMrRrILKitNzsq/aZlswpfw4GDjYnCBBG\njo38X3le6AvfpyFBWVh2Db0quR392j42+z7kyKxfR9GGjyJCVlu/AyfiG1/V\nCRqMmIm5WAEPDDzh4mLVLMa8yGHWG3UmF7qi++kh1gXbT9YeTIE8KDcRrLXT\nUA7q\r\n=gFZD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfixes-a8c42a-koek2vq5_1620406340704_0.2772672939799632","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-6cbdb9-koic3gwq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-6cbdb9-koic3gwq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-6cbdb9-koic3gwq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9330ea592dc219b4034ab0f25533678ff1aa918e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-6cbdb9-koic3gwq.tgz","fileCount":309,"integrity":"sha512-SlaW+QRcIravhQabbQz5ju+LARdUPgvHWPvfBYzqYYCN1mee7ZFl/GzoMHjuE1/kWu4fZK/rvofN2NJIV/Pp3g==","signatures":[{"sig":"MEUCIQCvnXA3IzGWlBY6IbQ5tJ5WwZiZJ+wJ1NoTEVxjDlf4LgIgHkEZpbOUkPzX0hYIbA9YxS8U0D5CtLZGXqiXdWX9Bd4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1540299,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmOypCRA9TVsSAnZWagAA+fwP/2I3BFYj08XavY3vNsgS\nSbl4aF0c4MPsbzr4NdhcDYmUJQBB+qzGajQoUv/FkUClU4P5xVlMZZ6VC4cO\nVtVRV96FUU8UlWJdeKfhwvjeKyUl1n9PNA0YBreyQ/X44swL6afaBUsqT/qH\n8+zXW4vfWdmWii8O8bgV36r5jprxbyohD1AcwDhjHz1yN3KNaJ8avctPBitP\nZoVfLjurIe31ECOmghaRqgI62MDbf6t1V7MONtXItbSLFV3NkUUcG7ZXpDua\neZuKv9axyqnl1YB/vtVvB+EtAXrw76Dpcm8k3LnRGyS8Le/HnE9c8EEQPghF\neNELNulSp1Ib9dzCBuJ7o83zy86KgvfzJ0sBiE5EG+pZCURXHg7vz4e0X7+k\nHOxSM4K6oHPanxNJdvVPFBgFTuJdq8QBSy6Dw9L3nI7ck9KTgbqNIAPMCNYC\n5V4ST4M6qWfiWOGPmGs9c5EdMOhxsYDEB3YcmIL8yko3LN730eqstHhCkc/f\nqutUekdPvaAZsNKtrExx1UfazubPU3dF7kJcGjwpGTOE9VvxU8JCZeiJxJYB\nNMTmsnS1PQ42tA1O2oFnRrtR0DrBKcT0rrO1glWshusD8UQQ2JSEVTB8KRjd\nim9UvMk3GkREwrHtSr32Puz/YTmP1DrMFx3+8iw0wlBknM8lRUupp51iNHMZ\njkbo\r\n=1x87\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-6cbdb9-koic3gwq_1620634793234_0.681721655907586","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-7dacc8-koicd2ys":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-7dacc8-koicd2ys","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-7dacc8-koicd2ys","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"42f93273e294827a86e16b05f93152cd57c528e1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-7dacc8-koicd2ys.tgz","fileCount":309,"integrity":"sha512-Hzt5moBPvqj1YKPhaUrpqv4wQisiP9rO1hC4sb62QJYXCmciKIUJoYeKxCw/o8MPGlIT1MqzJWlmT7xL+KuKMw==","signatures":[{"sig":"MEYCIQCQJ0cDV3gaalYSncVXd4l9zoLmFMHZTEmtGAeVEY/5fAIhAJfQuyYdb3efMa2kheNThxKx8YtM1lalkXPHR4dhLwHq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmO5lCRA9TVsSAnZWagAA2oQQAIco0/tzTc2wsyO6YHgs\nkXwGIX97oilO3MlhX/UUUh5K78pSttarwPL1G5LYkaP4ets30rhQrhjXKu5Y\nzEuoxPLb4FZRBvOLdIX1+8WdYOoP9jSsx/AZpDVhSPUpVc9E3XBZYO74eKw8\nbGlrFMR34fg1IEQwvTp8dJv9GN2tegFzpHOm42EWoPv7npl38kGxCE0Dbudm\nct26mJA0WldY4DbKRUlN+HKJAZea8ul7zwAB7LeliS0Ceu43Xn8v9NRjV/eT\n9gVw7XiJa6uWkcdUnOuuKIR99ysXOkSgNA9NNx31e3hWfERq0ww4IYeKyiUc\nbsP1679BW4CdsB4lP4LdYR3dnO3DOVa1WSoqKHLau1/7oih1L00PhSwMkiYS\nbuVFHVbSHxNaAWW0Uz6bHKBKtNABcH7fDpw0edK590S4f63JIY4wiHJOUAxW\nXX9z/uSeSouFmj3IJNJKrxS9Z4/zwHkwRy7hVz2gcQnJBCVPdg8X5qi+XSEh\n0H03LhbTo68MCd/JtfpdinvPwNZf4ORA/M/KroFMHeBciUz+CvFlBjAyIFz3\nFm71x46skq5WmM4F4GFC0z1QWTxYSeR/WABxsETkZjtIAUlfGBrqlkbZciLB\nfqor+Duw8mfr9LlvT3Ivz5Xd8NNf4oKp9rCSZQTppg3JVQrSKm0q9JPYYU9W\nZoxF\r\n=pAt1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-7dacc8-koicd2ys_1620635236632_0.7076166145032343","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-cfbeff-koidiuuo":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-cfbeff-koidiuuo","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-cfbeff-koidiuuo","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"20e189395d2e9ced327415835964dacb7602908d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-cfbeff-koidiuuo.tgz","fileCount":309,"integrity":"sha512-t/wgRicCxKj9OxhjPjKvWVNuZ8SLi5SX+twKEhmk4+e4y8WrhdEMrhTdbtvLRJEqcoqOsBTseQRuWoY6eplFoA==","signatures":[{"sig":"MEYCIQDqtOwsEap4lYtIpvNE8ETP9qT0MSH1XankRdWuTdOr8gIhALqzVyf0jfwWBzJjh2RDcefQBn4A0vS8VGIXfQ9ryqG9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmPYGCRA9TVsSAnZWagAAXRQP/jXV8G/21R+E6wOZp52U\n5GuPfXI4uE3juKSaBZ3XZgIbvKTuSYHKvrK0+GBTy81bdV9VfiapI4iTE2d+\njopy5Liswahc/CaZ2kSgMJiZ7dmfdERYIsgvjy4dfAqiWn5QWx4HdouZD7u/\nsSsFQuRFMecFFLnSCZfYuFrAuRZ2PIH9xfVWeEH7a44uRcrZ3rDasPQVKTcM\nAOoZPDFOfAOUI/ThxwRGdXXYxvKmgfMC7RvnzVtnCAwYCUCW5KDNTt3o7iVX\nKRGUh6xXf9wil315BWtxbU6DV4seiQNKJ42/2WrvYVP23SpU5Hqh4cyjuUb6\nNI5GFYM2GjKXd35nf8OcPsLL7jGW41YOQK5274Zpby59N+nJ2m5rxZokqOJr\n2duLidYykx98hVT+HEFXcWBpmfCoLOCnOScg9c+vGVml+Kd2C904kjLbFOG0\nf9d5rbNFEpYsrQTgTbymDioLSEpmrkNexEuJvCy7y80h1hY9mt+lrOhp4vDd\noX3OsGeur0Zck56O2hHZvuAY4y5tDT9Yny9Fgg6ZqAwT5uKEs0IKlu0Z3bCX\ntIvtjb3TaLbDKk5hvn7orrKoMx5rNOgPp6xwD3YOwWgrYLF/UQ1MhPRph19x\n9XUzs3eHHywW2kr+OvujocjGg7rRXK2N//VehvKhGbeduZSe6bEBXzXk5rzD\n8ZBB\r\n=LsX6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-cfbeff-koidiuuo_1620637189675_0.6553597235099824","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-b24fbd-koif8jz1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-b24fbd-koif8jz1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-b24fbd-koif8jz1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a2bcb22c38a9712e9f540d486d7172b0d4b3d389","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-b24fbd-koif8jz1.tgz","fileCount":309,"integrity":"sha512-YJYW3K2nyarZBL5CsY43zBiDBejDybhNYWN/RBRF2CPfrQH+e7XxhDC2S0VCpeRyypGxHdgnxHMey4MvY+sxWA==","signatures":[{"sig":"MEUCIAOZR5dsDnNKfu0Sri1ZoMSCVm+hAMrjEXRH8xexjuk0AiEAyZSk4+L5Q8okNAzIIgvhjhmhk/8zPa+hYeP+azzco5A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmQFICRA9TVsSAnZWagAAhk0P/jCtupJwgDWwftwDASJO\nr3vU6SqaOvxYpegzvXTP8qop0/O/7UsLy8U6OH9t3ww18Ov6OOuP/PE7O8iW\njG98Fvh/RwW8YaXwbZj0o7CbXc/mhBbRPIGfcxzheQu3oGmisuDMXYLdLhtb\ntTF11KIU10zWo4AyL8e+gCoZmRpG1MnTlaJpMSZH29jtIWh1JUsufWWKHWYJ\nSGi09RT3yx0BpHLk6aOY6MW+cbzWN9JJKZQuB3OibeED41DRpUj6yXE3oVuB\n2kJw2M1AWRqqNgK4dRYNTEoRtDOfQDpacMQIBCXM19j/vt84jL6KhhZehrGB\nf6MeoheoQByC24n4swzu3mPOMZXDQRZHAsTHssn4eTG+PFyiXkOT4iQalce5\n68bBBu8/SqvwCZJ2I6L0OpSp7/cgRlmgflhAB6TFnBQHmOCWU9xzFa1VrHMK\nlDaniSp/0B+GjYuZzlnq9iB/iRC/9Kum9QO1WN/LBYEw9rcKNIS0805/cmRP\nphBCoP1BvubsxzXWGRcExqOelcn/eX5TQGcOXzi5PbYGbVuFt5UdpK2sMQWB\nTQJy9VVWqAUbw0g0qQgBooyQQmFWeFRNI+N29EkJm1Qnc1wyg3lsoXRab3/7\nnjCHXvHBHY8vf5kmUkGtmaEEzNFUTCSxm48Z0h/+gFrVfvdaiyF94B3SqCVB\nT8c+\r\n=suYe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-b24fbd-koif8jz1_1620640071908_0.7177278978259043","host":"s3://npm-registry-packages"}},"2.3.5-hotfixes-848218-koifys24":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfixes-848218-koifys24","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfixes-848218-koifys24","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"da0584d697b235b2516a7326537ac0ef23f1fea3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfixes-848218-koifys24.tgz","fileCount":309,"integrity":"sha512-MRVly/IjOjr2lnppl0BVvAMPLXYuE7NzjOvBjA1UOuyhQxjxniTNx+ZO+GAJEYMuypr4DrcXi6gJXsYE7k25CA==","signatures":[{"sig":"MEUCIGnqhwM5xzTbvek9+CeXX23rA48mFto3N5R5sGPZDWhmAiEA6ducXhb17zFSmVZErXbrje1CVz0nPtJZtsVqAQqSjBA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmQYPCRA9TVsSAnZWagAAtnUP/ictKE9PJw0fA2UuPl//\nJjoJRPhNHdv6Pam5ta/jnmoqNKPDQmfvtEijmv3wWp57dEkCfHkhSdviISpU\nphuegJExf5kXtH/MYjfh/Qh3tNsjgLiKUbnLqedE1xDi6EqoRTULPcB24aEw\nhbmW8zma2W2DrBfKHvJElwTdY7flStpjvRCgNtw8hWlT9RK4x/uMgYUYpUqm\ndK1B9S4cQtzf55O7x3MmgYEhMWc3WoKLlw1SbU6IGoFGCN/s3TiYyd0BBZts\nNcECBQ87nqB0iTiJcRCCD24DLkE5mjSLKjmKS6NeC8WP9jbfCEecMeS9rEw2\nevpGpzmOv0u8AjSf6oTzMtOb/tIQvnzneqYFeyeLdOrgSfD/I+PbhmKFWxyx\n6MTknFJp7fVALBdvmZ2aNP1q5jgmIrV6T40ODgxo3vKPO5Pp2ZUBfuR0sHXc\nM98g3cJczQ1NKRHLxAb5VIhbKm5enYQd7ZViq4w5NXiHTq2gORVIjfpAJfcw\nTiD3dA6/9XUH5pcsSWf370dTtp/xlLlZh3/yFyzlEjWpnirtxwc2+TFuK+gt\n2cRAgyiFdgvgSFRwvkqOwDvtWpM4K4lws0YIjDuYpXxwYfcIVK5+Z3/oB23J\nhPu+dSmPn6fRu3PAAn1foxP0dTKWsg8/swbteVhScQguk9IrdUoLi77BkMlI\n5FI6\r\n=ZOCI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfixes-848218-koifys24_1620641294880_0.23688288792940426","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-b7d285-koigwquq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-b7d285-koigwquq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-b7d285-koigwquq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ce2f61a01fff300a27722397d4f53b4c3b7bf288","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-b7d285-koigwquq.tgz","fileCount":309,"integrity":"sha512-C19He1+9VhknWId00DZ8YNpKthY2r5ptND0AUDMoTkjqW+5jDzOvOcIYGGCvgryKn7vkTtctxiu7h3nZ+En+bw==","signatures":[{"sig":"MEQCIDYq9nPaDDAIafijPpW/PYccBsR1/blNo6A3xkhptP/aAiA2susVNOCo8FI+yO1nXn7y9nu0hTyxd4u4EHUQZY4RYg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1546348,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmQw9CRA9TVsSAnZWagAAY6UP/jKGf+4hCkmbsFXLGJUq\n/c1Z+eNxV6WoYWpAuMh33mMa5MFO7V0R6NQWENMWTx6XWLeAZ71jo2K3e7eR\nTb05LIBJsextAhFCkm479fzn0CrxSmYAl3aFgKl7ROzi7l7oQ9iRdQYR+tpl\n5TtHBV29yZzeZGGUxEdTzvBxiOR/K6vCoHqsRz1D3Hb/fTPQN9XS5MywcR2f\ng4O/OolZBw6MJ0uY/N58nybG4sfkTFg3Wqd3mA0wXk7Z0hZFiWnAGobUaIsW\nboVyzCNWGOX1nitJWUhLpsoA/6eb6YzPreiWpSSbZufxBb9QdojlabnbH8KE\n9yTOybX7DK7bx67wRv5E82Rx/ngJHg7JFqFa5mWrEywsc0CYNwT+BfOuRPf5\ny+vMgmaAyvDLMtrcY08lST92nwuDSUUQpMlylLWB6IPS4yidfHG9TkIMCzAA\n2X3UbzzRaK/DZJ/+OPyaGjYORpkYdcufi04/0JA6BfpsFyduzJwJqgWSrWIm\nU9bBVFjYcKpZa8vAeuCvqfXHFHM/UT++1UVGWfcHVpR1NDZpDe1sGCkqM8Og\nOQUYiTFY7hB8lfkTExgGTO2ArZzYaQR+mGjnkizk/BjlS6iike6G55upOlZu\nByVOYzYb68PdOQ75EISFekean6AkXUpuxh3FDRgXvt4IOq4X69XtZmcECn/A\nOBXH\r\n=bU+6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-b7d285-koigwquq_1620642877147_0.47399701247697834","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-a36570-koigy3b1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-a36570-koigy3b1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-a36570-koigy3b1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dc76134c4f0bf1c6e0710e5a5bd44ea46d250e02","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-a36570-koigy3b1.tgz","fileCount":309,"integrity":"sha512-9JHWlhtiq7SVKt9JUufEvA05JEC6eHPKe0fUsh/gBlPRNTuLoXMMG3d5gjdufMb7zHnwOetmhOYAzRxiRhu3fw==","signatures":[{"sig":"MEQCICKlZ8iFpXGrM2xzd4F341Wv/RIZ0VqwYosTeY8gSxfEAiAT+zty6ENfaHGZCJOE8kKriPsoSjoruspWfW8fq9SNkA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1546348,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmQx9CRA9TVsSAnZWagAACI0P/1Qnxja/Chu9fkXZwEIx\n7TdnNOpMFEQryZm9dL+EtOOPwIrSTk4y428MESb0QeiCrf0C4vMH49DR/h72\nklkJOSzvsAwcM0moYr5UqR5GZIOmF7LnUyxn5OV6AyHuJpkEmqg9ORFJT27r\neIFba4pu84PoPLf5pC50+7lx5hrFPvu2h0nr+G8lDLS/fWcl0l+b+6o8ax1D\nerxGS/9YuO/Kr6S+psAtv1tR3tdH4E1A+2UFkIv57KfYtSpM24PfpBpqJN96\n8mRAeAKMnGi9zmwgbNuzTuPpA4JnTA7QbNqZu4+9J/uT8gUJ3ATp2ceSbkRn\nmYa29aItSQiJaPERIWg6eEIzXLXx1d4u3v1M8pv/l/ORrLS3hRDxRYhN53+C\nxOYurN6/h6G/dfVUNqP0yy0rK4juqRzyx3Snn1KZLi3Y27mdmCqm8ECMlQmg\nda+IpLan8ueNfnGS8q1kZFyTblR0nTGkICyOfcH5K6A3771IIXzQwdBBmDzK\n4Q5mv0ePRS/JPC2rV4ymumDTiImmWI7uUxOZeR538GIaqho0aYiGHeCGkfd+\n4+NySI5eImUzh6VJxWDLUanmBzGrzAOGXh/5GrSLvIuxGP9e04wQV2B5MBKk\nq63o6uq6BVImJZGvRbOd8uSDOvA6lLdaZlXXDUF0TJGS2+e/rSyX1h/H7DO+\nuQbx\r\n=QCCD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-a36570-koigy3b1_1620642940456_0.42906797106885475","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-3e07e1-koiiw3l8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-3e07e1-koiiw3l8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-3e07e1-koiiw3l8","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"20fe80c246996fb0d7363c154d1ca9740f489a86","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-3e07e1-koiiw3l8.tgz","fileCount":309,"integrity":"sha512-v5Pfn+nAuaz3XcmB5fgt3RyLIzXMRjmz0Sl1LiJ6ksuk7usyrfP5/chAgb9fN9ShxIkOOggQ2CZFsQIYBR7ODw==","signatures":[{"sig":"MEYCIQCtTt5Va6XZV5eJ4zmZDNVNJu3c+YYxutDD3OR6f/KNcwIhAJYZ6PifZOoWEJ+7HrJa2xRUdWbiu2FAolC5cqRDR8AA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1546768,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmRk7CRA9TVsSAnZWagAACa0P/2vuPHEdlOsRPaNZe/6n\nLOLT78SUB0pWCo9t3NyrHW0mGvndbGoItR9JiB6+cTIy5oRRRJn50jfHm26D\nEv7wn5di23CHq5o1KK5aX0DvdpowKoDnPsiFl/Num64QAE8myx/EX0bYxqhn\n8GqRn6SfK4GWg77kLKQJbMH5JhgvS5XhfGfj3q2Woqwdqzf6gPUC5q+ZYrG0\nn4vIoT8l5+dDHNMdn+yPs3mksRNitR8YYc0TTa3h80LatMo2L+EEdJa6Qety\nex01OrWKXwjpgr7TYSvwjHRvOcq+EFctdc+gU1Nj1Kcq+c92WkR7stWKNd3q\nd/jjV0HNW8KyK4FnkDoh1FYiZxuGy0pZroJHQhftBirq/n/mjnxtDLRa2s7u\n7bgbBf2xeLhtv19lGw/H3kVAiVRbHL/ZEQH3PoXnNUmFZSunTPEtoJdnu8lb\n9yN+c3cJ2V4Ux9/0vAhI/8XtStqgwtgbAexNRcYvwZjD9vzv1Td6qwOHApno\nRqzRZHWo7M3vG3MuLvoTHSPFPmGaIHAFRaY+0KT5h/SbWQj/y1S1Nu7xFWW2\n6VZsEM856gGY9fO75wJ1SD/yu0Z8Nm9PFoV0GYUnFhrjrKjKYISY1TroR0V2\ncGZm/yKOKnr7deKbtwEVKtqzsmWk/0yfG1Gcn+SjyA+ifosfPyS8s4oBT/Be\nlBBX\r\n=BYuN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-3e07e1-koiiw3l8_1620646203061_0.15999191062172335","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-54e6db-koij4907":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-54e6db-koij4907","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-54e6db-koij4907","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"894e0602daf2205b365613414028d00467ec5061","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-54e6db-koij4907.tgz","fileCount":309,"integrity":"sha512-iKnCPu1AVm3VhlGnxg4uaCKai3yPJclW+fM+oKcZ6fzcOah/qvkvpWrU0D1u6EwzYTXPSnoJw38QNZ7ZDFK74w==","signatures":[{"sig":"MEUCIDvBhw2fp4+w8JJ5qFAXo2UICyRgj9Q2LRlD7r4d0iCTAiEAxfogPNZJfZZBDz9nFugoxeQYVPxcRQH8Cqpylt05e1o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmRq2CRA9TVsSAnZWagAAXv0P/1tPHelcI1sn6W5kOvdx\nwfKlcsjn7MymeXrKao2Xxhgto46aPAZeEHOi4o3I5VdlSId3A86Wu5jeb/35\nYWYSc112+3y36i1/lXKBTz9hPDOvtjxErkquHX8WoCmGA6NUgdFG/tKXS0Xf\nBeQYfuThN/AZqBd12UTsnQJXYm5qa8fn6sNYNJm3zfQVFDJU6wXKpGSYLc9x\ndgmysQX5PAGH1y3N0FilG08EKkb9+b6FGI+Q2bz5UDHhoYH7iA+bZCnnEEJX\n6Qb09UI5jCcccLmtTkesKgIe9SbKrahxo1Qbja/zX6oAAFO1WVogFVZTx4G6\ngtrWv7PskPQK7HBq7imvYbry5tjW0wAGtjLd89yeD1ovlajUgEJznqfl4lT/\nzn2b5pSVD4uoWNScqyUOAnIElC2KOjn3CUqEthDxc/swKshixClUHEdcb6mk\nYx3jVS8fZyuTwoGDtjclJUOhtBEdm+g8pfyWZwuO1NQVPzbWW8SpQ1DM9j0Z\n2K1yna3umvKd414xMSrrF0V5fviZBGm7/YtmjiRcoMxqJq1cKbBxvKmhRV0R\nW4OwzZ4ESCBxjhccx+5QOeE1h4I/iNB1a1xVIH1XkjQPn75G1spczjcTtoaE\ntuivJtMGYkaH2bS5u/dAoaz6eqnNLYy3RqX5QcjlcfIHU9w9Je8mDghwl4e2\ntLbX\r\n=AegU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-54e6db-koij4907_1620646582088_0.5900072604957309","host":"s3://npm-registry-packages"}},"2.3.5-hotfixes-2c9624-koik0o6l":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfixes-2c9624-koik0o6l","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfixes-2c9624-koik0o6l","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a4289ca12ef5dd7e0f33162677cd840f680c039e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfixes-2c9624-koik0o6l.tgz","fileCount":309,"integrity":"sha512-KgMddmsJ1m+9aq6T2rJmSBOegcPCDdpWF2hVHWgjty4TkduX1/mD1RbeSuwd/Z9+QtQncO8ph2jkFpxs3TpmGQ==","signatures":[{"sig":"MEUCIQCHSafFlUHBhVjRRJSDLlyOr7PhAtKZlBxz0hdXXhfkHwIgaBcQx9OiNjYt/XCaewZE6K2AbRlX5CQMfaMZY/yUA6s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmSCjCRA9TVsSAnZWagAASl0P/Ato6Vfhq4nb3v0ZZ55T\nKtlyKn0nN5KgdkNhcyaQmZeXANgsmENQj0qhqnwKp/GUcBsX2fYU1lOD59fb\nvK6ophD131XuwmZBX26O0hiLjVqU/q406Z2INoSyGN3wn6lxb4pIZsiBa3Q8\nNqVYvWPSbiU3VesRdMbtYrlrXy3k1wQpUjgUfqVQ0CuUhldiSG3ZHrCeLMy2\nCkuzTwaR38FMVLgO/XathdEBMMuyOe1FwZib8HXvFBwYtD94/Xz7y8TI2sK0\nNiNe5a/blBiCgNxskRDeTG6kmnz8sa+3Lz4HDED3UTUSw3bo578xxSFQMImA\n2TxJDnpWZYnP6fGPd0E55m7YOttRtFWecrUszaFqxdmCfdPU072yoZJlvwN5\nj4wVEa/xEoJnrSfPwGNoysQQuVfW7TiQAuwYu/waJjM+Evk9izh4xE8dbfj4\nIFiHsyVFY67zIT6pSn0xzDWM3poqQS3O450/chC3BtfB6LTK+T+w5MUv0OcM\ngXO2kaWMwuyCwiXw7Cseq8gzvYjSFp7h63LyG69ArkOCgiMUj3b1z4sFjmy1\nF2F4B2MNblhM4wLZP6AMgWAIaDp+bv8TXl/y5TcLi6XX5NWqpdtDhpJz/Jwn\nSPK2TK3eU1acPGRJHzzEAofG3wkufeNaG7fGsIJpB2xwrbG65AhdAR5tUjkL\nGN9Z\r\n=aI+Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfixes-2c9624-koik0o6l_1620648098907_0.42955631072634515","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-f29194-koio08go":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-f29194-koio08go","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-f29194-koio08go","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f211007f52274be9eafc532f18c3faa9b0c95775","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-f29194-koio08go.tgz","fileCount":309,"integrity":"sha512-Sd7VX6JhQOKeohoU0rdwOcJ3GhFV34ah+I2YPSuxy1ShDa55Po/O+BspPIsUNJbx5Up+nbCOHSLM7YM2BJtNBA==","signatures":[{"sig":"MEUCIQCsaVKOa72Jr/J0aVpsu0fMRZY+rAEQ3NquaXXY55GuTQIgQO/pernQrSKnrpGeo20S0ntL4voETK9WIi03czNMHyk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1546762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmTrMCRA9TVsSAnZWagAAcpYP/2JOvQzhEDjTfrYGluz8\nrzsCSTkk1XMG2M/iY2ozvI5cD2KfSG28Ry56xQv8DA1inARnsrJnVXNbG6xO\nHiJxcaIheZzaVPexPKmGS1eK9A52GUC0jqtG+LodDhHgo5JYWAISIhVO3j/S\nRAXMQnvzSU6g3W6WREAoTqV23uNoBXbkJYUJIyKPFPr9Erl+l0ze92UJVDB5\npKA5lLYIxKmozW0okBh3mZB2brcZB/2PjN81x75CEKIwaw+X/Hm5F/qVPG10\nUseXDpf0V0IQzuzdjvv3cT4DC+GMJaYzUl7jRFruWmJtQWSuTkDL65gXYCWX\nyXlYDEWjsVksjbbt7NjpGHsWacMzt6YFDYgK5fDKBBdtwWbfwazbKaWnydWV\npE3eUKGfnhGwF7z36CJJrF1iXUnqIJlUluIvUx2BHsMaazdk2kxqmoLM6NIs\nDvjWe1LWT7fSrlcfKTTtYFRAjg+8opyfDk5ECDF/5nK1rW5owwkRvDPYiBzO\n5m9GiFJSRUKkpdsj/EQFhq3cMRyLvJg+ckktuT9N6L7UrM0QZpA7e+xSw1mA\nQtvB8RySdPmV6TnYlF7Vm/D36wQwO+0HBc+Dv32V2L03VivLAV6pmsvoMSOd\nic3RMpfNTPsZG8ZA1/O+8SdYRk9+zjX3KGcZ06P+kfZa0VMm+Fg+QCwRVc7K\nPfbE\r\n=tyfL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-f29194-koio08go_1620654796039_0.0016137394099398072","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-d12d86-koiskfb3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-d12d86-koiskfb3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-d12d86-koiskfb3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4aae3361a5609e65a387f32ae8d22cc1a530e793","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-d12d86-koiskfb3.tgz","fileCount":309,"integrity":"sha512-TTd7kmvDeMEAoF3+PwM8K4kMldsKXYm9e4NyhtPmya5vMF6mR1OImxWaoJQorOntjqpPGHjOcBxxHuSWEOV4jg==","signatures":[{"sig":"MEYCIQCuCfCFVQeFMq0sCvHSqcrTpCpHXGwHDUQQfGms85EcbAIhAMO/y0uQyDXFvOkibtDPI/hOdZ348pTfdcHK+ALQc+Lx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1546952,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmVi6CRA9TVsSAnZWagAACdUP/2finPT7ILJA6rf3kc8L\nsRaMuRGLz2GbmLqjdYaL/ODWt0DgAnjfMnx7UlSyzx3VQjmWb03qcvAenjvh\nUbZBWmRXjAM7v15QhfFFFktieYCpQXmc7QSTYbG8JCRdJo8c1MXy2hfiqVH8\ntvll7E+XJgwAx7C+BqvCz0Id8vlBEA7bmhmt66iDkBIYI4B2M90phtNEOObM\nbjFDhDNRFrITKXTFpX3l5Tlb2A6+Xwo2Z4qfqZE09sc/V8QDlgU1eJmzlnjw\nGgP15CrXhdQmzMZTh5lZa0FC1ZGRBm+bg5NK6SMz/7kU08APzJm1TjdacojS\nGGUUVxNO0lpgzu9lECH3j0mtXgbFQf81rZRU5VfAFAANKfQw9Dgh26Ea4T+/\nunPLoEpcTKvhSHfJIb/geCW3B6dsx72a/ERrLqbzZo8WINi3byGdQEttALLk\nN1ShotEMQhH5vE7gxW1oOVDz6AH1RabyyVsJFjjGI8vb0b4dwgfAenu3mW1s\ndZkoC2FG1kxZRR8l5O3Ex/okHm47ng0HlqgPZNLhOfkplebDKH+eVzkt3+k/\nuciDr01k5x8FXuEb5DaeJfzcQ1BV5TpvcfDqzRyzvVWdHXgDjFZZfUA9S/2J\nDhLiXtWUmb4PkVvQS+dVHGl2KxMxxlMKaMHbTutXCfiHDPBh6xjr84MIrz+J\nhe+S\r\n=+tBu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-d12d86-koiskfb3_1620662457617_0.63939122030039","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-a2a4b3-koitnehc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-a2a4b3-koitnehc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-a2a4b3-koitnehc","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"79d70a9631b0c862234a2a087b28ca4d4f71450d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-a2a4b3-koitnehc.tgz","fileCount":309,"integrity":"sha512-0mNTtNkdrjYDsFwd36F6n00WRAhTl0ZLm3HeSbGFoOaUfuvg4d6LSsW2miYhwI565Xs+yb/dV7ZLdKYRaRLGYA==","signatures":[{"sig":"MEYCIQCaa6pX5IwI7nAOMrnBimTGMb4wT4Gn6OQCG7IzjqxUvQIhAPTskxCQn9PZuCdoug1+9agBoURQ1vP4DrX6lQATaomh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547989,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmV/QCRA9TVsSAnZWagAAOI8P/3F7UCmVMyfvA+eIDPLv\nTYZKuC0iWuJmqs33V/MaGDnzmgBYlZwACqXC6GAkfLQKrM2zHiodn92EFrTp\nonfsvu2F0hlcy2vOqfyGkv4fucP5Z2G7BmbAaaEVxJYFqc3xjCAkZ+GDRQwa\nnamkyzhossAT78RPneA6Ey43VB4sCw/Vl0aVWbMZLOKzW9gTFbYwDK1Vc4GQ\n9aVPtcaxrmP+lykwaZ5OHjq3mMX4hc1QCsJ7LOU5X1Nu6LDuSP5KUWAChEOv\n5LDiO3o1c4PEODG3tmZKREVXSQ2WpP9K67L57nXZTnzUgD6bSPnOXh/cAcXO\nTC6sYUXKNFoO6JmYdJsZIraZhQsyd9epWbS3Dn/RiCwHQKWF5XCf2DQDhIAq\nYdq2sZirTTQ0LZQW1nk5pgHrOO53F2PaItetfhlzEc8GBd+fq20Oug08+hli\nsQygIwyjxmzL2OKSkFe+yGUjcWOWG5Lm2RwbRsaarvLPb3EScc7egT8vSLX9\nFc03TAuFeBOdxOBvbZRGYfJ1A1GlvvTmLXkyxzeVsrCxgYbCdB5HZOGDZ6kx\n0s5wnD7oTW1jo/FXe28wkj7NSmbVGvYgU4Q3v0fwIE0Tr+icO40Gsm4fMWZP\n4fiBoygV2IjB0c/RxCnybEb8vCsGhZmNuhwtTHS9aoRF4U/nkWWAsqfG3b3R\nfGY4\r\n=svMq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-a2a4b3-koitnehc_1620664271970_0.23112130544394538","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-59f9ba-koiuxu9o":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-59f9ba-koiuxu9o","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-59f9ba-koiuxu9o","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"077e0f8063278fd12460e2bdbde104b792bf842f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-59f9ba-koiuxu9o.tgz","fileCount":309,"integrity":"sha512-ENmAG/ICAIIUPh+mZcEgUKZVbkmUrmGFFBT+WWEt2wwX355sWgmJA+KHx35tm/o5sHgjyCa0GBQRmsI/EN0GwA==","signatures":[{"sig":"MEQCIGgcScot8VOVnn/17euxyFZ69RILOVve1QJ2OtfwMpEcAiAQDJ0MAVKQ8Gqih6XsJ6Dd7G+O2EA2pART8rUJeMZiBQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1547936,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmWhSCRA9TVsSAnZWagAAJGQP/j4B7e6ldIqdwd+fzsTd\nBDwwT+vIVHs2BPZXAGjhi9M949z42cnliUl+w3MUiQLC27st9J4d2WHJDz0o\nE70JBWdmEkk9GP09DlZiOWy+2kdv8d3zSnjIgHORhjP5IrQPxYrUSa5LQkZh\nCXDOlhV4u1dmUAOj9J4EYy0lCu5g7+Yojh5aKBQJW7NE5XL8pnMnLwVcicVa\nd7wWJtM1IzfftnWjLugJnqn/K6VLM/qhT6DbdIKj2Q0dkcmvYYT5qvsqzoqg\n9G4XgIOf9UNq1xbIWtx/V17NMw4KG5y+gVGCrs7dBxTlkWg2HWyyR/AbqYiI\ncxn/BIK3ky92UEhXcM34emHkBPcX/EDfeZ4HrXmk6mi0rcozrfuv4hFnbVT5\n9OVkQ2zXqnVHKkRp1ZixHCF1ox0iVW1WTfC5SkHW7TFBlvtECe2MHhlm9ig0\nOrlIjbt6lPZZkYg8qqyjNVsclQ4wwX0bW4J8KLHppYcXsiVdQ27Egxvf3Lj4\nvQvg7mOqHAZCbJHrQl9vsMkWpxIXeRLIs+Gv4i6KYFovrUU1qXn20SBhxl43\nq/2ly5hWWsrdjeWH5ro+HSKDWVC607OyWZ7ZJtcCQkyw1JIpmPUAzqiD7Tjv\nyUfhblKSCKm12p4YoTc1QNL0iGUTE+56mlw5Vw9GpcLr8QZ9QvCDJJjnLrf2\nd0GA\r\n=9sWo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-59f9ba-koiuxu9o_1620666449920_0.9887664383363253","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-5f6028-koiwgsrf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-5f6028-koiwgsrf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-5f6028-koiwgsrf","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3f871da34ee72f7cc192985ce92812e830a7eaea","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-5f6028-koiwgsrf.tgz","fileCount":309,"integrity":"sha512-H6rF4UA1eEIER0CrcXXrfolH0TyQPx9gG1WRWq5jyRCB8PV5zYoN/O1zw/jV0sI9dAztGVk/3msrtg8eIl1J9Q==","signatures":[{"sig":"MEYCIQCUkh8W8POXvkVCkanultJYRubEIgC36HL94/jvmbP5LAIhALO1HLD7NlzTbXPfoWE4rcDL7NFAtIngl8oifaQLpJ4n","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1548534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmXJRCRA9TVsSAnZWagAA5HYQAJBIiIrV4ydgnRUcumYe\nkXfhK1G8D0w6f7ombswrHZMcSa/KWIFbEGy99w8CtS2nzr8bumHFZIDt92v4\nxlFicPGFklziqBE/AWr9YO+5inDY2CEPryp3PWB8JE90S4D3K8IoDtlhe0ev\n5k2zgI0iRgDhg468SywbGug2SZRFgaOhj4GTnGzoqQ5Mc+kVLdB8mlm9MlKv\n2ITJUyduRFMYVPiMzDic/VHKddyjyW6WL/P7/eAew1tY78Sq/NsTAYE3YsXs\n34uJnSlMPG9O+Tk9HzcFn7mW4qtAugxbWpd/m6kP/jwJ+vaQPzjnWu55+Yhf\nBH8FvcNIdaufg7BVow0sHWMvx4PtDBNgi92zj1GkGqfXrqH8izlvN/0l7c8i\n7JW6FOPXFzl9ePAN3NQJulKabudVlN7B2Wy28MwR2Ynk2xjr+96CLJ1r+s0W\nZWbw2QpuJlMFvLzc64E0B4hLN+0Ci3UxtsxNqspMJPmArqNkuC9Iozuk9GWJ\nRdSwn0fzwNhLAWRJe7NqLtEBrOvbvVe0YAIJt8yxvlbefMb+Rk8x6HVayjvc\nMrsdz0xyJUIk40ngcrq44iNrZSldLohutwMsAlGtl/xr49Ie7qNTApesnH0U\nvkx8/87FVKzsApYRg/Wwk4+dAgDorHAWosW6w95hdCjNfAi+ieEnrb/ALLtl\nHlkC\r\n=tFYm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-5f6028-koiwgsrf_1620669008950_0.9650396079555617","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-37d440-kojruivb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-37d440-kojruivb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-37d440-kojruivb","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4d2c6f5bd2804d2674b7d6b6faaf6bc2915f1fbe","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-37d440-kojruivb.tgz","fileCount":309,"integrity":"sha512-IJMih5XDdU0V51F5hzIy1K3r5u4npPggXJRl75pgFjTbae2aYTk0++OIeQ1N/Dd1h8kns7jc4CiwZ89l4OwB4w==","signatures":[{"sig":"MEUCIDYVte/Pbnl95op/n91CTCMYsXnAhXvtDcYIUqWhDFL8AiEAq3nUvyP+KMSQ38GmpIANhV3ssowTyzSP9VJqthsJSck=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1548967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmkAxCRA9TVsSAnZWagAAmLYP/RM6I9hSFKxbMx4Mmx+k\ncWOiADuKf9XfO0AeTzbLjTd3jCW737yRq3yDTXlRbgwQCS9n13MGB3Dzpngn\nEaFVrOCM3cb2IRLEK/NNEohlEMN3WxgX2Y7OHDddtjSKq52Chyo7zzwUIuKm\nDWpweeVa9jqZ2PjRA8bqhODQH7C2m7aueb9saP5MnpHtpWk7p+rtckXFPbvG\nw4Pa6JTRfftM+w6M9EI1SITTw9PEFeXVtrxz/wE7s9ViWoOqHsk5RROoF6D7\nI3TZvsMrHZNx2p4AxKaAYBQn49DEcSk1GCOaINWZc9SfypbsUIggXryo8Y0d\nWzXjtCb5YzF9YjYieTEX8NfliM2mTeV6b2m8+UOb0w2bBjE7s3NoP1dVZEc/\nSeH7F+fa2ut61sjUGIB7GxvARSX9zx2dpfsG65Ye7z9dKkq8GJoqCql8/du1\n4xxK6/PU52SPkh5pgp1PaGsdrcEIR5Z6A2mq6fVeBNVnr2gWgXcSx/xub4KJ\nWmADvPlOKV+2vMTZ3UW58FL6hjymBd4byI9DtFmgrwChDST/gj6sAXkmmOXc\niJtjwx0W6Apo+c2hF/srnzbeGEavRZ7dGdHmjkcVrZdCVaot111zdZwEwUn4\nCOwQVyUcrc64ZJpp1OkMI0kr8tOZ1jcXmBHDcmJe3keapMCssEXQ1AspSrJF\ntOqk\r\n=RK2W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-37d440-kojruivb_1620721712953_0.9169473098519285","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-1af77a-kojspd2z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-1af77a-kojspd2z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-1af77a-kojspd2z","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dac994807d5473ffa00b92c4efe0f667623b7ad8","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-1af77a-kojspd2z.tgz","fileCount":309,"integrity":"sha512-MqjyZpEWcakTjbpfgo1az0jod+Sb6FG7BlwyVPm0tr+DnR7RaCvtO4atHSzdYCtU1Gv971uiCdRyYkcB+RkYsQ==","signatures":[{"sig":"MEYCIQCSca/V3eAUIc8fgb3G8pJ7e+0P0LsOEqv2mt1nKyUI9gIhAMFhALVYzi3LFhYRPxMXFRx0GW7etvrxc1Dz7GJ96pUz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549347,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmkXXCRA9TVsSAnZWagAAl8oP/1bqNS5fq48GOfI7BIN8\nEVBQ0Raq+p7MwmKuX2BcsR4s8lWXAViqmjT5ixyxpfLUL4moPopfPzxSj8fY\n6M9afzIB/kAeKzFWXIM4wyUkQ1OM/RqEEnGFKv/Y9MRqEgJWMuvDWJEt+GMe\nfI32eaOWJcWf3bzRDDe5r5442mlPfYSRuSbmXZABqaKYtX5TtlmEmT8yqXlG\nnFlOjJ2CvJ+BJtYjp8GWW+jxo7qrGOG1gS7V0UOHZjNb96IQMgSSRnAujXkI\nv99CDt418vv4kEplRX4S9i6U1ZYkOrPTNN7QDhuImtDzrGU8lPWnLZGeAAVx\nd7a4KkVxqu7C1sQDcVct71XCjFDZ7lMCOrZQHEJuqTsogxPpqySUTLiX+V6q\n1nYnPycpdsxlmwPVxvQz08/fCvw/zNpMQZFu8wQpWg/C1pcuSUOkOytVCfsS\nifzIr/nHybaGcqAlF7RsLzP25giiGCALRbtw6iAhjILGQ7RVpw9nrSczDHsg\nG7Vzhx5ocd3Tf/hMt/Plu4APlso8Abvf8y9OQcMFJouuC0vIUX2c45gjYZz0\ni+Z7Mix+cpR8Yz9oSG/ULhaIs4Zc/jO15Kjl3gdPjZI7M8NPGpRVkvjPRUQ0\npiEkGV+3qFKfdXuGiH2dDmQy9Zwk35HK8LMMJfTsyPpqTeT9tun0qlFGlHZ/\n5EQU\r\n=tcQs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-1af77a-kojspd2z_1620723159380_0.6932936090337858","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-d7d623-kojsq2s0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-d7d623-kojsq2s0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-d7d623-kojsq2s0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f069459af3b371327fc8b179ad991bcb6a451e9e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-d7d623-kojsq2s0.tgz","fileCount":309,"integrity":"sha512-KwzQlAHwsrMXhAF3J+JZvZDxQK0T8JeT1vpsmFTj1doKYaKWbUQhPJDjwZoJfj3OwBHwhBaVHEU3KGrmPVKfTA==","signatures":[{"sig":"MEUCIBm/0ai3VGT/RjvOPqCiJBkSz8iX9034EMPv9nqb5liBAiEA0nKdOD2jh6v0Oz0V6aWLMaLW5MpL0JwTbcjgxPpySuw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1548341,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmkXzCRA9TVsSAnZWagAAkA8P/3b+wk2oZzNTa5xGFw+q\nD16rYr1OVORvFjLPNweDV603LjRq9gItUltnojETp99o4WPHxyjwMOq+tywt\nnqyTC7p9WeGl7hlRD5O0rXWYOKM5L8rkk/lzQu1o6WE7W5qMsZm96YhYUxUk\nca327fQ22Rvj15EuckE8d1CItjEg804tOoY1pW1eI2dZCywGcsPIatEZ7GcC\ncLdMIPp1NVKqmPa9zFUyNMm0w4cq7GQknJsD9IWXYrGTYDmZWdBruxDAJFK8\nlhhhxhzTqwiUQNw3J6O2DWOZ6ryYFdurBVR/SuJtqiO73igsbNQxWrC+iSmE\nsDQ4Io0E+GejOrx0wFRvJkle5lLkEsw7nZl3GzDL7rpcOcTev/8+ycgJTLAY\nMzTEWH3EclkEmUyYQ0n7vUEmCTlasPwTSJoSclJt9aFBjfmx+AKNxEyjYVJe\npl9UzCVhpkQw8U8KAN6t5ppZJ7lQMzLZ6vbaudUxWHqBfs8ayfCnWKR5y0yx\nM4Z7vFRqZYGng7CQjVFPtTT1OME+NOxAckNNbfZJTPyqFY5AKd2J57njrgzM\nSMd42GpfCLfbYkN00Cs7FKoxhJz2OkNpGTCxbc4BQcQ2IyGRc4EKBqicIQMG\nGY3QvFd9227l5CKb61gs7jt6I1YMSFazdPoX8SA/MIx1TtiMcMEk4bZnFGNm\n2atL\r\n=C8nX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-d7d623-kojsq2s0_1620723186445_0.9236944391131756","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-e26189-kojstnl6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-e26189-kojstnl6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-e26189-kojstnl6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4b420040a5036e21362e9b6b939850b15fc231fc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-e26189-kojstnl6.tgz","fileCount":309,"integrity":"sha512-OW66Ec9zEQLg7mX5B36AnBeryhYw25a7gyp8GVvGNGHoxSHEi/Is843iGyE32Q3fcoal/e8zyU3lBtRmR7LhsQ==","signatures":[{"sig":"MEUCIAye4byPxcRyzkShwH5MB6rt3+eMKZHhY70xeCo2N2xHAiEAuXWmP+d2pzTqLIWNd2a+xj12bPjHaiMNGpZVHQLMMKw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1548437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmkaeCRA9TVsSAnZWagAAAZQP/3q5YK+NTgay/bj3wz8w\nsrHVXNvoTFBvBk1afRRp+ndDeeJ7o5joM1ZeN4mnSW2CkHf+utirtpMTLass\npyZ2wmhYPEtHLom8nFq2OPT6x0nH6Fjuep1eeXofiMD9loOUyio+qu1+qNw1\n4w6zcWOwK+FJry+5v5eJjr3y1XI7x3ehv7xaonaV6rF+f+bC4r6MWIKltQvD\nQFK/iQTdx9s4AThYDaiEtZejQHbOnYJrXloR08uP73dIJj2ojhK4I6BqgSV8\nF1ypnQGOBuwlVgnCD1UcDbapKBI1VPMoFWav4pBRHZ4n4U5K6bPb2O5D9Zyc\ngZ5Ki/+8SPADutY0s/5XkDcF/eMj7ZuNJosX+8tnXz+JXYzfEFmrX0gPoJ8l\nwy0YwcQF1cGjIZRMPHHqfWXAV+awkUGUiohNNut7kh0TYEoO5DOKSJurVo2S\n6V2Tju6t5EC9ZQ8hvhZlzpWX9b5eR630nvsJxeeG5AMTUz5wF1huAG73Vatb\nMHOOHiEioSOQK70cDH23xxgLt5vAdtwIo3E8QNEKfCU7lZPCxpGfaMOlEKGk\nZg0mGPYpBVpHrKlyTZgaZPsAOXB42mk3ZSCFTEYMM0bIHcvTBaymlBuokhBC\ndIP4EX6pPYfJfVj/Gkzt4NQNx3zWR+TguqDbaHIsRIFaKha856RRfT/ED4b5\nm5BW\r\n=Wlvd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-e26189-kojstnl6_1620723358437_0.14477151030889357","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-b3dd2c-kojtffcq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-b3dd2c-kojtffcq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-b3dd2c-kojtffcq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"54461ac887333da076478de7da16cb9d8d6574ad","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-b3dd2c-kojtffcq.tgz","fileCount":309,"integrity":"sha512-r+1wESC+8rEodZH/hEd0NKpJNuTCT8tocM2KGzPDdKT0KASuDIDWkQ4GyEL7XX57fDOUZY6uIyshGuld7tQ9Qg==","signatures":[{"sig":"MEQCIE2felrYCKJ6TjBd+Q5buscBGxh/3T+ukpNVMWAu1ogQAiAfJTwZX2oXcUJ5a5ikp5fwoOdsdYy0YZtwSOqQWs0m4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmkqUCRA9TVsSAnZWagAAr+wP/2XMfvp/dYSx80rX+m3a\nKP7/rcJQ3uPDjrFnmKI8j/dTNXSaTiphZ1owtGcXXQU2Dh71MKjEJawh03Qh\nh6gWXN3fcDFqwSOR1DEjOsOtyvq6gRY64OSi9R/rBZTPAErHoVtXsEw+1iOk\n0Ty8nXZTIXTn3XVAj90wTkZbFX+i/LgHOfPOEP9s58QvB+n2jVu0ypBfMqTI\nbXfIDmMcAfh1lvcHaaTH7iOqDsvr2ALhJoP/f8HSlrLv58iGyVIlw/rljJvq\nIyWn38oAHzOKWA2UKcUZls+pzNeQzKd1T6FfeV/QjYnz2yRqe9fu9o7SDNj3\n02vyo0fe34WJznEQiYop5MjxdNwIVUYmhunK4xzZM3VyO6t+bzTsmEjUu1NL\nbr7b+vvGmvGcTJEIrFA3GMUsKDXAPrIDg5MgIZw/KQr6slF6UhePom1YHiF6\noiDBQl3jUmV5+W6nMCVTN9GKjB4PFCpTePBdxCIn5PApC5VcA+6HnqWk34aa\nuu8sCx7S8J2gYhLhWbXggd2HIvtARrxuwrjRSwQpmwuDS/Ormcel94IdUQjf\nZUWNfqWifvO7ZIl0uTZGcnMPa7thnVqi3UAUCgOg9AnueEuPAru6d2/+ZZ8j\n5bAW4VL/Rh86tuELe6eqqmjQtq51t5DXIEd3EohgYAtXz2TgPQU5vso3boxj\nFupm\r\n=EtTZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-b3dd2c-kojtffcq_1620724371766_0.6649656570301195","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-8d2073-koju4jhm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-8d2073-koju4jhm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-8d2073-koju4jhm","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"297235cd679c0859e61e81403e72c8bae8bbb1d3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-8d2073-koju4jhm.tgz","fileCount":309,"integrity":"sha512-w5A9fZRizIwpAjGnq7tyzkzIuc4oP5nmXrY5K9ojdlrPE1u7vo/WS9Yu9qo9wZsTaD1slJR5b/tTdYI59et5DQ==","signatures":[{"sig":"MEUCIGk1Vi8TsySgQIbRZo4keQYzmUnuG75M4YAAuFkXfIDtAiEAjEuPssHXJZq/N52o2Vttfp9F+ecf1xVQGKd6BgnGLyI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmk8iCRA9TVsSAnZWagAAFv8QAJM1+iRzHTJJKVLWh22b\nidZOozv3ZkxQs1R2C6xHFEgbsgmABF1AEaW3kN8TrnGW05W311S6EmqsmGiV\n6K8zulrQC4ebhtlnIkwiOEmDrHfA+srmZGxBzYrIYDAFM3vnPtux1VG3YYSt\nCguIPNCPPnKARqU44hioyFvpaO7gXE4XM5uxVtb/amRuo2B11YoIx+9kg+zR\nK7koIKESQj/tspP8PeSLziyliYqTcGn3hfXnLWwdsNqWlcCGqNdhm8rsY3fi\nVpjv9QoeFu3xn8UdT/QqUV9WdAVLeameKP4kj2avwCFk4CPILYtRbYs7lzgG\nq6gD3m0tAmuwRAuLw0hHNMjULSsg3H+lu8SJBr7SY1xVkLUYxj247pDSJin6\ndEFPcymN52CBfHtSBN1si1exS+Ws+RYlVmmNNz6JmVE0nVdT/k7Ph5Ops4re\nIdvPiOzm/LHXPY8LCRLIwsgG8lSxP7Rvig66X164780Wnj1aXlsNSxTA0QVW\nklV/FSDbgBIiDdLiTDd5HY5ULlqxhsUIks5Spev47H8y6vw1GL1dboFC0Kzb\nmHhvxb0b2JBnVav+N7uabEdjT4KGUOTnOZbtVQ0fyXgU/ULcQYkz1NMsR5nq\nKKEJ2gp4U0RkWEBfJGlE3xUfcS5f3u0V34qZdVHQYsaFstoF6WlrH4BKYMQ5\nHaeh\r\n=oU4f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-8d2073-koju4jhm_1620725538109_0.7941269253016716","host":"s3://npm-registry-packages"}},"2.3.5-hotfixes-af1c8a-koju53vy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfixes-af1c8a-koju53vy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfixes-af1c8a-koju53vy","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a99b8652b1c2054e6e5523f9d155de913fbeba90","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfixes-af1c8a-koju53vy.tgz","fileCount":309,"integrity":"sha512-4jO9kqN0sqWOWLZq33VSvmaJcTqhKCtFevxUl1Il4EqwfYuctDY/NVb3OynPATqB9lJDS+R8PLWCLj/+gmiygA==","signatures":[{"sig":"MEUCIDRAaZU9zC3Zl5ye1bcw0xWZvgoxRQfUycV0+FZm7xD9AiEAozRogII+ltol9fKKc7H10hvYqxUVCpW8c+WDsLj2b9Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549885,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmk88CRA9TVsSAnZWagAA3ygP/3APizkEyxXEvdng32Un\nqDImcXe7Yk6aVgZRYAfaLrBF0a67xmC08qZUVqtcCxEWUhtMwkccM8XqBeDL\ngL6zJx6KfjpAVSyEqNy6CfP5XHoazQCuUjFq6uABZBJnVSXn3z6pvXsM37hb\nkre9lOBkEkIppmvKg0X7s45aM4R7PxzvNOJXQ9T4trTyjSGqfKnWGj9yR+4r\n63MtTY+h6XfK+YNVu+/HmHTXwnDwSWWBcpazVRyESBgIi791HkelwHI+XPd4\nr9GdO8mG6kgWxewIbut8sLrHh2lnNAHpS3oSa/hxPD4AC1hXz5Pf8QKGa09k\n6eDAPjsvwmm7lVv02kr3Ce13HjU1Jctg6lBL+PEAc3dMKCBqYC8BCfoQiOzL\nupCk5EfVW6MFqKr//6QRX7zzxjKHKcWklTcIpbr/1ZoZKjj5qzCF/gziD9pk\npsAzQcZyR0dcLocVp441NI2w/l04ooj4WQfU+Kj+fwshot461AWIRj5tBBqQ\nTTGTcE6KtBCYN2omBGYzGzA8YpOeK4QOf5daI6byKYZY9l+7nB8ppe6sUprE\nmtach9XE1lGy081SWbgwUsz70DPmtlMkf1MHdmf/cwo82E2RBvYWHlQxm4Mg\n4ZUQnc4dJ1JVlupe6kV13tXf1vQXHEo/PKTPMxstT+rewSsGssbqlUWN9Jdt\nEAlK\r\n=6g3Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfixes-af1c8a-koju53vy_1620725564194_0.3008867556204937","host":"s3://npm-registry-packages"}},"2.3.5-hotfix-458bda-kok02alp":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.5-hotfix-458bda-kok02alp","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.5-hotfix-458bda-kok02alp","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a8b0db3fd83d19b02bf422d216e9b218ae0d442a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.5-hotfix-458bda-kok02alp.tgz","fileCount":309,"integrity":"sha512-u6cnYI3Jjd7d+CzGmYPL1me9vvM744HPLeEDG8FVb8yWkNWNghSFbbm/GwKdPKzCWRgAV1oVGoE6VuZv7Qog2Q==","signatures":[{"sig":"MEUCIFX7TJr8q4FUj1KqPQbt+AJ9yBpPJAdDqTZpVgi/JiFcAiEA4OfLPPt4TuDY5+vzlZWOD+ZG4Bqsv3/tL1DnX3dDlDc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmnYXCRA9TVsSAnZWagAAfFUP/35fL8mdOdqMF7ZDpSOZ\ntUtFlPhKv45SSvOmTbVHCbQre30wTerFE9PnWNi9YnI4ceGFSwfzjdOX186N\nh3i38KBOb5CorOgqVCo6GuuIDxw6Z+hIKckFdlZTgnYJ11/1R/AUWxs0rc7J\nOMAq1JfPFG608NFo9QYDr3DsBsPRztAy7VZL7fo4tQS5sRLqPq/rxY6lzVja\nQgpNw2Cn6Xze81thMI0KZqxBt/eOn2L+M8etIMN6Orj32vAEIQZ5KwYlf4O2\n03ekWeb3XjfdG7meqlqC0ghAL0+53/1+4RlfqQxycRN/bvRIf+1t8Ci97an7\n783SeSF5LCidGGw/I2JamrnwH61dSbk/FeXyE+2LnZjevKRKRNoOPRYuHdsr\nlbaJ0AjYc77TE9Vnv8w+MnKR24HFxMr9SUwkJOI8T+Ptk1QCW6aXOj7ukW+L\nJr+YqzQpHTARcP+mguVN1b5dVD0AP3Kjdaq1BUEBzUIADdKNZqUv6LWkphfM\nWHZaKefKm5eJg/lF4O7Yz8wfajuj4FFspeu0OCv5rYWwPOJCp81gCgfxFC5z\nRuj6dWir6r3AMNuPFpIyiY1g2VtgDx9TI4mojZsrBWX2g//Ypds62xIVnIUw\nqT8dGd7CY0HH04TSX84kivq5eM5u/yrCnmOjEGPSXxzW81seDm4t3ZMW9f7l\ndvVD\r\n=qh6e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.5-hotfix-458bda-kok02alp_1620735510530_0.19822991203354445","host":"s3://npm-registry-packages"}},"2.3.6-hotfixes-8b61c9-kok6n8bn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.6-hotfixes-8b61c9-kok6n8bn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.6-hotfixes-8b61c9-kok6n8bn","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"285d7681f6e90b99c1221b54eef09f125ef9f365","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.6-hotfixes-8b61c9-kok6n8bn.tgz","fileCount":309,"integrity":"sha512-Z7Tlp8gSD7q9l1Fzc1a34QXzCHNsX/fW8WnORZIR/eSC/vF6xE2VEnPqKZhyruBxHzaG7iqDyv715U8OXRzZBw==","signatures":[{"sig":"MEUCIQD6/+H3odam7iSS9Z6EShDQXwMN1x14vVDJddpVhriyTgIgZ+dzGnrsa/hhHckoYNAtXvMaGh5D/HhIUBfqrPtBKFQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmqFLCRA9TVsSAnZWagAAx/oP/155uAN1lcaSDzZABKxO\nC+QIE+22U57qldTEmR4gTBkQItziarwZa/X8U/E91zlRpcURuBlMo1Pjf349\noUmBSlOVL9qB28V9oHIIQ08JoQVlILHnTedqbcw1aTsZ4S13gcx8j8OB0TSn\ni/xXzi2PYsxgco3p95nUxfiYZIcaHQ+9H0LnOKw27AaZsilv2MJ87kB1EZny\n4G8FYJnmkLmnpVZVnohIyvMH2/IqKnVkA9e71X51Hewvqbk8ttNdYCGv0lrJ\nd1B9ZM70SlevYofWjes8apJ1AGiZlqa/wXk9MmxoGYPnrZ9AaBckpaIzIUr7\nwnaD6DOIsDbxaRpQ7M8eWoBfyZvsJ90dBCNpcUEp/D1y1ZKrz4oPl3x0Do2i\nMUPox3mtiMRCxADDLv80gl8rMoLb26NJAUvAgYIiGend5047kSvFxhYh90mK\noE0GlRTWQH+2rUs0Mbv16eNN2ZZV+1XzZccfs9R4IvjWo2DxQthPhl5Rkh0J\nWG9MwczI3VqanAlD2YdUOEuU4bvy67V040J5QZWcuCWoC+/a7QECjIcxc99b\nhn2EHLfExhLDMJbUkI6IVhatJn7N9uqQkzoV1h2hgClfvwuQICgcirrIMUN0\nJghYmseucsJq5WFhBrplSFC2T1OiPir9fixAS6Y7Ffi2pXrOCL9D+a1DfDVA\n5wNA\r\n=g7Qd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.6-hotfixes-8b61c9-kok6n8bn_1620746570322_0.09770119946112676","host":"s3://npm-registry-packages"}},"2.3.6-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.6-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.6-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a2d1c6f694a2ab7b0310562d18f86311db48f645","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.6-beta.1.tgz","fileCount":309,"integrity":"sha512-r6BDWNRzpKrcDsKD8Oyl90jdqEjFuwKxUendgWfCIS2cz39wEviWXAVPgakbcq42B/PMkshBK8btZ2u8aqcewQ==","signatures":[{"sig":"MEYCIQD3RC/beRX4EEHZiE6WhKYPI9R6S+HlqdVrICAC4nWixQIhAP9QASe86jz6Xi2M+5LzvWjjEdNHysSBNEIJEv0NpqoR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmqGpCRA9TVsSAnZWagAA4EIP/jIt34rn8lPytSJ6K+Ut\nSl7qQBPS4n9DfldxWsdby1pFokpzbcKVEZAoGVcvb0lAvE3Pwl0b+rhoqzLs\nqg7ldDkYrBwksMbUHtdauagSx8sFWq0wk1RaYVISIuK/EEeoNdTall53EV50\n5BM2Vv0fabKcaKwLeD2eHzkwhoCXjcEUEN5vhItKPTlBS3AVxosybvnbRl+1\niPt9WQK7KMn6pV79C+/zSyF/jQx+nrPnwlNyHU8uaLB1+aJNQQe2C10mmgZm\n1PmFqH5dkejwUAg2HnZSxV3Tg3emScyEM1e2N4bjWu7I2pEoLsFp0/m54zTv\nbYixWKNC8vxk88JUV3K5rP7JmG8sOMU/XFxGtWrUl/5qmqbov0pNvCdWOFKp\njNG2CruL+wDvlseJ4GRFxG8SctuWLhqJBqhz2HEGZ0+cAEkHnrxsjbbvdKSs\nyKjgox5uNPs9OORJQukJtvzDo7AzL5gxY0t0TjUt+jxsEQX1SazWOWnWbn0m\nWHXkRg4MLIPe8ZOf8tkMHzOmxvL7eUa1+KfjPLqhVRohJ8GMLs32gRSbpfEm\nQbkk7lTojbkTlWSDMHb0KZ/03OfjTLEyEarmWqRVzeHNP1E5k+j39LvxNBZh\noB2WnpWfAncj028lF21mVuqGLPgYRQB3FZS1ZwHOxtL2aWMt8Wp/kTnPbhg3\ndzYz\r\n=xRYr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.6-beta.1_1620746665184_0.7431009633225407","host":"s3://npm-registry-packages"}},"2.3.6-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.6-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.6-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d889c9adb584a5a680973424764a896168ec6cd9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.6-alpha.1.tgz","fileCount":309,"integrity":"sha512-TfDPjaTA5oovAHlxC80fk+u3TB4wL4wtto/Aoy4EgAZ8KfXuFa1GnExIp1rO2J1VaUAufxXHo9MEowU0FAI4Qw==","signatures":[{"sig":"MEYCIQCbO/WwhY3PaKKSGrJnBbiLAcTYr/79CCnEG+n5pkOOwAIhAJf32eeRTR9sYTaUriZtFxR6t3HsQn7av8NDrOU0D0My","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549862,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmqHPCRA9TVsSAnZWagAAu54P/RduLyDD4QImjPBiYnLR\nlI8/fpkFnhHjbYq4WWvlw9eX03yw9PhR30DeCOhfLYbc0fvT+7QttyTsSFrU\nqV1/Iox3SO3+00v0TziQ9jhT+sh1UMOIyKXxJiwrH13idFjrrVBTMHYbD6tW\nLXBD44U0o2ITIcvYgnFskT8jvZmrpodqgVr/lJ4Gv3nC5bsrbO/1f5gTvJ5n\nIgoQOWzMlDUXus3GIe4z691iVWjUMlV2h2WBiDV/hxMxu9WpTORw5/vubHDA\nblKbqNIx8aCa+SvDnYwYvg0XsbLuEmY5V9cOs+MrHiq/rx4+7kb8cmNbQ6Kt\n6e/gldw064HXl66kde7qLlE/rl+UyiOtUUlF7a2NaatcV1HPEjrRjT1YSp5w\nL/FwOwWOsqhAJ5EiQW7J5GMbNp/uqABCXCque6s4gh42WTqiZUaKmjKfAMg2\nzjetwVC9C/B9YyilkQMWYGZ7qJBU49GMfcWf4Y9t8q8aPE5O7WHz8FtaNVxI\n4XYG4oBGjNC+1LXZ3URKSmAdtJ6ArYSa8+FQ4ZLkI6CELglPu/KWK/ScuNVP\nz5mWMOQFBJRh98cugaeEdP74fheCQyiBlrsEi+to//Syf8s7hQbNmR3JEO+v\n4/RN8HSPTQuev9/+5PC+QCJaB8rnz4Xws185jnwv3wBvyX+yhzTwFcDK2efe\nWbIu\r\n=noTM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.6-alpha.1_1620746703176_0.12341065791693007","host":"s3://npm-registry-packages"}},"2.3.6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d8028b381e61b0063d69749f4f5cdb78c367b65e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.6.tgz","fileCount":309,"integrity":"sha512-/RKAt9UThaCfbgOOE8+etYjQAbM/1ZaMCSTBEIPL9VqktkWnAXIjdJ8HapQPHzI11bIVFrWKmyhwTNI9plYpCA==","signatures":[{"sig":"MEUCIGTIbBusAst3W395ucYzuY4bsojZHoxaaBz/POVzKe4+AiEAk5ImKVDTG3roVDPWPt7q2WWAZWpKF3Dcz4hD4KdHTLo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmqUuCRA9TVsSAnZWagAAi/0P/3NrTqZqJp1SQj+qZafP\nXMkC8t10BZexm0V5rxxmMRjaiPr5d4JqOCgnBNSbsA1lEbbwEgKfJb2ZeK/M\nBXGKy1Jl+3Ih/sPhOe4qUZiM7oYxWjMt4xpp37OkjmHh63nACjcdmfWDNZmk\n9uYM0xIXt40Uz8oM4NGIXeaLY5AOPDYc1L/5GxuI00AM9Nzw71sYsrF72bfn\nqiLhmk+bMRqpXeXhfAaXsWfXTd1A2OYSsXSFjmw3pewTFgZ56Hf1k/j0QcBL\nJOCqjFsSlHFu/blAg8Nr7u5kG41nEZkkA5f5Q5Dgq/POElyM+FbGzOanI5SG\n9BQB2dphi8MUG7e/43jQ4Ks9WOPz7Bu6jydAzSKvVxwhJSDBWiah8GTAKD/c\n57LOnMYVq7CT25gWg2aI3C10X40/J3uehIYvi94gGnQ+Zkd893L1pYjRl4V9\nKS11GW1F51RPeXsAj6NJhR4+fYNU36f6g7P6jfYX3v7Vvp0gdX+VjLS/V9BA\n65mFfYe42ZcMvBgwUAHzqIrOsfDD7Vi7wnNwVH+04btmZgvs4FqaoDt9XLev\nT5jBx90p6/uNAj83Gp5RffcpUtHU8Vhe4N6kj7ZVTH57LLdKuyTEF9XsR3Uw\nlhQPzREELKWpj+YdILqoyQUZz5bjaGpyb86SaP1sQ0Xi/IHUN1FoWthA1vmp\n5I3b\r\n=NbbZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.6_1620747565610_0.39769780796152787","host":"s3://npm-registry-packages"}},"2.3.6-hotfix-9f5324-kol3mqhj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.6-hotfix-9f5324-kol3mqhj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.6-hotfix-9f5324-kol3mqhj","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"471ea5bafb7795efdb37e7b8dab56f321787fb12","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.6-hotfix-9f5324-kol3mqhj.tgz","fileCount":309,"integrity":"sha512-qOafEeWQmX8L3zTs9c+LN/Gpp2qzvgG7NrwLrG8805/k1t3lVu1ma8ZojP6znRLoeJMMgu0IdrzW7Ly3BgnW2w==","signatures":[{"sig":"MEYCIQDNSSvhoOTAgjdNEzHEk1vSAd6nh7QID3P7NgmJuPUBGQIhAOj/t+FMobWxqxASQcrHewfbCB0qdMJY6s9GqPmL/ZTX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549913,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm3m3CRA9TVsSAnZWagAAAQcP/1hvno+bvJwO2UiSBTMH\njd3c1pAVSFdc3LVR49syvWiWTjfer/NKUU6c4jS76nGg9JIrtgwbY11zP00i\npOfWQvyrwLXxcxWkMyJIy7dF6Hs0cxBvMJaExFhZTmbD1kqzt3+utRphsMKr\nGt/HhAwc8lXsCrcztCHohyevY76/ob2cD4DLTQ6q8y/jH/VY567NE1qGRgiA\nR8ryrsHZC2Jy6MpXv/o8/qZO3nDB3cDx9PKibN9LtWHuMIZRUFF/KhjqO4JS\npXnNmj11i4kgXVZQNhl1DbDZ80OSlNWhPF8WTZQwuo3lQAjiDkEzUP78p/iY\ndsY5FK1MVUyi8+oew+cylrqir1afTpo9LCZt5sUa4v8/TOfhckCiV1dcSPRH\n2juNgfUhGISnEsVYm3LUjgMivpixWzBp/Czxrw7PSdSBlVLAML0Qb3UIQDEF\nKqhqq/izstwLVgnbRlQ+vsEuqHfN0ct74LBQUKW1U4bWUlsSxaqBGTmwpPIV\no1CY6oAYFO7IvCJ9zmXVePY4HF3bJgR7yj254C+8MkXh9WxMU2SkQ/Vif20Q\nKxLS5qX3pfKbm+4VbFREZmNAJvMsSHnQXGW6ehee+UIF99zRXAUSxBdV9NOd\nHIIkfoKnOlCEA1VDZ8AiehmNPFHGIRkgqjFWXel9ZZ1RlKwFdAAOjh9pXGPD\nSNJX\r\n=ASBq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.6-hotfix-9f5324-kol3mqhj_1620801974303_0.23967883551220903","host":"s3://npm-registry-packages"}},"2.3.7-hotfix-78c07a-kol3xijl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.7-hotfix-78c07a-kol3xijl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.7-hotfix-78c07a-kol3xijl","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2c670e287b000751ce0b89f669140d04c86f7959","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.7-hotfix-78c07a-kol3xijl.tgz","fileCount":309,"integrity":"sha512-HtQJOIe+1yDNoec6LMcZvNuc0WDe8J+Jo5pprgTDbPq6mFn+8lS9xLXW6WlSwVLz01x9IQG5SRyeJxFcfbYLlA==","signatures":[{"sig":"MEUCIB4X3RW491AfLHt73FwGJGbfqLAhnCRv/++Y0PzvJ/rrAiEAskDL8QL0/z5EZSNpFxd6iDQZV9a/tUwU/In95lf7SYE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549913,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm3uxCRA9TVsSAnZWagAAROAQAIh/J43ojnl/hPIOLlJM\ncmXmvpPJXy8KIArtzgbLg7hPhfPodlvAE2NNt6zxARXN+s5S3IbWOGF5ykPy\nDY/1+5t9svYhfHNYPcviG7C+jXwR85p5o+ctv5qkGTGny4UXyOi464mBciDu\nDSTLdkln9hxPIdbuSd8yy/4xZfH5bOoFsWE4SXXEf6i0Y2n+QHuD2ZZGOIum\nSUlUVgj7/U/xUnojo0XH4ym9MDMBCcYvTXDy5lAZDP+UlJZ/7SMjq7+DljdK\n5lGtweu5TQ1Uhb7QL+kBypFdsTL0qXVwaWsOQi7VaBQhds9kYZXYgFUO+sHx\nK8NyHdIqYRqErYQthG7qbXGq//6J5KEfx357czDNyuo3uMkiJvJWmOWNO5sn\naRm+A078/JqIClxvKIYRJysS+h8B+qNJC5B0KZR86BIAyn6eGY3PqFxLo3Gn\nHj5HThhPV1FtlIajo1btNMRZJvvf2bZ9DZsDnDoPOVnWmjCoBWb3ppzU02PL\n1ytqTP2fynVjIX1BbE04ZbkghoBbqpRLdVRvSBzLrbgd+DRyLIVeUKND1ljw\nUTmP0dCHmvx6AXzHs24t+EVR5KOUoy3plyXEheioO6xKfz8OdEJWX6BjV184\nbs8Vi+MzyNOgjbn3II+X6XHOFt574ZbVaUGu4k/86j0p5Kp5R8+HMZRpAQ/M\nx9O+\r\n=8lT6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.7-hotfix-78c07a-kol3xijl_1620802480586_0.45277379762886305","host":"s3://npm-registry-packages"}},"2.3.7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.7","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1992f21fe1d0814e054d08ba1d48f3cbe95f71cb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.7.tgz","fileCount":309,"integrity":"sha512-UXWjfCx0xWtIpFh7uQ8XNdtWF2SJKAsnWdkKNAEuAzIcJEKyLhv3CnVEM3Dh11Or+k7dN8GI3n3nmeCQSIaIng==","signatures":[{"sig":"MEUCIAuOeVbWEfRSsZIsv0ETmM2SG1qxB6uZ4UoXm2k38dpTAiEAwVYeMpIhXZo16JKl5uYX+2GDiqOXUmZQXUi2eg5uVrM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm36TCRA9TVsSAnZWagAAs/IP/1cpCaTxYlMnK5/oyHgH\n2UiCrmfMsA1myrfjChqI1Jun9AUzX6y/irfv6cD+O8Eihtfo2RFhe99WQoTZ\niUbIt4NYjTDDgrO4tu8nlJLVZM9Sc7bPDoYAUo5TCKVYd8p1zTYQYadIjDNv\nu7W+IbwbKP9aGvUNo61adpVwUaqUWYk6Efzr0/Z2YKqcyB1vbMa0nR9XRPdu\n8Y4XvnhntmFEjaFUO+lHlgydv8sYM+bkOMkcrTf1rXK9FJ0RvTPDI+8YVNp+\nZzDyZGsGUBVageQ6ymDuAwtFqb9y1hSsXIdvEm5P+I35ZGKoyKdHZhAxYC9H\ncNOGKKZrCLrR8NM+ku68zZshujkVwgxJE6HKgm0PFZKKA4yNaiq9x3jtUtFc\nY/vbRXYxpwXQArPlJEmXfa3S0LAbYAxpj/LU4HImebvqS7XzFkLCwL7duYqU\nppQBqWWhRMicMC+nmf0HqsOY0lA4ALNOZAMT45DVI+fql5iSkvxAQPBzPNFh\n0qlNGrQFDvKNhE8hiX4GbPFXAxUSk0t4v7infxtol/XkMO8t+jVkSkeJsIrT\n4L6jlkR1jLA4wexlk94kk9CJqDv7EUvHbWL36p9SgHtwGuK+lV43BTFUDUQw\nmxO1YtIxl79maLTWYDMGzcwj/xadRaFfcmXR+6jGJspWVf7rLkTXv5y85UUF\nmfTr\r\n=Q4tG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.7_1620803219028_0.40366256596515115","host":"s3://npm-registry-packages"}},"2.3.7-hotfixes-2d29c2-kol4e5ld":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.7-hotfixes-2d29c2-kol4e5ld","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.7-hotfixes-2d29c2-kol4e5ld","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0a5d8dd1541483a51eee69e905e8c138d83713a5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.7-hotfixes-2d29c2-kol4e5ld.tgz","fileCount":309,"integrity":"sha512-m02/A/HVXbWkbKT8ccYJGC1OyAYYytiPMkpnVW1L3yqYg2/7eG1qQZ3Fg7eloXdbPUOysx9rolyG1Xf64Kk0GQ==","signatures":[{"sig":"MEUCIQCK/nmxrt8NiNKIv7+fsNAMkoaH51OObsJ3E0+BRy0xsQIgcDjQyr7LdmKuTFja9NAZ2nI8cqJKMCnEWwF2trDCbTU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm362CRA9TVsSAnZWagAA3iwQAKQgY8fqofof5XQ9KNiC\n9wSCxF38txQKQAUl/rBJEeu069XV4MQRsvwxUged8YqAdzFi8JWzc4MlIZne\nYaf+bGytQH9C7loiqWgpKANdtWrMsxuN03hJmum6yTg0cK9aAY91X054f0wV\ncOm0yuxTfYJ/zwYuCj6PbZmkxXz9PeEmY+1a5O+qDc240obSrsQM7k0Hv/Rd\nOxTdkFIx5OnJvakA36AH1vyE3+VJzgmwvyseRUsXPT6CpvmOy9C0kae2+pC3\nhvfQrapYmDqyRqc287+fP0rIsm8o+cENZWv+c1hlaDcFYgR9O8v3k3GL3y2R\nyDHYmHH4LtSiK/1ufVQeO2Ag6Fb2dHjYCzxByxHeDXSDrJocbuXg7emwu97H\nG8xKlh9hfa6B45OGLLrSZm/9OhtCWMIIDyqPv264HaktyJSJukAeXpGhhTzS\nknYBpN5oZsWvCycXZFxHE8VAa00s2N17kaqMtOL7dgsWfwhJLH+eMJL/EVTW\nnvmagE4+wiS9C94AOIbGMx+8v2UFwfPbElxoBXzA2hEAYh6n5ux22Qcw3Hji\njEZoFQDhicU1tI/mCIhHbqPu4HEg5lsX7RB4p0/fPU0k8H7XmL6yvRcblYp1\nTGmPCVgSANPx2mHLQGy5ikDE6AmehkhkPk7vwaRQO2/QCZZjafqKvxSmwcJI\n4l43\r\n=xKqZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.7-hotfixes-2d29c2-kol4e5ld_1620803253691_0.7806240587607034","host":"s3://npm-registry-packages"}},"2.3.7-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.7-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.7-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"86e6d93bfac731f846dac5294f6ccd403da50d90","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.7-beta.1.tgz","fileCount":309,"integrity":"sha512-A9gCMGiaBbg4c+C4fVRdlxj7IisDe3gfDUJ4zFuxmdcasGVddG7Y8A43ZyHcsTW8DsFB5vO2/sRpdA1rCcF49Q==","signatures":[{"sig":"MEUCIQDHDZ1kDEM+rBF2g9PaMpYgnXjBneV02wnpjiaB+KJX5wIgNBTlh+D/r3xbBmeERhudsSV36rUktNu3Li85bMgPxfo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm36/CRA9TVsSAnZWagAATEQQAItE+7Z8ygKThwNHGFL7\nBmPVbVCgJxmts5ScUSZUYeb00EUSJOY4M1AJypJ6/emH2kCyajEbcJyCgmC+\nKr5xSMNOCVs9q7BDqU8JhsBpZLSIbLKm/y56Bfl5v/xKVI8Jv9fVM96QvpKl\nx1c51fnPjCTRnMskW0/yj9lyQTBpcqdB2BGIemJ+EnwHfLD4cGlGEYwO9oqS\ni/IULV4+Hw+Nv5LgCQaFQpeHl+6Ano5VzKBnkhFlwxNVxytaiVlQxocZ7ry0\ngWt1nRleZ9Y4nrNLrPNwEnKoxXPS/pk9cZImgnArknKQdaiT8HXIcjnzV9M+\nAQleFeADU4fTK1FQMXupGQ2zEmwKfzj0gsKUzcKKR7twMgj6j1Adlb3ZpgOl\nzojCNymqRLWkILJTwa5XrqueEqgcaEZdnRinykrDXzpSKTNMLbWZWAFnecka\nl2B6DST2yHuT9QiHlLja9cWn8Fkr+i3WI5cCqgFHkZ816OnG6Xy0/Y+l11wD\nMT2HPTn1vRzcd+fttC9SOmQ9ofL9lanYKGgMssyBTW5kymhK6l1NUL4Fdefv\n0oZEVdtZ2+UKGe6A7x9r2iGwbc8MkpWaOTcPzm2wOZnvW3BJFHigIt5Hr340\nq4oTyU0GdZtycyttHBQneelwRgGfyjEny3GwasGdIZrRZLwwkLHM0OYth2pk\ny/jL\r\n=MILa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.7-beta.1_1620803263170_0.057685971051761875","host":"s3://npm-registry-packages"}},"2.3.7-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.7-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.7-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fefda2ab54b1afb84a97eb3cb917c3cfe7bbba2c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.7-alpha.1.tgz","fileCount":309,"integrity":"sha512-qqkI4FQKHgGMk5LBzWHOIrirVg7pebM/KxR7rt4YZjLSqe3H2JXDtEsmBeYEEO6ZcBjpRS5KpV+zvsu+zMRNXg==","signatures":[{"sig":"MEUCIFFvn6pKzbsJN5e2Pv1sMm/2VRedRd4W3NWztbaEFfnaAiEArMe/Gl80PJ8Hc34ah1JTq49gS/TBx9SBn60G4ZYiBAk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1549898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm37iCRA9TVsSAnZWagAAgt4P/RJ/3fxGLs8fxUD62n0M\n4V304AUmnx16fKX8MFPhU3sIcC4CJh8HsFF9F37c366Void/cKUqwvCK024D\npCgN1lzvS8NpldpScojmlsQndy+H10SSxoNpUZ4WgNf4i+/xOkzh/6v8rpWS\n2L3WBg/r1CLBAeYmvo2ABIRn9mLZlxa4ZobObnxpF2SYvHA7QvYsAqpP5mLz\nN2VUPEt7cHg7ywkSdAe4ihMDzEpbM+Bi5Zb7DcSqFQyT+ACK6TXKTSiNqFZH\nzFWDgVi/T67+0P7uZ5KQFfCc/P7qzKVXKt1MRPncuPtGGNr7Q6/OTdcmUx6a\nvyuvDPTjIt+1U+VDRxyCRNOVM3utCbdqh9v2lRVfe8q/jW97UvqF5R+2pvRb\nG3VDQDImPpZkCHJPYNo96F8hYDm4X5Fh0LyNxqx/gfWXNdEN5IsjeNKKIzMa\nm8z8rRcd1DcOh1tj7BUgQ8SnlQJ1xe9IvHEbz+yEeilLeB/6Y4hbvjymPnfN\nQ4HFQzsH3YWhU20IF870OuRpAIlUEOTVh3KxwUAhg7XJ+IuoF14Nhe8F6dOp\nJSiT0hkr8WRACSjHnyWCqsukpmyYbiJjvu+BM3xvkituwLkFlf7q4QT7hwN1\nt59VLi0dOma8rPkB3DvJ+HcC0OeQK+2O9PKuCH5DS1F9usLtgxK67YnIanzw\ne8pY\r\n=K4Ej\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.7-alpha.1_1620803298133_0.7684194387529537","host":"s3://npm-registry-packages"}},"2.3.7-hotfix-eb827c-kolbx157":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.7-hotfix-eb827c-kolbx157","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.7-hotfix-eb827c-kolbx157","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bfce519fadb907fb2503bc98f6a83699dbdc6b53","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.7-hotfix-eb827c-kolbx157.tgz","fileCount":309,"integrity":"sha512-aE8/BJafJ+yVfUNZpPG8E5IsNp7kAAcHsVhcRh4PAHUGvLkZtYRY/ewbOyefgdEue4ia1V2dVBN+YwDv+FqGDw==","signatures":[{"sig":"MEQCIFQvjKChVOJES6PpLT/W8fwmofbKpRlSyXVki7rgVLL0AiBqsdDWlKVb1APRWBbKa3aCVqP/91VDGzVOCPM+K6udWw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1552091,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm7AZCRA9TVsSAnZWagAAK8MP/3xBYRqCpa8qBnz7j7u9\nkV+GdalEyLz17G4FQcbgjMq31I+vAT6DUuHE5UHRCUfjlzSIJ/N0+7A8lh3v\n9Fd2/9vYk1mKG3xCuTWlB0tgVdn5v0UqMcxVKqyrLyoRCgBvRIlcp9mCdIn4\nfq7WLE+ntPZrrocSNlPgyOr/YYR5NnX5bkuEtArKgzZ6N7rbxCasNRIysH9+\nmObyDJiu92dpMNbrcvCsjSa53KVnUc9+78Dpfe9r7SKzBOJOCXIw6ARNPwFI\njrXumaQnKIjpKB4ry716Vg2VdKkqM4K1l1FMCyXtsKt+3JcUmumh3hzczBIr\nimoG5Un0rCPwDU8JqgGxOf13ZEiq1tFVMBEr/jfcpwVKMrn04nn/bOFqdhvK\njr9oj28J6Q8bPbmyQYIyIamxwHaWll535/sQqLznM6sczvpYUWX58mz+RCxs\n+IDIpqf0A0ZJT5elehG1YQ8CHrfiiX3w2LqR1NK4e6s8Dk5Sge+e6eUiTwKu\nKMN82pMFfxIHZMgtKDN8dzn7/5E3Q5y04L7fmA4Vv/onoOPW1yXOSNDneoAm\ngvZGKDGr3QuwBJmrdTQIJNkvKPovidIB19P//vRzQ36Tc4+Gr62sv0sl0W+p\nQPUzMpWpRoW/6XO72kQu3FWohjM+jQy+LBXsRR/+GFzLQMyYdTpVYiq8oI6j\nctvb\r\n=QDvj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.7-hotfix-eb827c-kolbx157_1620815896856_0.8282716421891054","host":"s3://npm-registry-packages"}},"2.3.7-hotfix-951eaf-kolg6ofd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.7-hotfix-951eaf-kolg6ofd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.7-hotfix-951eaf-kolg6ofd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"72bec9c20e4c5d23828c7a30b819c5feda3ffbcc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.7-hotfix-951eaf-kolg6ofd.tgz","fileCount":309,"integrity":"sha512-mS26QataQsxLTGGef1Fz/fn+s8XFLYpS9rYPlFT6Wj3yQ7OJ53o0QuobulK8jXnwVEsAreuCrU0ErDuQ3xU3eA==","signatures":[{"sig":"MEQCIBledYgwZ5JDT83sSQ649tFt1z1SXMmdgc+lhuxWMerXAiAL59Ahd/DjhqAZ1PXOnQ+bu2ot8eaRxSpIhykQ5yvxrA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm8wTCRA9TVsSAnZWagAAP2oP/3Dc7psZkFOWpM/A7XG8\nJ+GSPsQkIjF/Q3DUlrQVGPU4h7I74HpOgf8Nzrdy7W6e/ylH6hLqPkktCfeZ\nMj/Yx7X3N5clp2+laEKWziQ1k7Y6W+NGOKZvcqg95/9psgqDIjDaPpR38KSu\nZFfbeJB2CKZuSrVNCbDB/SZe+/6VPcvb9xCPsbZbephMG3+0qpOOEenHT77h\nJawIrKIKnWqBBHrQ3Ep6jv0PrZpkbQLTeYN1aerqGBt74EQHs2xNXk/pSHs2\nQ3Pv0GrCaT0sCDSAIBwSx6P5yuDpmuWLS+eaq54x397Nf6hghJLDwqzafZCB\nRTolUrj7HdONw4MeIY161RpJhudk4qTDdvqDwG1Y8ia2Zv2wPqtauy+vlH1l\nFXMO59LY3jowOLDmDtmtSWciQ/vgOfLke8t3X8liyovrVazP0Oy2m6HgAmbU\nVlWTKZeO1p1Gla+oQJ+pRyZ+85LrLJMnqGJUVX0xHxgNfk/kWWeaX/d01Vyp\nrhJwk5V8Nrf+1sf29rP8MuGVdWiX1xVvF8aHMoioKAf+rj0ZtWFiDQ0LElmc\nQ4mVfiyIoYaYEsRy0UT24V3PYBtdrdlahM+3/+QE8wwjUxAsj3Pnliy2EaLg\n/uJR/YM9VI7j/6aLBnZhhDZwxQa3R37GPn928sK3ytpHJvIHt9E1UVAfnUSH\nLsmm\r\n=4tVQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.7-hotfix-951eaf-kolg6ofd_1620823059154_0.5095410078212863","host":"s3://npm-registry-packages"}},"2.3.7-hotfix-9ebdac-kolgwpab":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.7-hotfix-9ebdac-kolgwpab","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.7-hotfix-9ebdac-kolgwpab","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8c3d586950723b6fc7dfd15f93e1559239cbd814","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.7-hotfix-9ebdac-kolgwpab.tgz","fileCount":309,"integrity":"sha512-Cotc1y8y29R4QWp0LnKIuGpm6jdRdwSxbTMe8cLxEk/DyAZ6Li558SwvxixMOxSjGW9NMKg7TQiT9mji0NKV7w==","signatures":[{"sig":"MEQCID+95ossHkS5c1WRTc8NiEbr5YMpNBqEg4VzMsBuBwkeAiAEWDlg5FihC6VMpIAxtOg9Bb0lky9+4omiMxp+Sbe4mQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm9DMCRA9TVsSAnZWagAA6AgQAJkC6LPga7pRdsoF7jDl\nbNATrQnvtiVsNQ9AKutUfhuD77CZIHO22FbbcV7aTBQBCQ+LYuA6LRdGgYR6\nxkhl81ryxiHfxVp8IpFseYz1nxZqdc6AAUBXdka/qZ9sPER2Av5sWEnxi/Cs\nVJYwCMYsOZWnPWjnzETbuqcpaMy+GhrrQstdWypGUmuC+T2GOwG6gca6A7EE\n5jyU2VxeLgMTRsEwqGJiGkwZv4Z02UV4tRseKs3tpcMbEojs/7Zwe6pYBnFf\nvmUM0c4ulLlK4qRZva6zVT2Q0/QnJHO3njyA+wB2ryHruSpkpqm9NTXzHWUy\noeKywiU4ol+Zp8yGfE8UWPNxCnq46pP3mzApROl0DtTs+HicMaAl/yysG/L7\nEMJz+x16gAcZNp13SnIfZWnv2SNgTv4xww3PEAoIs54ow+0FvftA2rDX35Q2\nleoQrquISQMDAcc1ZVt0Uu0fg+qAZogMFOISKIqVbLF+GwsIKUk8oqUFWclD\n2HCZw88yAag6brVNNqDdvZkxaUQ0OQQ361qOOEDXSR5y/9Uicnt4OBXtLU2l\nNJdHT4EmwrK9+iev9AQTJMTUcERIz6hrYABnM3HxIpz9ghvbym1uM1VOUEku\nTxqqigjT87tnbkLj+j1dshRjBEm1CvXw3gVGxz7b2jj6bBgybpb6jYj0e0zZ\n0P38\r\n=NtcC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.7-hotfix-9ebdac-kolgwpab_1620824268042_0.7233235258122299","host":"s3://npm-registry-packages"}},"2.3.7-hotfix-282941-kolhlf64":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.7-hotfix-282941-kolhlf64","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.7-hotfix-282941-kolhlf64","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4eb840dccbec0f5cf6bc7e8a1b4da4863b02ed7e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.7-hotfix-282941-kolhlf64.tgz","fileCount":309,"integrity":"sha512-pcI5Q9tqdbCfODXhnm75wAAIs8wZMFFiBXCTzHcfwdGMmoy5i8YXPotN6RppA7XA3N0PXU3x/O0ssOToMvMTGA==","signatures":[{"sig":"MEUCIQDTTDEwSrVe1eCTV2jKaTh04L7iMBMRofAGQUZgvc8G6wIgP3Q2YgGIzIY9is7hmhHAvsrXw06SJKIoUawi8Vn3Mac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm9VSCRA9TVsSAnZWagAAmGwP/3NVwF/5ztiZjHwrVW6C\nHxjom+oQBrCHfjFSYnOZITgOh/sIf9AXDHsQ8Dkh37SxZARDEurCO7Pui9+5\nBqHmU5uhdtxVZ+0t0gBljtWwstl0jUHCNgxSVOU2XwkFFtie5UIdF0t/QQn+\n5UzRtBbcUtNgXb6KMEjwNNCHSfYCMXSEKzxVXfg/5fvvfvc3QyjY5UHxY7xc\neda/MUuxMMjQg0DwlkBxGMPOg+InZ3kTTdCbTlDUIXKYafFTs44GDhipwm47\nFB8jj66XOOP31P1feXcKAiNp+dKtKoaoCEA9rPBvll6gAk3pD+BZJIO9cgHa\nrwxrMNzzyGMHTGMazSJ0haSZ7ydqudi33cOO9O39Y02QEDEQfCNLVHlgBCAt\nJucKEXlKMurnQ9v2AqUQt0Sf1GRPAlwGbO3iQTBeIGScCxdqCVrnvfMagHRR\nx6eY1X7XeFBDhrc32bD3/AHpprhng44lELMVuR3btf89QSR8poDubbbobVbc\nbjBR9QrZ2/+n+tTBm7wDcxo/2ICmVhz9x2Wh9p4S7bRCI2wOK3GQSpylkWfY\nCcxfNr8wm3ndn0yOMFmVpnpsmEeczcSHeYhhT3GDBDJa626L4HH4pV8wqFnm\n5wZicTYGlmRJ4EREOCOO5fSA6SxtRDSz7vkQWIjFPKHWO9cF+bev30G+EU6e\nWyQA\r\n=MiZ4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.7-hotfix-282941-kolhlf64_1620825426230_0.5612341856981282","host":"s3://npm-registry-packages"}},"2.3.8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"75288c8a2f66ee89dd62bc78d305553ea1f3b6f4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8.tgz","fileCount":309,"integrity":"sha512-5keDOQSNGpGxB/O5AAWfrjdVlRMhScrpzn6/B7kXXWL0LBd4jun488ND1cU6gMNCAryrtWGUN54CYlE2Awr5Hw==","signatures":[{"sig":"MEYCIQCN0V4VnDTd4MzziP4AJUncaJCUYwYoK6NyiGE0n+8M7QIhAKyv18w2hFKmaxC21RwzjkVcr5nUR5Z/qfOPkEJMMxRi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1548444,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm+08CRA9TVsSAnZWagAAyJ8P/is/4AAb6yXCR49cadr0\nbOT4iIFDhWvZy1z+coEANUGV7eZW8keF1BxTvawQ76cjt8wM4iylT28q5Lz7\n7o+jU7K+ti5TIAC+zBpWSTf+sjEFlKFE2ld51myiTSX0ILlj2zDZXXyaNWGS\nf+cXdGHfPhCnkHtBQFU1E+HnN16KxaDCKtYhOIpYml/3kKL4ud1ErJErBWUe\neDwX3NAM96oNImKhzFhhKplUDYCltX1vEhAJ4WVPUBI7O0faCH8oDnJDOKLB\n5EYq4Z0MAI12hlWRPtM6UGLHNgRQC7ZBtRTq0yGNNVNmqtsfoJZDDshIvtta\n3mS6LKpwWGFMQIxilmdKO5jkHpyyz3omfcM+vaqDSZE9zsVcvpMvDEl2/4Bj\nIygmeQPH08sxo7qU8i725k0pgnfxFYYD/TDSe5hMI37DomC49bTalSNrdHVm\nrf4tDzzzrDKoOPn5o8vuLBhKdPIDBAvUdsaiKu2tDsrmBHZmFUDpWm8wXcYW\n59eO0xk4xNm6i5JRSlOJunRXQ7dxBIWdzv8syGIpdd3yu9pgi7/qu+O6EGtx\n2+pB/g3gHdqUyPkPSzH7wWQr1KqhQq3aibUenDlE4mPc4qLgKbtvXe6plCrm\nMkctm6Mpf55wWc3ME/WV9IirviyZ4rXCdPojDomzfdfJ9JOngCLczh2Kxd6y\na/vb\r\n=PZV6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8_1620831547897_0.03944958759104056","host":"s3://npm-registry-packages"}},"2.3.8-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b9ed345f5f7320421be6c6283d446a6f6b0589a2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-beta.1.tgz","fileCount":309,"integrity":"sha512-0s5yIXvI4QVvqyKycnOH5V5Ab7zHi28j7yOh2JP5P3A3ZDUDZPxWrvzh1GDPPnvTmcKdQhfAkBmUhv/XP3znHw==","signatures":[{"sig":"MEYCIQDt2nOmi1lo/TV2d1lh7/72GLFLde/GFfZCaWcBd9F/6QIhAJp/zqstlatQSEsRFDdpP4WZd+S+EotbmPQB2kDJObLM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1548451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm/BFCRA9TVsSAnZWagAAOeoQAJJraDUhAsfieOx5S0yZ\nVJYi8e9uJ7VeF4VuqWu2nsgFOWdJsqJPmGIATHl2k/yfm59cz76Ys3Rz9TNI\nLcaARKdtjyzPtqQoIkJjixCjL2cN16CvYhV8MWOyBIkDCMiJWp+5CUrI+DAl\nQCu0I+EcBdRrgX+lsJ2IVP0cpRLsYwTGYzoZhQTCLZyLOEBhzMLKWf5T1p1H\nQ11NjMFKWuJ7pZvWsyJpqRHY/ifZMmGTvi4LovV4zN+CqcPRF2R96Najb/N4\ns/OT29l7EXWv7KyqV+hooerZLfKj+e0pkQUx/xyZusEEROkVSh5AxsE9EL64\nbE3A5u04DyCOYYsdy/gG0qdDxXPuoUzbB/f4I0R/RONAYdIGRfWAOrMiml0h\nQXky0/UiZDhydQGdZ03RCWaYW8UDcjSCJ6xfOngc/thDBkkPun/agaocswau\nBWTVIoF7CDN1KQH3urdANIGfxffoBvcPe9/DejIsIo7sNFEdAEumkciYSH3w\nk1N9zVRlmFCxd2aZ/ynvEv7iiuby1jXFLAlIIaSaigP8X2soZMKKWXBIIoeV\nkDsBZIR+T0BDrarni8VAvxNtbPbCn4zD2ZcW3tUypf9BYShomn5kFoOnJXGr\nF9RfcVaLWEapykneIpA5U5sBEXwNB+adDHNBnMecRSEGwu4J7ucN9d789/Oz\nx40d\r\n=jTHs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-beta.1_1620832325087_0.5829987194240733","host":"s3://npm-registry-packages"}},"2.3.8-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"62e87ebec2805d78636094b239d33c8e694258e9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-alpha.1.tgz","fileCount":309,"integrity":"sha512-M9LL6Gtya4gBKtPa4cu2ni2d2KEcOHe0JtFdNXYaDUIYPuXQbvyc0qcdxgW68GbiaWomhRbS5kVs8pZx6kqwNQ==","signatures":[{"sig":"MEYCIQDss5jaZlhJ9p/JDtsMRZHyeGrpa9GxbKpRaSheRSs3dQIhAPoiYe7zv5biX6kXPCizqo+cbHR2ONbK8PG6BjNdkMf1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1548452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm/BUCRA9TVsSAnZWagAA/qUP/RNmf5fieVjVlTXiu5RQ\naBANGu8DMTo606VfNFgxn4+dAVcqVGgUV7Ox7pFBemmd+lH7ANer+PUwLmB8\nHX6MsM3pe3bDUo82AXtjSmadjCRn/cBemb4eeeXJnqs4j4UMme/+T6ynAZzS\npfucVo9dJrtOflwNrcZ/J0fmqqsdhGiltfxiI5pTibzJaXNz9ve+8wQKtLMa\n47rgNzHJwvK5qIGydmkj/8dQw7Y2mpIHIUewKWI5K/L16Y9Z/3KR8Un6mVtW\nWWGAD12QUsmyitdOs++LIp+P1TDTbt5g8h4HjpbdL2FsXf+AMSGDB9xnR8uq\n8hKR/ZNCOREIPGY50IvlzRdQDF5CRwsajf3m/7wSr62cwK7vneMNOrcARVYz\nNCzOVhkR2Qh2VIyDJQRU7Keixu7CWV3PTgTGnB+0Qbb9WXll65Am90y7sGdh\ndmSrajHE2/BBjwPG1qDZwDouPS/hwOLMvILSwnT+7WTr2sVXsTgMYdAu8YKA\nPyK4I2RJYqIwXr4R8jBiz6QtyxJEeOdj9rJiXlkthflQ42RqCSlLmaEHf9tV\n4FeC+HMQBMy1jetJN+iHp1rTttNkfnq3+RbgjxT1lU+RWiU7HLtdqvin+uW4\nJxEeSf0NewGma0SV+8r/ndFuTk4SXQtcfz4s5m90qIPSx8r2eJLQHeTu8/Ms\ne5rD\r\n=nibb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-alpha.1_1620832339789_0.9500333514811239","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-f225a3-kosa87lf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-f225a3-kosa87lf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-f225a3-kosa87lf","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f1a17e4539d2b11622c0e1b3b147e0dd849c10e7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-f225a3-kosa87lf.tgz","fileCount":309,"integrity":"sha512-chwoAOLtl7JvRNPfHQLxEXNjcdbzZVDlMLyZLiLQ/+TvBYGwJC57lW67CCnlWE0ODNYkDEUeC/sV5dftZ/vGmA==","signatures":[{"sig":"MEQCIHDFynshIef0H1yPsYYxHo5KLnlC6U3TmmUr+U/BTqsnAiAg/c6TDPwrdE0coezLQ4as2vREZTwfGrKjsDmCXqKKKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1550645,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgohpZCRA9TVsSAnZWagAA8SgP/j/x3Z3VOiSFvBOcGsXC\ntWWhRBPKre7T1t/M6do+671LUGoTdsR5UajzMXOe5BSMimLzYkU0qE2RSPua\nU0HvpEETIoI3GJgeT7H32yC4wYxEEYhWNqzgJuX4bmB5hpXI24aXyFcx1lgq\nGJN8INRD+hjLwUu65mCSZkGs9wQFvj/jOkpxcoO6SfwAhveVYQmJ4ivrddzM\n3QCoXsTfGwQIJxjUR/JM1zGAAK5Pft/hyujWbWwruVMWd2dC+VPqqWVhPQ7Q\nmEmx2ixJd/O0GNH4Q4K7Sb8yWGNdU5mE1jZqhEcGMMb7Hqd5UAY4prNvH41u\nLT5LIXYXxVyKbDE8VJHo5jboBbsIVxqX9d0ShidAmnEcSM3CddwgwnNtAc1v\nvtaojfOfDv1830NaLwFk/YooaYXCoId7d8igzCLmjUnnwfXsLvBIcKStT4/V\nJrajTMRAWxnpIOGmtj/Nzk6TU9aXwzM/d7k6wzPiC0yKLPPkMzCJV/V5ly0g\n5XetZR1/vaKaHfItnR7cWMqPcNcTtjjYbXhvGwaxY7Rr8K1hLZcOn7timYYt\n9UQlFzZRyph7rx7SRS4XkFMP53Squ9ybXmYI7HAuOxK07ZGh8Q1DlD+1k7t/\n8kqXgeJEFmLz6Oc5v0OO9E/aNV+4V8aEsDLQ89TCsVcsKrkokVk/exTHaHpR\nUz54\r\n=Sgfa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-f225a3-kosa87lf_1621236312684_0.7269883303594689","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-a20ab2-koslo3b2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-a20ab2-koslo3b2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-a20ab2-koslo3b2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"65e1050faeee381501c6ffd8650ef2ee2fd1df79","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-a20ab2-koslo3b2.tgz","fileCount":309,"integrity":"sha512-8I8O5WgAkl6OA/uJPvdSzqWW6lRpTVA+9APJB3O36HEN1torlgB4wlyLpYN9CEbic3HB/LrJaJnyFsUcGqeS5w==","signatures":[{"sig":"MEUCIQCOxpDROYAOAEoel7rlQhapUxgdzCniRTwyw6FMOk1ZiAIgKjJF5PvuDYBYj8TZ2OOtlkA5FTM6qbsakLjJhb59Sao=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1550620,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgomVnCRA9TVsSAnZWagAAiMgP/iwG04uS6btkpxqnGJyi\nxfgk2EUp29QTP9d2XMJYCV+ry6Ecb4NWIwcDO347qlzgfqmTmmu0UoGDkRmk\nyJ6cS0AybJrJFDDd9wPK96i+phyIiOICRGpyk+jDM7nugeMPYnYXH9mCTJZG\nq8w+WSlO44ke8JiN6pAyOQ2Sl/8/VqWHfd0qvaXBoTtU72NzGoHq3CU5rBuN\nl/UynKC3RhWWmIPKCvHTD6kdX6AcVLlICFhs9mGMUzuOPT1puwImyQHwiL8S\nYStr8EEeEXwwIA8S08Hv213+Ofepn+og3a+wy7VUhMZfuMs3O9HTUOlt3gsl\ny/dbBdBTXdy2kauwZJ2EC/AMKupm3FYv6bjmeLj3Gifg0x3LKMghxEFU/UwY\nkkya1T3NL3OM2bSojBIYOIfW9vosnW9UL0HbKlACgADgewPoAKBwMyV9CY4f\nst/1xMeiHn9WROBYmWHVzgmDbmsO0eiC21OlXgyLx0T/W0nDMWX37mq1EUvB\nGya0Z7cau5C+1ezEVAlfUzm6yeqVtKRaiYPE/FQJ8qouOkPOOEYDJ9mgpeBB\nSkCCQor6Dui7X6GJizrChcOl4yOC/+L8tQ0bCFGFiT85myiW/TvpSNEIAMYy\nhBkB6S72VbubN0r01Nggg0thJ4qafvBOmaZCVDodYlObrqb/b+gwPUir2kDn\njhLX\r\n=7rPd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-a20ab2-koslo3b2_1621255527239_0.6291406952378207","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-300e09-kotr4v2h":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-300e09-kotr4v2h","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-300e09-kotr4v2h","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"80fe92fc450dc49e3565d8790cea9818f61a26c6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-300e09-kotr4v2h.tgz","fileCount":309,"integrity":"sha512-ytfX40VgolaTrxieLTSAa+aNHi0HBLXkJRkeZ7fx/tWr6grTv1PpIAdcrmCyjBS4NSXWMZhyTZN0+yow84k3xw==","signatures":[{"sig":"MEUCIQDf2qkGetJ4Qbxr+gP58aFwpO34U6jTmvYHOf6S1OLhuQIgZoaYF9OVbidvCM4anEFCHaX6aLDOX86qgEkELJj+NZo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1554058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo3V4CRA9TVsSAnZWagAAKWQP/iZvL64HfdAJTMkH0CNC\n0mxdFeoBnAKSF6/rAigbKGNhkqGMoUGF7ECBlGjssU2Id+8a1bECiGQJ2jGe\nV3x5Jzo7+4PUoHa1cWcekboxewxTPeLySQeDMhZ9Iku6vmv7edCm7MEEAA1O\noGz/QFOwM+lR463FsY740pPU9D5f471aT9j4W/+R19Oexrvf3MKIcYf3ANW+\n0ZF0MdnNSVJhpd2wLIKEr8OBujWngb96sHf6Lz+1yNbEDRBkesZqeXlsOMWw\nwEcqVsPbe4UtrnkfRcJUCOzeZolZjDZOX72/BFCy7Qo4DuY0hWy3tLdifFxR\nt5g7GNquyIbQd/nj614K2mRlKsOIW+RGR9FgJS7hcS4yhvLyTDyXBQyh7Eae\nBCwiIVAPLmGfvA2+nnn6VB+bBv1Gsx7KHV40DYEi0njMAERV1saolFnygn+8\ndo+SwRcYMZjm/CURz+QhV50jDj5/7l6+f2TEVdHQu5bF37+UYHamqT+VbfIH\ngWi4znHAVZEDUDGNP9blimepdFGG4pAptgzCgQhijDspXsyTkOTxO2cObmrL\ngDB0/VwYHCFz4peamnrnhxp3F9I0z4609CezVP2vZJFCJ5ZNxdOFmCJszEw2\n4IYc3WooHJX7NLilWXsapBXqukaMkbCPZJaUJ+//y/v0fB9Z6LLu996eD0WJ\nNgI5\r\n=Zyqw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~add_event-name_and_event-type_to_bpmn-event-message"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-300e09-kotr4v2h_1621325175512_0.8485391171851653","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-5a3586-kotr87q3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-5a3586-kotr87q3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-5a3586-kotr87q3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"60582b908ab9a5238be50b014bee7d11c22a9c7d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-5a3586-kotr87q3.tgz","fileCount":309,"integrity":"sha512-nHJGlmyY+Hv329Y2MbGa+6rL/UGoYbGfZR8ru0WaA+p8l/KTmcvSiWcAMNLi4APrQU9//yFyd7I3nsYJag5AGg==","signatures":[{"sig":"MEYCIQC6Y55yndoNNmKZsFYNz1aycQegHuvRe6dwlol9PDyR5wIhAJ3Z8BnHT3ACIChGPWA5TvAt7JIbbdPViXEXbMvCDeyR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1550815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo3YVCRA9TVsSAnZWagAA+rIP/01RLPGTKUW+s11f2sM0\nv1Mgdcab0hTO2yZaUb2OxZ4F93QIscBmPtL4VDSGb+CJJaD2BjW/ZMdcD7QW\nrQkC0cRlN+7R2EzWuZive7jlF42LHCG2iPhxDPd2sepWitQV1Hqvsdh4YpvZ\nkY8hHSDyahfXJUcsC9Too7dbqImi/CHHjEBb9QeN3Uu8MQjGBNSab1WIcnTM\n0hjVw3SWqc/HtlcIAmoklDj8yvO+NC0CfvZSW6dZWf6yofoM37bMTWpcjoWM\nY1s/0r4A4eAVSE4iYoAmh3TeeAaP1d59PkFOEAZ5Cuu9RGPVZFRpuFi6inpo\nNU9VObeYG5hgQZYJ3xZJ+JhlK4mFBGp72NOyG2SV43S6le/9ZfT6JFwEvKW/\nLAh1GDnykfIKjt1r1lmJacyv7qgqiyVpjnzJiyjjZ0sn7MjAlVLRilR1Zf2r\nf/HGySHN09+fHd3eoDtoHv3C1JbHKs0o1DDHXPNtmCtdeZQteF84KQ8oktAq\nA8im3cAY0SbdChRf4E/mwcW/W7A6Dthf2yx9OYKj2QwCwLLnN2FTzTdFU78a\ncIn9mswP/46/NBuyQFgFmYNmLQDY/mBtEfSvOJ/seqI7phhrwqyt5yMvoxWj\nZjJ3MZc5nXUkTZrmES0NMDIDXtg65NTF71SyA8f6AEypzv1JXv4q40D0wry+\nln+q\r\n=D/dE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-5a3586-kotr87q3_1621325333051_0.06767214721719217","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-29dbd1-kottuubh":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-29dbd1-kottuubh","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-29dbd1-kottuubh","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"32281fc403e7a10b709cb07a37164d548444bcf3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-29dbd1-kottuubh.tgz","fileCount":309,"integrity":"sha512-bryDB64wE7pIP/gGkqg2zAVKnbrkrC+/sRpF8nbphTxDA+YyeVTPOP8eU2hgPYTE0XK0dBpZRWzlwKXo1CqG+w==","signatures":[{"sig":"MEQCIEqMsyOVBIxGT7TnkztGc/Sr+x+AHAY5qO7bbmXmgLLoAiB1OBJkOm5XBvW2W8+y3Cjo+FYuccHHJQBeWd8lYrKUpQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1550552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo4dXCRA9TVsSAnZWagAA3HsP/185LSZaHJvSpQKTLha/\np05xGUBqri1iFxkla55i0z4giHOeFRVjbDxmAbCRpj4YLCgqK1+709BOD1/m\noUcCMvzIxbz/j3X+pwKf0llrgHD6ey+8n4B6ftUKEYIVGJ7hepdvYOSfkur0\nY3/cFhkmgLXBjXyh29dzW4orZ255s2JEnHet7i0oaFmkM/bBE/YRlcTlh3RA\nhFCkH+58JPQE9BBzyFbf1FxwELgKeAVMGF6Q4QWkjN5aGrfIxcLlCFfLXwRX\nZlD9AD3TQgAf+tf5ocvzAD/Y476ccghxwMqx8JnliUqffQKPJQctPmDGOXK1\n+rEPAiOUUWVPTo4MV2C+tS4rROVsxNQ3OPHmsd9BLGkrqtFPSh2GKc57BLTX\nK3KHTAWXkgLaH7LVUvMMP3EOOEEcVKTSHZaV161E5SUUKmL/jJy+5wnxrbPL\nQ4/OoZlI0Sxi8UYohrKi+vgbkBezioDB/TpNPFphlTLAz18NhbXomNpOJYgM\nZfQFKBeJvm45sP0dIXBgNi9Hnb+yM+v3RNlZt9Tg/GhxRMlmoR3+lcXqH1P1\nsUd5iT9DYsBkv5U0rh+MUUGOHVItnlWexbSILgyIBKikueQwQIcSLwOimvgM\ncSj44PC0sUZJTvlLu9cV6TTqRQOZrScb1lzwwcg5VYS+hk7NAi0dwvVOShbI\nmE0k\r\n=SKRi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-29dbd1-kottuubh_1621329751047_0.9941068289124266","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-5bca41-kottzutq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-5bca41-kottzutq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-5bca41-kottzutq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a4e3f90f28bb8bc7ef4fb88a80047ab8baab6ec0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-5bca41-kottzutq.tgz","fileCount":309,"integrity":"sha512-nG5dx3iBzaznj0pwi99lvSmSMwifrALUx28P9LyDwVIre87kGGYFwTQ3hu/LrgKV1cGR2PIFW7gxoRQ83yi1Ng==","signatures":[{"sig":"MEQCIDPBtEhhWw3Z3n/H1fbmQGE3PKBABjeSr47OXJFgGuRIAiAzvFhgcYuEFNoaXlFux1yVeEaGBIEE5jxAKta81MKQVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1550412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo4hACRA9TVsSAnZWagAAcE8P/iiZ5oodndRoW7mPscqk\nTZuc7LLF/B8ZZPsbZlS15Vs7QOPHTonBkHyDHPTSGfArDC9zSYJIc8NmaFpY\n7PmZKHxQWauCsG30rm0z+/F5YtRnij/oSkVB7Kq1NclntR9ql3ePALRZjKSB\nUr9GRWhDGF8zt53xjHk8BYcM/cX96LBdXC0BMWw37Ua5pYv16TnFgFR6oaw6\nzjpViBo/oPKo9MuNiFAqU1+smfZmG0qSwHogynLTqmvc5W3B662RpuNijd/b\n4IUrKHxUCsnk4yS8sDsQAr6U9L7Kuic72IS5HQMC2tQEgkTAkEnq3lPeLGU+\nRXvF9JcZjjy/Sz1S71//Wwu2G65iRu0FxgCNEgRztge7HVj9uRHNk8GLhI5L\n5aoSdoRWkM0pYvvBliLSlGmcHjzFNsXUd3lnpa3R1wl2QcEoc9XFgy93k69P\nYTXBSEw7ly2NeCs9JcE9EIxAlulyVcnHIOUgd4sz+18ftLK9DRiSriOmElbq\ncBO/qouocTLLvFElB/Pr7Q6ujtPjOIhAGsk3ToCJhfR/Po2x6jZnNpUg5Pqz\naHUDbmwiV/uCd045v79AafohSeTI8s83wV6AmECkvzSRphX7QtVpH+OoQbWG\nRdj0ojClVsIMaOGmJQcbBauXmvpm4VOHdhusw5NMmBycBgp3miWB7d80wNsB\nO297\r\n=Omi3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-5bca41-kottzutq_1621329984194_0.7797453189631105","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-4b91c0-kou5gu2k":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-4b91c0-kou5gu2k","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-4b91c0-kou5gu2k","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b415444c57d51f4f5bd656abeaa6aa6e99587cbd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-4b91c0-kou5gu2k.tgz","fileCount":309,"integrity":"sha512-cgYjagplHEqoLSXe7G7qrU96E9CF3lY5MuZ0bdgfcVzQN6Q0tlfpfsGqzqaMmvFFmgEuBboR3ONIlpc0hJ+TCw==","signatures":[{"sig":"MEUCIEpaN43m/OrzT0cDeoU5irGiYNOlgTV8+mi3ne2CLdxrAiEAn3uF9Uno0zCwa/J41BGdlG/zGzBydZasrMWcU1oePU8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1555807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo9OFCRA9TVsSAnZWagAA3qIP/RCu5tTf9AYR7cw0sBT1\njTxITkPTM4B/ciNP7o2cYJ5DGwhRDB0x2JOf48Mkam/yyGycl82Q6AGhNGHj\nlBFG7oANXO7DDfVdtysKbqus1OL0FDrYIGgzIAGfNw7UnBloQ+TbtCzQKHEh\neUAZpiFz13WqO2HlDIPm3DBkyksB74NtqbUi8+I2rUSCkA+SZyAzA5sy12Zr\n3eLykYSTPj0oR/FkrMC6FoReIsxE5kb/ym4e4qbiuIJ5nDXBBZIPVoJR+lWL\nB3a3S7s5Sv/SqH0KCWQ5sIWhsmYbyZO0j/ApbaEHqDi8FuC7GLZlSo9TEHa9\nBhWpSQ8XZ5NZQF0ToixAw0fwG8HR2fhlpdDMOrxBvjzQfoE3UwwhTwLIry3v\nJu9EpZNR9QZJX8wd9EGCkGzaFesmB3Q+uWkB6/tgGWQHCO9gQigvJhGbyddt\n+L8B0finWlk3RE5fr9ymKm0IwW7CEX3uvGMKKmK2eIkfKx5qkGDt7PIHXQjT\noBSDsZoKEbzRJVyj6/YO9+7MW3nQnv5LdTFQjjyG7J4qaSeBPmw2nK+Kk4sK\nvy46QUaPV5QRRmE8p+/Ob1+o+rf5rp7L265yLI2g40wkYTcp8b627q0I3+6Z\nFUzkRfRIK3CEO4aPf7q3ewVxUWPsHBpDDDPJS6ftcpdR39sDO7/6jLfz+xuo\ngw04\r\n=RKya\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~add_event-name_and_event-type_to_bpmn-event-message"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-4b91c0-kou5gu2k_1621349252950_0.4272651021352005","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-3944cb-kou86pkl":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-3944cb-kou86pkl","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-3944cb-kou86pkl","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5603ff29d5bdd59bcf9df74e85fbcedc2d65a7b4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-3944cb-kou86pkl.tgz","fileCount":309,"integrity":"sha512-UzIuXk0J2Olo/6MVWOeERjkQsHsGJCfEUU1WCg+J4AGacR7R6APSm0cRKP29UQC6P8YZx88ZJpi+P1j1Nt2HyA==","signatures":[{"sig":"MEUCIQDcp5eYIUlGieYBa/I80tO1LL8X3usL6z0lgRA3e6KsGgIgAK6OOqU8YZUcPgVBmKmN/HYf0ngjio+o8uklo62zGrw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1556333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo+VYCRA9TVsSAnZWagAAYnAP+gPsNCpJWVbHJ9/n/qXk\nS4wQpXEyC2CR8st37di2OtDHwXgHNyzqlJ/r0vvuB21lbxwxtbOzJY8k20we\nsMEZRK9UbBaELH9KSDZUdcNrLv0MswKBPhpe1vSdHLtThip/uMexN5ddbzEw\ns+a0SP8k7TlIoCvTLfLKx311OWQuigf9B37AF92A1Zqgmq+361dp7Luhmvse\n+hsH5XjcMdKWC83RyiDiYGlM1bcqOWcea/fJItHOQqlmP7BI5dXfQQynVJco\nJltpzRdkc7D7KXV1ZIWSev7WK9GyqrYj5eRwa9RQ88bl3/owP+QPjUhhW2aF\n3n459TOxQaNG3QkCUjtEFE28cR7iyO6Pyc8FUohIUD23Tu7O8ZgBt6iYu2Xi\nEzvEUg5F3niOKTj306E4iD59LlLE2pgtFg20a51YVBt0J7L/ftwxJ6vSqn1n\n+3Cr+304ZzduVlTCbfv5iXfD3LsxkI2SfgB1cMeQVgxUHck2cu1pgmVjYGDC\nKXARl8JdiKhZLv3lr1PfBaPWSI+mvPaz2KliWpfAwCCV4QHt6FOAqWmZ+zE4\nPgCqa3zYcr0v9lwKuKs4LHV+fXDHYuxl1NnNk3zH0IuVv8713HmBnNgq44Ko\nCaze4HPfpc/fs+TiMqhw3nZqz8yThpOIu/9rb3PsVVNkdb0i76vulHou+I7M\nzSnt\r\n=cgtX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~add_event-name_and_event-type_to_bpmn-event-message"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-3944cb-kou86pkl_1621353815627_0.26130810531915816","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-426feb-koud8l2s":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-426feb-koud8l2s","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-426feb-koud8l2s","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8852e1ce31c77f67f1f84fff04be594c6daea75f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-426feb-koud8l2s.tgz","fileCount":309,"integrity":"sha512-kxpzS4mK/492HBmebLP1SkBfZbR3JVhSFmQnM5TqrXOqROZHpr0TmeQ91slU4jlw3ifNniQHXnROQwpeI97K3g==","signatures":[{"sig":"MEYCIQCAKTAezU23hzgSKFWX7rNWSe2uBRFbMfjaON631/wzPAIhAK3z5wtsqwaTR6xrB0/Azy4CVCVrZwmVEpvjKLRZ105o","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1556565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpAaECRA9TVsSAnZWagAAaL8QAJv5KrBudHZnp8Hdn3xH\nmO8f2VU7e2VORek0+dAUT38PzdYhhKGpWpIyQBNGQGmpvZ4aA0J4ucvieDEg\nj2A/mnp5jvK/PXftpGPi7achNLRxUcyPwSsXDx4TKIqwj4ppKYm1TwbyOUDM\nQ1nf8Ebv/QoPhu/rzf8xYgvE4o97jXxLxGwQVP2XSKXwdbWS+8TcX2iRCfua\nrA3ko6Cno1vuY1/brKduHNX2tRZiaH6va7hT3ZgEghhcTI3Vb+PDNkA+CtWY\nwbDm3ciTpMoFe7PPHoarn8ZiARCB41H5oJJICm7swRcDzqq3JQszgwh5TvAh\nBlUdaKxDC4MkPq72uJMejZf+wvZSBBFeO9tylh9EkrXIwdRVLNBAPNCoI0nk\np5V2wVGnzUXdG0eZSLtLgIvarh48NJZLszNWJ1ixAkOc7TZVPBKwdZKjCMFf\nxfvGh5k8NcQLx2gXxk+2UN6Fcmo1KMtuVF/1Rt4Y/TD90Poq13BM9dFgA4sj\nDQ/VlCmt/8F7b1B3SNqzGG3dxHQvXPZ/skRrRRfu/XXkAC4PLLD1TiWkBBn0\nvSbVWQ3Snhp0Cuzh43qKOZZhWPdL0E5CrQytZzLch/vysjFa1nhO6GRE45/h\noQFi9W4aJF357W5oSAxR0p+YOWQgt9MbKdznqRUg1/DfM8H2x71z+kmxoj50\nc0g3\r\n=JNCR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~add_event-name_and_event-type_to_bpmn-event-message"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-426feb-koud8l2s_1621362307877_0.8890992803476834","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-94ae3b-kouffviv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-94ae3b-kouffviv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-94ae3b-kouffviv","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"161dd9d3f354ce7b369b2bfbadac9df2f9661f90","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-94ae3b-kouffviv.tgz","fileCount":309,"integrity":"sha512-zXMjDuUswknB7mp3It7mAYVmlgWpIHUdce1I+MrAVDVe6JEO4V4VL2fuWQUlWDuLiKU1XMrr4lcmYH904YX31Q==","signatures":[{"sig":"MEUCIQCyDDVnQj0/O8oBAxy6uxNpRZMhLvj8z4VrEPhBdgMozwIgJQtmOP0XEXayfE1d+vp7/tIMq04s7Y3coNjtHG9z7ys=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1557569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpBTwCRA9TVsSAnZWagAAjBYP/1Joxj226/Lxeg/nZR+I\nEMUjkXdey2cxG1MRw0iQvWmAEDfkEBuP2oYlm5T603l8QgpJGyt1HoHvZFI3\nphiAx69cIhnZEJAzsl3U7SGao9zGHL1l9CUmSfSq9DeHo8WczbVVt8qSMhQZ\n0/XBo7R63fAvlgFnADrzBKQtHwlVxIrqXQL1VI4XWIGvglGnu17yXHQ51LdH\naS6SdJZQkXlK9Z+sj+8sas2KAr7xl79Uu64P65fdV00dBw156oiebySW5kfD\nXPSGp89mFICbKMMbUFjvXM2Sz9T5ysj+M6yv5EcCvnZwhUk7vANH8+HuJoTg\nvWdL9FZXmwsqusB9mLU+ovFN7dl0w4fTfg8lEL1QGVQMlg50DsL+zLd8RQAW\nkLPJWBE6P51C34FBTaqi/PZ1Gijfj2V2Y0UJXbosO7JCbIUvM/hmRAm3THK0\nxBc6XVguOi1Z06a+2O8JAvZaaQuoGx+N5RoNmggELWxI8zfGNKlzYcfYgO+g\n5+YgaLlmm3aHGMGTu2ryrzaDHAQWt5YCkEIpC9PvO0vUF5hBwIkB2ZGyPhd5\npkbVJPQkM3cWFB3fQHQnZaT9D9VZlZhEmM/YU2stRGJn5m80YZDzyTP84zi1\nV3DgLf75XLSYcebu0tXaINkm1MB8+h/tMCtth3GBzWKRZWpRQhlPLLRHbqdW\nEGlM\r\n=LJck\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~add_event-name_and_event-type_to_bpmn-event-message"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-94ae3b-kouffviv_1621366000242_0.4060165299851439","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-05844c-koug338h":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-05844c-koug338h","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-05844c-koug338h","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2f8f9170effc5ac43b87a0519fc575262c26fbee","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-05844c-koug338h.tgz","fileCount":309,"integrity":"sha512-tdd10CiJmb+HOjWfud1FY7zkFxPzbcOAeMwYkZi+Pa7VxGyItywvJ5CNmTtFQFe8Uq8vcYxDfTFERlx1wIGlwg==","signatures":[{"sig":"MEUCIQDituiH6epeFgNLdc6cl9IhEOBTAHxYiE/tJwvc6X1qkgIgKelxmCQElOs5Dj/W4VOssclYT5MqV8OGfcJuZInWDu4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1557569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpBkrCRA9TVsSAnZWagAAHDsP/0Eze3RebFwfshHOojsK\nHJ5FSsUgDEZ99zlUyH2vzM/LRAO+HqH53jAAr0w8Mf5lBmIXrfHx/ecQWWh5\n4UgU37hrkGgl0/TPMStuycAgO6rCNFQKUuasTerRRgF8E6WpRRe13CAdp3gj\nudig6Skr67wdqBfWZC9siuEgvzPfZRjJTaBq5BySvrzDGaTzZmEGWHod7gm6\nyTT11iIEGk/CnF1jC9tBiA15fObzJ4Z0wPf6A2bPX4GgRRO0ZRpllS0iOWWJ\nbe30pkA3yulDJhT1PRE1t/k/Zhy9qRNKRSsjHcY1PuWiILYygNyzV1/gcduS\nTSCNryMDuJQFlTmGIvMWU7sKlXLTFoBS3FGj84LEl3JNDQiV+Y6eQRrfyKAN\nPbBtzq0GLPfyF5Nd2LT7enUGpGEs8cKQmH4wf+CndN3CbIn6Sp4xa99urVKO\nyjew8FzD1atnBvperTjfEjdY4Ohv3OqMbOQ48NlN7CqMrscquHnvXjgJyJFQ\naR5JnN+XOHlqrVfL2dLODYNNOulwV+G3kJQk9fF76xNRed74NCkxE0ay6vIc\nyPU80nTcdaxT0I7OI/UhlB7eH0ooXLs3gAhLMlN0vTWQvylMZguU2fdyH4e6\nKPID+xLr9Rk2YC1NCQXq/0fyEI8zXpR9cLhrGdHef1+rhpo0oNSQ4nqKE8KC\nZbxr\r\n=n4h1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~add_event-name_and_event-type_to_bpmn-event-message"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-05844c-koug338h_1621367083324_0.30860201005685894","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-0b6e86-kov73k77":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-0b6e86-kov73k77","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-0b6e86-kov73k77","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4c664b6d48a89e89d6776dcb253cd6ab832ee961","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-0b6e86-kov73k77.tgz","fileCount":309,"integrity":"sha512-vFBP9x79yXaFh01oZpgs+CK+nRODexhn/qRdDR7znTRBQshmyPSPCCYCo2XHC0oIe9fG+pe7b2/LdKubW4BaNA==","signatures":[{"sig":"MEYCIQCVUBW4JSad2kR4aLpg29Nr/vqK8O6LtlZZEnPz5G997gIhAM/foOKOdVUUO/JW+FHXaAoTkxk2f9AXWNt8QCnKCNZ9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1557519,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpMpsCRA9TVsSAnZWagAApe8P/RbU7NqKXO0NFKr/WJkJ\n70tqygk5qDednTEaie3tUD9mipyuseRUq1llKxAk4pVoCCKFeB3yv9Hy9m7j\no487GjQ3vnTW3/p34rz24W9RpROdb5YRfnLq+WU7Z9u0ZMQaVEjmKzGcr9/2\nG0SKW4eIxQyRaPbq2IXMqPsniLy53FaGwqLZ1NCoZI+Cs1tJRmpJYe/WtDZ7\nZV/J6YL1RlxvYNQ/0DYXWJeisWlLPFNXLrNp/EvfRiCtGJra0i2lsHIbuDMu\nMA4ZsAIA3lp5p3a+fGx9ki2yqOAKbhFJxy+b5XbLqRnt/RZdGvWP3W+vFngK\n6VoKW1L7oN9ZDKN0MC2+EV5wc2xCuf37BblzOmaJqLnyK/sXqJPjdFjSyTuT\nM4ppVwUqijZ9PrRAuEb+RZvor6S2c1NnsUMmbCxlcUjeOYH5EvjlJKDj6OBu\nzlEzXCVOfjjadOd5eS+Wo+JFLiYbceE9YcJgxRQ0ZJvyyEgjudMb5DHDyO0I\ntoNrm2ll7to3LMmpXUZI4l49rJLoyv36Ttk4LYJSKJ7/3clTeiBRf6d/eFsQ\nbxa9h5lOFut8fTBJasU4c4hoPZo5rONVmp0hlwtPpNc2wzYjdRdUDDdC4Orh\niptx3u+Q70aTekIS+nIHPFL3cU0fzmbU10QV3mM2azm7hXUDS5WsHachuL0Z\nH1Kl\r\n=pSHW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-0b6e86-kov73k77_1621412460151_0.035144981095347694","host":"s3://npm-registry-packages"}},"2.3.8-hotfixes-60341e-kov7jusi":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfixes-60341e-kov7jusi","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfixes-60341e-kov7jusi","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fa8cef8e6b51e77a2d429bddd2d3d93a54d24421","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfixes-60341e-kov7jusi.tgz","fileCount":309,"integrity":"sha512-fhm4hvagNaqYEo7gvnxgu9clKfmyUKDi9gbtGJ14DqLPQYen9Rl5TYrTn9Emq0jafdBYzMelL/7F0ylyXWAnWw==","signatures":[{"sig":"MEUCIFz0qfd90Ss8YUFFJBwaooim3Eb6lj0CX+d3S1XxFiqtAiEAto15Pufckk4uyynzQsDotw1W5Ko+eeork77ZTRybyOk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1557521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpM1fCRA9TVsSAnZWagAAJMoP/2P518yx9rIoHwqyY15y\n6DkEArrJ5rCH9k7Pq/D3SxQUEDPh492Hu1wgUH+Yw+ZTSGBw1wHqvGyAeBVn\nyPWgW9RO+d/0AHGtjfgJKtV0vExPpYZBKQaLPaRltk0UGWmJsDZXdAXqjq+j\nOYWNJBqk/a8cDs4jB8geOfHUrOq0LA29B7ghEgwBDofsiO3b1bA6xv6kdHSk\n1AIZtCcnKCC9EIqUel9QMmoQkPJ2+K5hQttWYASjd5Uji8WF76tvGdRhu6F9\nTCl6nK67dOUr/xSFrS+TbzRBUothCCS3F0eKIS2LgtW5Z54sCtMPMlaw8cee\nkvm7ursWoV7LivA7fQttZQt/UTjJR9O1DddCyyM3cPrY6cvIS/ooxZJl+asL\n/0tTZDh4CRz1T0WDtiREx9PQ6P+P/JkxYuXvfIABZBkkfmyDDWDpOjcD1fDF\n7BW2FZjPFqzVhutfT6+ZZHFDgz/rKFEX5lVsNVu6VxhteJCHPTN8+LHLVzsR\n7to/vvnlrnYAbY37ivHEdYvkCS8k2yailuUfrRMeDhMu8Mej/3557vfjHPHV\nO8ArTqU/gvzls95u90HaZD9cN2kRQVTp/q9ZwF27C6yfS/VuIG6v8QMioEaf\ntEX5L9ueXNWDhsr57bcECf5XL6epuaDTck5D3huU+bLGrbT+54Kq7UJiaZzZ\nIlIt\r\n=Md+o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfixes-60341e-kov7jusi_1621413214651_0.02839408912327812","host":"s3://npm-registry-packages"}},"2.3.8-hotfix-507462-kov90cbw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfix-507462-kov90cbw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfix-507462-kov90cbw","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"612057c6c2bb0cf3fe4a2a6589c956a880f182ec","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfix-507462-kov90cbw.tgz","fileCount":309,"integrity":"sha512-omA7cV4DLSMDpi1xCcmFRdBSa8RQ7ZyUymompLfzZ8hcofrEt1A1rcmXRXwyOkj/5oS/dzjGZVySZqsRGp05wg==","signatures":[{"sig":"MEQCIGkXhFBRXSNEhugQtcdWxohLCVD1c2usD1BBrfzBvgnMAiAUJlLvTLla6zzawHF9V//8utNRltO76EOobqYKP0BpTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpNbxCRA9TVsSAnZWagAAIdsP/j9AZvVFRqZErbjxs1c0\nrFiv8rajvQR26LFBd31M31nVrsvVeO3I4lv+kni5CPRabCL/KWHfwN/Qw7Il\n7u85l6ekDwvkP9vSRRz39abS3xxRmwRaokwFZ7EFoGaeTBkVMo3F0OkwlZTp\nNn97pLdzPaUukztp3HVS4EU0+CE7pen8OyY8pSkcSP6wb3tbowNgoBCZtxG9\nb4NWuxjr0jEJzhqeM0iOHD1XDz3CCNHYVE8/6/VepCy4VkZfU5zNSNvfMeyx\n2ZA2qaGtDzIfcnKNz3VQ2BqIQocIRrvwNIc7LK/RpzpX+JmQPkfhGsWidlE/\n4AOrNklOHIoWafB1qR3U5fl3zgUx4tiiy1BWql9bz4HHIgqAYGdKKu3DjWNL\nBSgcUC0nAlIr9H6sgaquWcn+Zr70bWW0XTbeyJfXdhmvpeCTx5g95GE30vK8\nvAHmZGqZT7MbJ0pBAyH23BbiEbr0m73wvQ4IVA5p7AbiQHwCZjUmj6pUM6z1\n4hgvBetIouFuMjlaRlnXwCyaUMnCwDBEB7yJzLlIcEW/6P8Zqvuxxe7vT0ar\nOns2vLv2SIzfGkb6mBkeJ+V923ARr1/ynPwPtihYBjdWcxhJlxkeoePTkTq/\nIIr5GhhCKkRh0aRl/ibQPqT+gkAceG/Vsxj9oNAXYh8p/ZVxFCnxvn7M0Dv2\n7+74\r\n=78cv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfix-507462-kov90cbw_1621415664504_0.6652829068290755","host":"s3://npm-registry-packages"}},"2.3.8-hotfixes-48e846-kov9fljd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.8-hotfixes-48e846-kov9fljd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.8-hotfixes-48e846-kov9fljd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dc993aa98184f8286826c9118b833426afb4e74f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.8-hotfixes-48e846-kov9fljd.tgz","fileCount":309,"integrity":"sha512-p98Q+tKxQBTvaxPHa2OGMr/kUg0VWp1QnWOcNBcTe0UFR/cgwIR6ksNRbEA/CL/PKVLoeZXxJIz7TU60w6s2/Q==","signatures":[{"sig":"MEUCIDFZ8Q3k0Vg7uO7L6XdP0x2g0C8/YDX52p2jnDg2/ePgAiEA+fhP/4l9rApnE4Nie7Ibha/auVNMln7vOSi5uAneRMc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpNm+CRA9TVsSAnZWagAAG2MP/15aL97xnN8SQzWidX46\n2aQxFgjFAAnb1rD8j2/n7lGH23ow1XlosYOK61BvveRwqVPEXN7FqpX9ZrM9\ngzuqvJqlORGgkyIB53cGGWYT6jb5z7Pg0BCFfPy42wqI0GQGOG3URnOaRDdm\n9Pw6YixOwp36nqbwipyFPUHMoFpDDgM2Bf3S6+icTQaXtPZsvdCsfLQNyz1G\nWeCZYkSBcjhtKSAhMMxMiiQ/SdITUPQgKJIyP+T/X5B0J9lzr31+mKFG06/o\n6RiOYeFhzJmA7zP39YZEfBLW1018b23pRYvQReiaUnajaynO0+MmAWCckKcT\n9pKeq157Q5iBbQCTg6VBZS1q9pOn54VgZeX1hH9D00w9XLAjZQQh1Hx/rBbv\nvGPUdkqb0mzcQmJnHifGnrdBnQgGRBp/uUdWQrYBjmwixXaDsgfsxTQUe7vj\nKPzwIc40xbTqZvp3TSg0KFD/eqX2To5bWwGQmQNEc5+R56v2wbqAMzfyBBfs\nNUmxSZQ38gEUVT1PZh0l3CzIaInHMgzT98Guw0Fb/aXoyfPsIUaKFElEXLdT\ngiHats8ri3X0gQI7D4o8glQcARawA1p52cI0edxneadgaBi6/wNSs1AX6Lhb\nYqx2lS/t3krPRfp1GtaaqjwxVa3tBN1TEJ/Dle5J2XcoOT6pQTZ1BLidKrY9\nkjE1\r\n=rfJ+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.8-hotfixes-48e846-kov9fljd_1621416381654_0.2248737485049006","host":"s3://npm-registry-packages"}},"2.3.9-hotfixes-b90e73-kovk6f3r":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.9-hotfixes-b90e73-kovk6f3r","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.9-hotfixes-b90e73-kovk6f3r","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2304bb696c7ff58ac2344f00968594c8d8b29857","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.9-hotfixes-b90e73-kovk6f3r.tgz","fileCount":309,"integrity":"sha512-Xw4y4bhK70jiasSJ5l69Xkwpf34/6ATS4mGbF8aHLqxWnRQALDgTo+AcNeC5jO5sZxq8HMKYq80tXfcfbZIuuw==","signatures":[{"sig":"MEUCIQCB+1JBL+SSbTri2QFw/hh2jnyJ6w8SuEOcfNW2vkviDgIgfLxPm1Lz1cmLvSm/t7+csFf7XRrpG02t7ZwyMXNW8og=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpSA4CRA9TVsSAnZWagAAYrkQAIkWXFIm4KyQ78Iw5KeH\njzEWyOHxcGNdsdjQ+FfDlCXY109Z29LmZg+HH9Ag7PiE3sMyEZQ0LcszrijQ\n5dvQ79KMA8LJVIeF7XQaPjDdO/5td91XmDO7Jkyxw4bh7bi6ijA59zItf4De\nf9ym0hJSdMq1H3ldAc7RHaph7Y7vsyKvPnctxpEpL+jbAxOwv8hzj0rDil+R\nc9gs10cxNmIBo6O3p+DkNs4sjTSjywP6m4QkQCoRWvS/qiAkmjfoIW3QLZeU\nuZF3+RRQ1DDZiOuwG0XigdBh89QSeWFDgPD8THMJ30alxcWXFoqcRTvmRzdP\nWHbZpm/AsFJZwgf2RESkgeVkua/EPb5a5QahRGVykJ4ZSKHnzvo7qhq/Rl/n\npfRLNIMF2yo1hmgqqi4pSQsJd3qLcgHRlYY+bzDrVsNuR2lL78tMd1+7XrKA\nfJRALXq3olDqNvHQ4l/O2OXTCFXE92DjWSb9kp47GVNmUNiSkD+FQ9vLqhME\nIfIEoD/hmAYFsdhjR6MRhbW/7yanOWY0YaXckZW8eSg5px6LOMpQO3PxnGgQ\nBItbnZAv66QYAuh0Tv4YeL4Ymh1C7wUsySj1wHoKWvMdhfisSLDVuuzdg/Vw\nf3ImPU1XUzxmVr1bsWllkzvwIct07i81nW6IOalfUTu0BwYzRF7+LfOtjdSy\noNg4\r\n=967c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.9-hotfixes-b90e73-kovk6f3r_1621434423562_0.7040226460313233","host":"s3://npm-registry-packages"}},"2.3.9-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.9-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.9-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e5306846421e31868c0b98a1c827397663eb67e6","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.9-alpha.1.tgz","fileCount":309,"integrity":"sha512-0nU7RIComY+/jH+luqWra7apFKtiz+FXEaV7KhW7EiwFqac/fA+cBcwiW49R3RIvhmZCGJFVWUXdf1PE/tGnpg==","signatures":[{"sig":"MEUCIHyKonOFdv+5zcXsStk/3uxPeshNOv9AalIEC+K6QmtzAiEAus1inA76zUCl2xPBqOd8ZDuGXdiyc5ar9FAbO1PjZuI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559446,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpSBMCRA9TVsSAnZWagAAgfwP/3ReLy6UWqgF1heaqdwT\n2GE5fuZZCGfHVKRJrtoOohVV/wXfiEK+IhHndFqzuGqAzq+Z+9qI7v+rmXCs\nXMGD6KZusAvP/2e3Zw1EFVAQq0MupVbiu3apuKalnCzHpkak4ta2lpxD7k6x\nc6P3hoN1d3kSBfXh2Qj2wIUBRovStxaGpiaHQW8CCvizMxcK4iJtrFO3kOeY\nzpGkH/wDt7HjQn6Dqnk+73z2I6KY0mOdZyqAvDwsecMMJa7CNhuwMRMy9onj\n7zHDt+nK+7R7PUzWmYNzcFpLALbe/5SNSkcZbW4klvcGW1rB2Bg4i93fLy+l\nNamTTWnBojNTDLnHwPWMVwotOLqmqVn9df8ddUH/spjjjTvBhklRK71DCyAY\n+qACm9/fuzVv9NvybpuJPOuxRU2KZSCqTYNVO61InMmQDTbYwp98JlxEm8f0\n/wq1rpB9xNnnAga7B6DgL67xhelRDqRoPare/q/9o4s8aaKh9qqSZQCZcfSA\nfL2u1crBN0Bc7WAV8chfqFUokBTx/hAy7Yvu0QsPGilr7Q5mZRItSUE+9vS2\nCNlEr64fny5PRGjEh3BmbBkDsxQx1bE1oNaiYSQzgaaKXHj4BsgzpkANHMYJ\n3+WhQTLgYiPGkNTJXXQBD4ldshnfaBaUsR7Fhw2UXNkQqs4wt8wMzUpZQb8M\ngvzV\r\n=z7lF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.9-alpha.1_1621434444176_0.005716228967065584","host":"s3://npm-registry-packages"}},"2.3.9-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.9-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.9-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dc46d30daefb878eb8b6bee94b2f94d2be6e79b0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.9-beta.1.tgz","fileCount":309,"integrity":"sha512-4MFaVbZIw47uG77L309ClzNat4pLSVTPj/PbL1LttCnCNOjH/MYgyihPd4x36GrBlFsq8A3K2sj1ozz4VWhm7w==","signatures":[{"sig":"MEUCIBK9V98Ofy8R6llhRrHvTRQC+gOZpAPaeWlw3jmYyh7RAiEA44UZbVEYy4Q/Q0gqr5nPS2tHpDm0ukD76cFDzSCnNVw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpSCLCRA9TVsSAnZWagAA10AP/3E1/zd0njAZ8QOoYgg+\nnvTjwjbUvzLs28x7T3I4tAxOye788N/i2By9cBJmkT+po8iPIPrnIbC1/qoe\nZOPJ8H761w9k4639rYK5Pwmic7WOjWcy9LnQvfYwQldEBVI0pmT+bnpJ6GJd\nP91fPFlsRrJ135J31C1EnaK/08VORgQdUBy7RlkTzYBWawWJAVtplwYkIGjz\nA8nuep7u1Xw+7hESRGoHfTy4LRGi74rf8zuzIW1NSnFAQuvvw7hJ+EuEYdci\n915SSNvaoF/oT5UKtaivL0+Gq1hALOqe1IP1Dgidm1B/zSUxk9aQCgddo5qQ\ncdSB+raFtmYwFfko1CeZwXDFASf2NnWCXv6+vFnNYmXek0TXHEjEr9k2HvmB\nRKBmYfQovYlqzuOuyumhfyDQaoaP31dohu2AqmdBDN+oEXxxb81BJmNqy5W8\nvR/6Amah19+HcSZIPvwD5tNjeIFrbbjLQv/PktDVX+VqmzGA2u9ePfzV7kmV\n7vZQ4walqqM7X3HSqyZJ6V9M6hcD1nuro3PMgVgC+tojw1kN2cGdO5z+wG//\no8+l4sey79Z16gk/MkRu6zZnre7YBHrbhVjbEXj6KwAFRCWjmqCyfdGwiQDe\nHtFHV1A5HTUFuEsrqKFVOrrcV49MNsnf6yuHY+ZOXjlzn6A1cbuI/Y7zxHVU\nQT7a\r\n=HPDx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.9-beta.1_1621434506664_0.8715249861824803","host":"s3://npm-registry-packages"}},"2.3.9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d4a5d7142846996ab7b3a8a1ceea225bb4cb52aa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.9.tgz","fileCount":309,"integrity":"sha512-By1eGLjFn/IHq+Kw+5kMuWEGsrgo6aLczJgIpHNfDF7vByPZh+wV2tSpwB9QmgZoDTxlnA8LwfW8gSIr0gA4wQ==","signatures":[{"sig":"MEQCICnp4YAPDfHJJJExagasrhQvlzOPrFqO5VpZLqann5b1AiBCa/h6nfF7yY5D/eUSd817wUGZ0PWvEbuBBJRjJJh86Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpSYYCRA9TVsSAnZWagAAmNAP/ik8oX8dj0uYRS++eZB3\n6ecAO5MEBpZ/a09XtrFojIHVYou6apX2K+OymubSL6k4TwUc0Mgdz2B+lR0T\nGnjmg1P0dH/LCzitWqr/Gxdy5KcyQQJTUl52ErNSH1sdlVjrhm3y3pE/oykq\nHjCrFnbhdRvmt8Qpfz0NRBb4dr0v8TiCexg+yOUMHEhwIIsG2ukdZRQZCX92\n4yNaU8Ov5iu7V+E7Od19YXdw015pxsOznMIGaLSshgEW5mndZPx9oAioYseA\nmZ/0wB2mb51QA3Al+4RpUYmv1/WtJV6REsqCw0a2pPlG4B2AihtsFYboWTYU\nLy3rpKpjoG6b6MzptBMDJ3V/tuYsTOqlfDGoES9NZxGB96NPLk9pUHpVjAtJ\n26FCgSAK0pyY8jNg+CTvwW5B8dfYbT1jp5rR4eZCsQMw7o7DOH0zZb+fAa1C\nUEQax/puOWPoUwykFLpbiVyF6e/IF3tDROIVKmAVnHGuCEum9+0WHw229K9+\nfnVs9XTx39w1iM5D0DbrByL7bktTLB+lJi++YQkhpgQDowRsW4D9IjWv+lbT\nts+hsbTdav/a/zy0p5DweZD/HNLb4f7vEVsXI9DQfxfFuUDy0u5y8KldeatI\n9odbbFiBIMvzAYlvH9uXUc2uEk0KwbvMvT5SiG++BX6fajMLs1ZRSPPsTf6+\ngKJy\r\n=OEFo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.9_1621435927822_0.36465211342710413","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-2197a2-kox1zok4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-2197a2-kox1zok4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-2197a2-kox1zok4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2379f845e1906d39ec440531bae6c63e8e346cc2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-2197a2-kox1zok4.tgz","fileCount":309,"integrity":"sha512-D/dQJNQhjH0C3MTZeEckgsaX8GqKNZcMXfQ3tnUYhXWhxBIypwAONUyVQLgqgk6ONJo9CugSVEK51KkRNKheBw==","signatures":[{"sig":"MEYCIQDMgnvUw+xefs2GdVPXrp5eHjB6q86lci1+gHUonGImXAIhALnTP1G3NQkhQM/F9QeNYdsZvU2tJ2qaKsexDOqkqcOm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpoFOCRA9TVsSAnZWagAA1OsP/2gtL1Xn7TiD/rNcj4mt\nkoc3DYH+fWzs2jLhuoncaMOCLj9VFtL4bqEbjKRTucNi8cSeVQCb5LixtG8S\nKf2uTpj0n2GAPuqWNS0xszb/iVOxb+nRmAWC9Ip+KaLySQxQkumtGN0Cs4dT\n7xUYWQC6Yp/BXj2/3fP/c6Pl1DLtXLGlv/4bh8cdQluKUrvTmL3T2OfHshT1\nWJR79eRrAUczZ6iMbjJ2IEfHS1hD5qxOz0T9guTp3SPIlhMzwPVmpVNsVIY4\nGFo8uktBfHHZp6L1oE+10xhfj2TflqH1tiQTUYPoBRj28yTxD6DKRkGH8dza\nR1s7ibNghEDMrNdBdCzy2UzJCGQ4LMArEGXzp0grD29vANFn7ZrKgRA0eKPy\nu8fFFclwsJHUzj6V4HMBg70gGZqJZl6hupLLmgGmApa/1PL9xyw+A+0TsmiC\nvf3SaMZ768uQbYh1H+B9F/DmQa4YKDEsa/CJvnX+zzz2E18D8kV2ZueJXJYm\nUnZLlJTvoOClvNOR6SIayRyKVdiIh7DZIrd5+6+rzYLOhjfLjrihB+U9FbND\nDLDSyNSae86LHprlfTe6pOhRnVp2jA60Ti5uUJ3IG3DGkxmBtaGzcJgIXzwX\nB3wlJyKUY4Hh4mVJ1wTkcDOavJHVOyumLYkPN6PDkRiEJVJWXK4W2vKFPPeo\nIc0Z\r\n=z0uV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-2197a2-kox1zok4_1621524813354_0.21077531462784638","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-0d2fde-kox382q0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-0d2fde-kox382q0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-0d2fde-kox382q0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"42e1208aebe9acc060685cd144dcbdad4e514650","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-0d2fde-kox382q0.tgz","fileCount":309,"integrity":"sha512-eIxMVBmPw2fnSq36OTnBGmu3bAdJOCo8LaU4G5WAQmLstgcyVgqHde25xfQP4hGD3nyaqZGqJUU96osZkf4qYA==","signatures":[{"sig":"MEYCIQCeKweejrFDy6Nun2sVGkdHhF+ak3WHzePlyvg38DizRgIhANfFPJMMnHJnePO34fa5Ju9gKz/iBo+zGNsDxczCilRW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpoliCRA9TVsSAnZWagAAnUkP/RYbghPvSJFLuCaz9a4z\nVIdMN2GskX3XXF3LVC4DPveqh70M55p7VD3KC1JIq2kHgQdx+uOzMNF3roJl\n/IPHmaLmHiXlXFYlIjZkHllzj4Tv/NtjhT3V/DDHgQNlIARgxAtckHv8irUu\nKo3Yy7XkdQ/E40B7JjRyAFy5B8DZIDxeZnEu0auz/+sMWz89HaAGDmIKn+Z6\nW5oQLrbcyu/MUmrA+KZND3NkC0MgxGIPfHqGcTNF0f0Mz0vyJLs3WK66LfY2\nwfXKqDgNCURywPHPNmWu8yoA6JI5W1slFWaXfD63Cgq0b4rK4JNEOUthmc4u\nF8L7k6dkm4qJAApEMq2HxGQ2RpPhoTZfnKbJ7vRTd0J7p7dnHP90qFX51o2a\n5bArDjghKHYUfW0JBaRPhZyhwTEiK1X3RzFYgbs/4pP6A/QVz1YwrRuawYTS\nDI6hsunzr2She/UeIV1IhSmOcX7nChrkfaGuBGtCnaWmZ1jW6O2WgzLhg5JW\no6WqwFoH/O5iyGeuAPTs9lfHAEYjL7YKXF2A8oa54cd5DOhZTkdQ5L2P5NAB\nGWaAscDu+xII155REg/a+Pj4paYMG+MMgQTEEH0EOrZcZZGTtgJB7AwEUaZg\n0eTewZW4EiTWWOKDHFxnIWuwGGj8fbcOx5jwxCBV5ASdmaaiUGjDri7A5XO0\n6UKR\r\n=JzzI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-0d2fde-kox382q0_1621526882157_0.012458561327036932","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-745ea4-koy1hw6h":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-745ea4-koy1hw6h","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-745ea4-koy1hw6h","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9f1fc8bc927ef6643326a1a9d9d3b122fa9aa9d0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-745ea4-koy1hw6h.tgz","fileCount":309,"integrity":"sha512-hFI0pm6b6sWyJ+g/0uaN5QkT8kWU5IiT8nHFywxAJ5Dgy2MH4s5thHH3vYj8FzKBuPqwYDXdJNXIGrnmIhLTGw==","signatures":[{"sig":"MEYCIQDYmVAteWkg4hXpNiID0n34sV2j/7IMhmNBp6VBLsi+iAIhAOz5dZ59YOXkPHEorbj4Y3DNodb83SJi68wbrgTJq+cf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp2pCCRA9TVsSAnZWagAAjqoP/1/CNK4TYeKbZ175i8bV\nuosHMETWTgmVKVDs4qyp53ojNkmRrv3wyCxqLrOdr3fagoee8BxLlUYA/mMi\nvVKk/AGDdBAqujnjzswyCASraZgSWA2BlVEVxack7sy4fRm1YKyaVEu0uO0n\nkL0jIXVY9/PkwW4HW9I933L+201YWj3+Glm49nTRtDR8JW136Ln2SEDyUWrX\nEp7SLJvSMHcTDw9tWrEt0/ggEIKuBgu7CLwt0mIaiNieYUEXjlifprD91UPW\ncaNhXjGrymbqrv0UAYU/ZQjd6Z6K9fGeN2vY5/onCpee5LE9rRbN1FqzQYjk\nmB/3yCuA2jFwFzTlrVglV/alIE0pCHRUo5PtrN+jdhsLXIGcvg/05P/Lhtps\nrUg7IEhfZXAzZOH5RH7952fBiYdS9S44/lN9l/8ZWd9m594yi2CNQiKrmAMd\nGly8NEFMoEDJ1tGb/K1nY3Grf2o5Exw/R2lhdu0V5CFx4XiIAZ/D8r6loOnF\nquLeGWYs03iz2ugJJwM/lPypqV2rrLlCqHw7MMtDLFPsSJ84JwIOmqaY6xjv\ntzefxo1Q5Kn9v44+o8fug8RINBe4GtdG90uYr/xR23TYn2egXmmtpI+RiSu6\nPQJnV6vYyUg395E8ZjSk6aItRvVdyGe+3CK6YkVWopDYB53UA8EQrYzm8H9m\n5X7g\r\n=qO73\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-745ea4-koy1hw6h_1621584449971_0.20386440331133482","host":"s3://npm-registry-packages"}},"2.3.10-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2cc429e71f54a617539272a658f70cd55e58085e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-beta.1.tgz","fileCount":309,"integrity":"sha512-rKdH+ZmLjVw6dbtIb4Elfl9ZOmphZpt5NyNZF7vEZi104a6U9KEIgOKc0tWtEHT03erZGuO//mOdqJ7hnq8jTw==","signatures":[{"sig":"MEQCIEJ6k+rYFbhcPCqKMbsWzdiYnZmBCNV3UPyTKvXzqlaWAiAqcjzUU9F4gWzrotWFJdk8aACHFKg7gR+Q5K4+goNI7A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp25lCRA9TVsSAnZWagAAlV0P/1QjJ4gRKiN/1jPeGZxF\nVCPMyYOXOZxQBavTzuop0oLDPSoEjGxvZiAfYTeqzZ7ShaFKgLIQHQufCBFx\nuoNtQ2NDmksXt9Nya8JZvLXvWAg4DpfTudnByIeVtopX2ia4neMmK425xYXs\nUNXHkCunDg2/Rv00fSHByS4pK9Isy1jW2JdzbIViQl9hG/jaQ51Rp+sjiEVo\nT1y2MHzVr6hJ1L2YRvRshjUwtRL9Ft0lTofOiaC2yXGa5KstEJMzB2/I6vz/\ngGwVLSeIV5k15fnKL0RD0R64O6UthJTm6wARPD1YRE7YlDfs9T5yjL9u+3Jc\nrX6+5T/sP+tHlxV6yVlYKIMjH5YuNSR+Am7u2jMi+fFSXrK8eUK3OvMeSzP/\nyY7KbcjxpRbwhYwVeYn4n8NebGlVwp5Ko7ofv3ygLKHKZIlCBvvBH5oy6BU2\nKELWxBoySLPN5xy3mVKXYcFtlUy6xKbJzfqg++s7RZoqzY1JnDGNMy8+iRR+\nw7YVTQFP5dcADTsEX/GfSw3LjiMCnMcpG0cIx8QgczOUcRvoNuNMWdXexiC0\nQBKOcp81GKfwN+rq8i9+OS239WDkrOzbVRio7L/avALyMScEdwRB2+diqtgx\nAaD5IONh3DDkFsXp7yv5VgzNt1wNdFlYetaHegPRSTZ1jPcXfpPYJooA+QBW\ny9R3\r\n=1lkR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-beta.1_1621585508892_0.1953168826792122","host":"s3://npm-registry-packages"}},"2.3.10":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a67515dd87d6be441f40f7ab836695046d88ceeb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10.tgz","fileCount":309,"integrity":"sha512-mwi/8JBToaMPYRRfZz1eNwlV0Qn+2eLCoHpqGiuurD8QYayy9u6B27WACQcBGO3iRDfI1r/r5Jy5YAwaPKi2uQ==","signatures":[{"sig":"MEYCIQDRRhUYKWUAgG08OSjfvgk8gJtffNiO9IHqhF5x3/WCWwIhANcBULT7yWEt5bLX9NGnCnoR9mYenjjC9ljJWnYu9JAy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp26mCRA9TVsSAnZWagAA+yEP+wfZq4w8OeCr/Ye4QIzq\nK8DShjI+mQB228cC5xreI0dFpkftSY4E/ZXtAWN9PDbbCtQyiAommmlM7WXY\nqX1y/f6x7P8vvrZFRv1Bk67OJ9bBnruGFKqsvsdeqIK+F2tJiOObGRwg1IuK\nDwuSPIiOMohsMyoZuh6/SYgH2kMM9w3eMVJnV00uW+17WxD/0JQxG5MxfBOi\nlq+uKa2pHZLeKmI/0EZQX3lJT6Bf6yANQA6vlc9iynx+8GPTU3WYjEkYypY1\nJEvA/um07BlHzupXND9vsFKJ97iHTMhMjn1WHrxrr+ZxLhTWCZKdHRiOntbP\nYwwqqBqSmZCknseNEVRWPYobu90soHWmz8D2PH2zU3Aw5Ok9uhLeFateOIv8\nQ7PA6tfBAAGtwrfSFUCCal1pdqp8kHMIE3WO18n8Ue3YNJyjO8CdWQ0m4Vol\ntd+TNy3GsPAauKNo/pb9LjSA12e6t1Bn2i6X9bCdBE7Sjh3ReXYiUW9y03mQ\nNtujqYGxhP1BX08LehYZ6ysbOC409IV4gof0IzHzpSis1eJHnsRtUCC5K5Hp\nm9oUqiE18Q2UBWCiEWKLEZ+AtWixyy0snw/88lAPjUowEQbO2btkbQHyG/El\nvRMv88ipRLfRP7qU4uEXtEq4CR3Ghe9HlkBFSIdhp1Ctgya1p0zp5AnbiavK\nm3Fn\r\n=+Hug\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10_1621585574292_0.05405218356290353","host":"s3://npm-registry-packages"}},"2.3.10-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"15435cd21c177e2ccb5b9d3bfe40099f5110749d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-alpha.1.tgz","fileCount":309,"integrity":"sha512-9HGQMsPjW9YrD8u4LSGEK/0RhPoD2LM8Lz8dmCVxHwu8n+gDmvleONk7ruD+Am+H3F42NmNgXiWO4MxX4+ztaQ==","signatures":[{"sig":"MEUCIHVaADrFOq3ZsylRyB2ITxWyRSz3InQDyqQt1GXt2HwrAiEAkbkhSc35UtPEn1EcGbx5/wzMk0g/RRzOv6bYjEqC7NQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp27cCRA9TVsSAnZWagAAARkQAIpy+kaPScDqg8dBPSTS\nVoRXERbnnP+TxIqnnbd3xNXjlTmVLkfWonBjfd0JYTjBjoYODKjcW99WFZrp\n5Q692IwoBKaedCgbI/OQ4eb8ax6v58YhHDViJJmt+9zJksDC6sqnodJUqdXH\nzZ7mncH7GWl2V/At3tUUQFHM+0j4xDOodcfrGcKuZyJGI0RSbCWd398NWDDe\nqYRxyo4o+kiiYLFjw9DZZoEJwwgnFV4RZ9imsgNDfxxCDTKF33TjpFa+VSKb\nrJdfWh55xRG/atK5XcscY9sktQaGfLEhkUWjRJ8zqUjAullhn1UMhe1m/JeN\nNp5iBRWdO5T/6rWBgD9TglqsRiMG0qankm39GoAwtFS8mly/YKiOoPswjC1l\nIhYZvjcG6GxSHpQ+/arygB1Ck6Efj3Z8pSltOjeXEtWpKpxMCs7DgPpxnhf7\no2Et87zgkMT6AIIO4SJSwdp5KrYpKW4RFv/SJBlI+Cy1EJpkaTUTgol9wfza\ntwRV62OuJq9OWjYbHDNxmZ5on7Ges58JHzNaNNi1tg+rD7XRzdOQVw/sE+N7\nLD9OqW2dqJLdwE/OSMLiX5SgognGJaov0bcy51eHUSNYtF7uV6M3WUBqDNF2\ntbkRRusxoGTzSSKwYZBFSr+p6oZ6z+VFXU9mb6i6tiXc0hBmACHdoPj5a8CX\ngweQ\r\n=Wl1l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-alpha.1_1621585628244_0.8942686905514547","host":"s3://npm-registry-packages"}},"2.3.10-hotfixes-f6945f-koy3a8f8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfixes-f6945f-koy3a8f8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfixes-f6945f-koy3a8f8","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"eaecb540a33b7a0f8285df42de836463b9376f01","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfixes-f6945f-koy3a8f8.tgz","fileCount":309,"integrity":"sha512-D75goQCkg79RAjU/uwNWRgBJMXxCDUKzHSjcZcu/hdM3Y+1oRwrT3yey0XDDPONxP/QW71qVSEdGdOChAiHyhA==","signatures":[{"sig":"MEUCIQDa39E8L7SEUZWu7s4SNzh9OJJSnAByM2WDsbmDuV9bLgIgJTct3eRVyLPQ4jQTkJ9neIqhjQU9v4S3Lg8r5Ak8+RE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp3X2CRA9TVsSAnZWagAAJosP/2ZOWnMeljSS+AuInykk\nook/V6FGMoE8dhEtykdmMKJViJ2OQUGmu0tQusBOrw/muYDN+zup6EqWPF3d\n88feFZ9GtnFFXADZCvi+mF4sEt0pDPQ4sNlpYekSKuHKUm5aPlGMMILBwSb5\nohSGl4LpkQUOVZPj9hFnTmTCblMBgelyi5Fg24ojxIHBNN04HJurrJdqXGZy\ntiM21ZNjS1Ir5D+3+W7h7+Uv3Bzlh85/UcoJ5CZICVGntnI/wZFxL0HUPsLX\n9HhyQU0v1jhpWJWr/Kch/JrmjxXOtMIBsFLHIV/a/tqkcF2wc9korBC4x4UB\nPoyQOv3Mov6ec/1AC/i3oVqGrmcvgypzSWktBaOiVheHc/wYtmmcFXVrWbwI\nA17DHDVNW7Jfu2qEYBffU8MbdzW04Ce0eMa6+3uMY7H2t9TGFAGaxWBwS1PN\n6DSp7FbAmkiutFgDMmZobuAQT4j64Og0YGnJMcf285AZSb7SuoPqW1PZym9c\n+h/u658HGQggun1xpk5kf2TRXUxe32CkRx08LBBxP136/cGRo63G01oCnkPo\nZaQR8xUJz25jQqC2jlBldnO2Ed+uMJ11ZNGx9ulDM0nKDVMrFYehaePelQvL\n21KD8carW5tAN2HP83wtLGU+ydptv2flOpFCqVHqnXHWqPq5zlMBzGI1QgUW\nSf5n\r\n=C61i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfixes-f6945f-koy3a8f8_1621587446017_0.8289077636762316","host":"s3://npm-registry-packages"}},"2.3.10-feature-881537-kp08gavn":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-feature-881537-kp08gavn","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-feature-881537-kp08gavn","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"90d7534c2cdf1fd4aa30649ba2d09d3eee39913f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-feature-881537-kp08gavn.tgz","fileCount":309,"integrity":"sha512-DFw/OFkc88ZUC54zB4tJfs/nqxhpti2T/Fh7B3/2dgZBXpXuFoBs7h3pVb/E+hwF93jMgMCniMRGEelLQySALA==","signatures":[{"sig":"MEQCICZ5r/XhB5hFZhFU92YIGuem9BR5F3IMnIGu3mQuQtj7AiAApuhEOguGOCnrYRrA17CXCvK/LnC8p/QRoMtGDVQZ0w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqXBICRA9TVsSAnZWagAAtAMP/2gQQrmK966yWkxcyGKf\n4//CBIM7SP79+34PwohD/VCMxCWNlCQhiO7HNgbzlVWB7THUhj+VGV2rX/CI\nv7iLkmI6fpRYwYZGfOsWyp0EIIbrVdW/JFJbox4C58qVMwOKxqb0zcmrQSm8\nplfdZib7jgPykK9iyGboAnZpYTqnKwERfLuY2IJTOmRZOAcbF9kZcHR8Z5ji\nKl0TxukYaq+qzZMkyZQTMUZS0lZuz+dWsKlQQUzcBr1B920BcGTItf5kDVCE\nIIYqZ85uec6l8rE/6GoOhXYGEePwzk784ONbsKDnH11J8lxJEukHvkjKchJ6\nzsZSlwu++hveoIJTngHlMeXcK0KHyTCRNG5Dg5FQYfx5DTukmSIZPSV2WdWd\nKBbSEuRge0BRj6Jw0XUhzJQAMMTdL5NLH5pWct+o+Bvv2FYa74A4NSdfkLEL\n60voXRRaRWFWuGQUfUn628O01j5Ox8yFg5+5YEfK6HQUcj91uJmmFQLJMsiT\nAKiJ/L0l81pRq9QNI5GgzQa7/mY/Xe9fgxYF9peFoRNKDqSHn/3wG/ekJzPY\nILLtw6x3jjUeW72Uh1MnSBwfYKF4xxWLuwhJML+Hfo7nReSy8MED2I2YZrxx\nArutAPhk6BsVSPa1k6zxah+Hc/djGbAJXwVfHwk51ebvQsvAtyhTSFDkY3Di\nCar2\r\n=+hJ6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"feature~deactivate-verbose","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-feature-881537-kp08gavn_1621717064432_0.30040932897176464","host":"s3://npm-registry-packages"}},"2.3.10-feature-743734-kp19rwpb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-feature-743734-kp19rwpb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-feature-743734-kp19rwpb","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"742e7a1e3f91f1cc7ac051ba7e318c34fa7d77e0","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-feature-743734-kp19rwpb.tgz","fileCount":309,"integrity":"sha512-w9ISxzmHkKmbQPN0axkogzjLK1/ygBpaCpzCuRfyW8HV8//DEyKc+0zo9H/drqCYU1Z2SmcqY24YQAtqxMpDjQ==","signatures":[{"sig":"MEYCIQC/KWFVflzFB0C3/PN8P4h2KQBLXxKiDeTK+oIghis4GwIhAJlWtPGXpHqDUzsl/fSnM+e0ACIRFCIt6nTnLnhwzey0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqmUjCRA9TVsSAnZWagAAeoYP/2iVIxS59A8zeWEZu6lq\nBPCoXcZBHY2AFZcL7lz0Cc+UI2JDYDP8bM9ZG1jhcDL2mpq6BzKBgN6YHqh7\nTYZo0IHf8otnMoxLLVTWfmGjUWbAQzOTCYmw1zqFcLjY8BDSOJx6yAIbUSCS\nhEUheCFZOzYY6s+urYX2O47VxDJwaD/rlDRAIlbSqob3ubFSo0/kILlmTkHp\ngO7yeGj+vHY7IN97Z1RQqagWk3cUqDge12t/+zMfY2autszqoJzWKFemzhYN\n71VR09NFnZ2vUbwc9MB4/+vLC3IfbHh4H6uO0pCQo6j9fljXRmcgzpCsjDol\nCd0Vn2FHKCRje2MPV1B2Ggjdk7kjPuILKwOdRqha+AJu8bwDr4KhboKZYXn8\nvtFd3unw9P21r25a8TUvv5yDcyUQWJmclrA3SRQ3p/HtjqlTumHsFgX4FNF2\nU1DBhUZxKWBieYTyeWSH7yPXiCoIbjAZoxsUVh/VYEjLy4oLvFIxks6AWv2+\nkT4j4HXnkU4CuclPoyyMM6CF2z+DtqbxAYYb8f4w+phZ2Gq1GdULvdwdVoh6\nY1ucYuvB6rQzRhaLB8SU38B7lm1pI5edhZ0iBb8uUSC0LJoCdlkJrD3+8mna\n5xciz2XIHGuCq2xqLfdGBPNW/hPuIL1Nvs7jcZGq5GdiHJRc2eYhG8apPfnG\nveXz\r\n=8kiQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"feature~add_process_model_cache","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-feature-743734-kp19rwpb_1621779747125_0.23392159256094236","host":"s3://npm-registry-packages"}},"2.3.11-feature-57bfcb-kp44rw1z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-feature-57bfcb-kp44rw1z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-feature-57bfcb-kp44rw1z","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c223a7c6cf7d57181b8bdc95b2864951c011e797","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-feature-57bfcb-kp44rw1z.tgz","fileCount":309,"integrity":"sha512-ZAUlkZFpYV2gxPWoU++dqNWKkxuguuBLcMHKZQiqBdkpVIPZ4nqEjCRK4ju0r4GwbZi6C+PrLFv0ceXVXAIEzQ==","signatures":[{"sig":"MEQCIDEmea8Aom2YL+124lfGC7SoVg6Pbe2WKXyeXZ7lMs1yAiA7vDV7KyHOWS/y3CWWhizRyFW5GXGdRvXTvQzTTD9h3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrQjxCRA9TVsSAnZWagAAsbQP/1xRqN7hrS8KxqVbcLZS\n4DOYpdfVzYJ5lXOCBQiQe+swaQzuS8M61QhLVKtyx4a6LciORCP9KgtGDuFf\n++QxV8qpw+BJ0j/jWotIYDTRAoPtrYjsnSHmUdSWWJ83q7nb0Yr3vZ/fNw/Q\ndhTzctLm9fQvR0CD3Amoru/o1XaAHeiOaYhUAINR7F17xZGlDd2fMlhReKR+\nyqzKVT7aMq8EPV3bUz7+hDSg5ODHuELzCRJuA7yw+EXSokrvlegT3Rx+43vF\n/WW+4PogQRW5LRXuoNnZZuX/j7+EuM078IruDQ6ZbbaHeYJARMz3BtZJvcHW\nze2qHEayf+Wqz2PV4AzJOAtQ7y5dlaNbqFZL5Kk3XnwIOatvVU9464vdE/ox\n6rhPvxZrKCODUMdHPuUsD1TTW9klHL+nRIEd82hut4XmJb9rCYKqIfdGKqxp\ndIRiP4gPMOdwKp01OqIyxYJEyWE6YSmMNDjDUvqbE1yQhsf0gHU+j2Q+flbC\nAfzlcoydHRU6n5GRN9dg0aaBMEmAIlX2J4F6M0HhVh3O+juMEKDkGM9EVs5+\nWeVKZ+QiNk6tZATZNTWs+bIcOyu9lglRCZ5rHQYBRgu2Q8Jz+veY0YzMa/CY\nu1NG07NlXYkOUbOUZipfItqoYxnP03HtiAOvAuel8eP1x5Oo2jLGJv+RYllY\nqPaR\r\n=5EV+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"feature~add_process_model_cache","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"feature~add_process_model_cache","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"feature~add_process_model_cache"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-feature-57bfcb-kp44rw1z_1621952752880_0.42801162616323585","host":"s3://npm-registry-packages"}},"2.3.11-feature-b2a8ca-kp70bhwc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-feature-b2a8ca-kp70bhwc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-feature-b2a8ca-kp70bhwc","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"494980dbcba54e2e2cd23195abb6105e5fca1179","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-feature-b2a8ca-kp70bhwc.tgz","fileCount":309,"integrity":"sha512-XDjXywRNQEpuHG/vF1zxpqKbjuQDtdZy/Uwq4Ma/aGkPphGNLSABI/Sstn+6Ju+i157HYiMB9UVXFncsxpR3UA==","signatures":[{"sig":"MEUCICcbaffaTXUdiFvnHYkBSYN4V7mxF2LOOHJSZsboNDY9AiEAqNR5LJ5VGQyoRcjhbmKNr0ch5TjQulSDW0/dja954Xk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr7BFCRA9TVsSAnZWagAAtkwP/1qYmzXU0GypXyQJsToJ\nlhPTn0jD85YUFk8xISwjPTArjqk2wRzFdr0xHC2QY/qLKH022PI7X+MoJWSm\nONiCIdwajtp2S4EPHpl2xTQ6XPmumUqBY83KStHp8bYn74GkT0nPXOV9fjUC\nLxBES/tfmom5WeaFuPVLWmIS+3EwTeyYcjSzSRKfgbhbLoZTc6eb2vIT0z7+\nV1pjig5gTffsokbeTI2mU3jUZsI0iImExJNSsUxrWCwFTC3iu0q6IlxWO5Wn\nkS1MEgcL6u91EtjhM6BAGCwct6RNibRPxFmaf4atCTJK9n0OSqXMmQuTQVZJ\n2dyULpbo2GkdG3prY0c+oqegE0bYTbEquwh43/UOyWB9IEX1mGNkoHu4Ycv7\ncWcm69jXM4VxFpXSg7LfUZnh1L/WGPX6OcOfmB1FzKRL9ttU32wjAiRAXv3z\n+ulcS4iFcvhBfQkJSo2HzjrpvkBHHXvh3CNoeNNR8acegkDhscC7UWMzeb/W\nU9LZiHi0InSatxk3r9TypuoRoHwj3Hzr6eXY7LLmJ4Y4RqREsaYyCpJcctBZ\nygS2TXRveI9Qm2I6kPIinUTYhbWaj4dZm1+nUBkbR1uujot9N/le7qDp6VlX\nROAo7xMfNJ7/o2qT5wCaiLZUX2VfPWKs+F++Qfv7so5sVOddhzE7rI1SWHch\ndAdq\r\n=lkoA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"feature~add_process_model_cache","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"feature~add_process_model_cache","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"feature~add_process_model_cache"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-feature-b2a8ca-kp70bhwc_1622126661085_0.25915775934389673","host":"s3://npm-registry-packages"}},"2.3.11-feature-466938-kp8esseu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-feature-466938-kp8esseu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-feature-466938-kp8esseu","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d38387f7b2040a593cfb3847216dfb2aa179dd45","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-feature-466938-kp8esseu.tgz","fileCount":309,"integrity":"sha512-5sz6HVmcynAYDpCxkkG+GJarOo2QwXH0e+7KiUVI3fzSXNBUrfFkeUmErvacQFoY3CQFl+OKLNI00X4opN7STg==","signatures":[{"sig":"MEUCIQDfzB1QH3KIVBHLM7+PkHuwzD+GZIJI7z0p1rGZWTlCbQIgJmGr3s3zm9Ym9GTStl7vxAWRRfYSVdL9J+t3Bm2tWYg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1559170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsPt6CRA9TVsSAnZWagAA9EIP/3+k9XicLcYYxEJB0hbe\nTllTO73hkJH2E4A8E6fB8R4m3G0OklWdjHrjYJW+zz+SefBZQ416OhBiBOkf\n4OKjwCZgiu+erFe96WSosX1YAFCQymJH3irtaQKnjTF5Ipz9NJcWHWreX0Co\nCAy0JDZWjFABFXgkZaZi/qdY86PC18ZWRfq1wiyLoZXmE76eZ+koe5Klw/Dz\n9aLlBiJAUylPkd6rlxxHANfzm5pDl9KW9KG43TZY9RGW2DDURjOsrH1ux4Fw\nOPnB+yohVrZmuGl4SoRD2iOidlIAvVB3/IAcDVvOh7cWUYBT+fvTMHKRGcW8\nx9pd5TVU/zeD1dHX8yVrOxckOiZBV/hiibBdjgqFurRKGHQTcmmeKNE2DcSf\nz6Tj1GyQtO62ttHLhveXs6YsIrgadulwCCzVg9/AYug2zqs7RwcKt5fDjdWl\nCHf5zAtyfTFgI57k+mk88MZt9DYxTeuAYvaOfkFyJxiMa/za17+C+CUB074j\npAw9/XR56yHddbrc+xhSibX+fT7Zn2O+Tk9iWiIqeeCaX5w2j5rcT7JtS8RI\naLJWnxHALkX6ZxpfXzq6RsgtAbE+z/B/MA4+rb8QZhGR4ydLyybPxCPIGP9M\nG87OAtUxNHmF9dyX5jJ0zNMy6GdjmZYmDwXG6Gnzej28pPfxpSjTQRfsTOK/\ntpp7\r\n=BLaJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"feature~add_process_model_cache","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"feature~add_process_model_cache","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"feature~add_process_model_cache"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-feature-466938-kp8esseu_1622211449646_0.08450054563182818","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-6fecf0-kpduzlkd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-6fecf0-kpduzlkd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-6fecf0-kpduzlkd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"66a070e8d659aebe3fbb4fd14767d66bb9a2387b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-6fecf0-kpduzlkd.tgz","fileCount":309,"integrity":"sha512-8wFRl5mwDE0i4Fts0efOx4tVXf1dGeO1lKoGPyqq6fgeT4AIOILCuEoqP7IyaaIuXC8NxGNDKha0yXibZA7R+A==","signatures":[{"sig":"MEUCIQCzXb3VMJqXHwX3Cmq/YHl+bMHa/ikXEKK5f1y3r52QPgIgBqARsR+1oBXO/MRy6prl5AMUkE87FKcnhg3pxVMsw1o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569628,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtgKsCRA9TVsSAnZWagAACdgP/RCGQqkNE2ixd3OeG0lY\nZsKDVggr6+2OPuWDS4JavYozGF3ZKhaVsON5YIpo1Gntsu6SHc18ufaeXAda\nvRYvMkbPx28spefafFIw5BMYqXUEM7IB8Sc9AlReocHFPPwMBisylLSFNClW\ndXzoht7ryu6B0q0IfE0TZLKFLOUUgBTgbOLTuANkp0kKcXW2e36XW09W0XgY\nMuGyY7Ui3gKa5Z8epJRq7w0CdZXtxSortVwXvmswEbFrGIFLyKBxnOSCemTO\nNTndnKAXFPxxXUdLI6fSgTzVPpd5FIiChpN4JTm1oNHfRMcT7iS0AZNq8o78\nr/pp2Bj3lJNjMAtTSFyhGwfogyBLrCWctefnnpUseoLZpzbO5BtmNTkhAd57\nxHXTB3R/WFItxQZjD5bH714YXea/ViF5t1yzfds/+qPxuqCUkjQIpvPLb2YN\ndWEktxILhwlA6Kk4OZtlRBDrH4zOGBAxtXEJYvUBfE2+23dO0XhrhTBd54Js\nbheKUVWMxlO0B7KCxEUZuQfvRxAUcsiBOEwNieEpUiIT+acFbNmCs+JcqVyH\noq5OqAgmgW0tHHE3ySsYd3RHGo57xwYYs2Ar90dlexKhHoCmlwL7dFaweBGv\nsw/Q5pVjEdVDVk8hCOiKRA7Dpa7KdduSky3VQvWJNrXzPHWWEm7CDBhpibTM\nNwYK\r\n=OMAO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-6fecf0-kpduzlkd_1622540971489_0.02280392342537141","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-91b7b6-kpdwp3yf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-91b7b6-kpdwp3yf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-91b7b6-kpdwp3yf","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e3c612401a89f837c332f499670c4a97d2e47650","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-91b7b6-kpdwp3yf.tgz","fileCount":309,"integrity":"sha512-nvVyBsSCggqzIDwUJRIQ+hC1L+IazFB8ZC/sq6nfQaokzA0KEE7+5Ap6UGzIgy6t8OsuCACgAcHvjvEL0nzDGw==","signatures":[{"sig":"MEQCIGKXyn1Io1MwLg8PrnmGhquhy0QpjX3HttOI+RReTKfxAiBhzpcoQQd09pK9uqPsfCNK3e8kNHTqP8k6059JaFlEtg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1567766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtg3lCRA9TVsSAnZWagAA6hEP/jRCrbJysZkE+LcqMNiB\nWhl8y4Gn0HnPU1wWOjNdbRbiAzicoD5bugNc0P5QqyKs7uz56L0Ub/mPm2+T\nofmWuF5ktAhhsGMbsjWKT/1QMizFxjQVNCpUxJP37W7vJ5c53DafecDztvlV\nUdND2BJ8nOIFl7lqXtNn+JbG8vTcIqVZL/JaRBClRsv+qmJ2w6c8uMh6UcBi\nE5stRSD0dBqi5HZlZiDNjP5M9qhuDOz4QNThON1rCR0PoEkQSSHWUG6dABFS\nzwH+0xa++RC4I9yY2oOEH8QdO7iP7H4I7bMo2TFEtpUZzrDAs/rOI5v7PQoh\nVhkGpEtID+qsyuCKTFL46d+ZxH3HXLEDy6zBB+HSwLoB6u2rTQbYMktOtvvo\n5tftmVs4KMQ2tAGlPb+MKvIDDW4Rt/7NpkArouDDYScWSshc1pdQ/vYn4qrm\nrVr3i6KcUPVINm+i1p8Sq4dA9hdpKD9Bm/P9vLSnu5orDRsClhnND2Q296og\nXLvMmMH2BNZDBSa4UK6jRucSJ2iGgWB7DZE+zbw9efnmEbKHY5sZpPN49K1t\nGSGxvngY0xJqhgC3ONKizfGHQGYDw+1rmJuhg9lPhrXBRJ5ge+tJTYW6y2pD\nJrheSVVPsO9xM4CEKohQxo0kpxUFZaE6uOZ+yTlYaYUTV0XyjRkrd5POINAA\nH0co\r\n=WUUR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-91b7b6-kpdwp3yf_1622543845454_0.7133106377522584","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-a5afa2-kpdxnohg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-a5afa2-kpdxnohg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-a5afa2-kpdxnohg","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"41a58b838f70b9cbda1a93aa5d3fb101db481117","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-a5afa2-kpdxnohg.tgz","fileCount":309,"integrity":"sha512-rrIpUzHkrx3GNNKUJXoFBLb2xM6LBQHNc2lsMJVRsKY7oJ79JGpEvBt5gHPoP1dZgKGPuZDRMUxhQdiyYeFb4A==","signatures":[{"sig":"MEYCIQDxCkVKf/e0f2FmwGdfzD/rjN8RskoCDb7mtpLnAZdv2AIhAL3Qi3Pjbz42bD51ROOHGngN/K67zQ0UWPD6B2uWSS4B","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgthQuCRA9TVsSAnZWagAA80wQAJfj60sMKOQDV0LRdEXB\nSqYnfPxs3sLn4oqdv/5kqoK67xVxc6kJ1TP2lCQWRKOutR7P2P/gkZSI4ool\nPD4VF6vgXvbvs5Gz8XV+jN/j6zPhHdmflumr/ocR5m+aptdjGBxS40hqLDVj\nV5y+2LVbGQD5DD12NCUV66COvPzK4aG2R/He05eVxxrTu0hXJRRhslQ5ikMc\nv/TRNs4iCeNlz3+nzZJD2P9oesZvmCHGF/iWUcI2qf42DmJfxDN45rwiOiha\nbdKSknjorInoebA5wRYHos5gcNLyDeEsx5mtp2nGUP6CzGfC4HHr6SWU/HGI\nVewi3dY/8Cj/ppIUiVHSaLw2w372J4g+wjlzujMMiNR9HVzkEUNpQYvmiWEB\npo2vMrwAdUgcAI9itSdirYGZOwUL6OMuLGM4qxVrtdftjD3W5kLB0ppd6BJk\nGYKymlieIL6jU8T1cLYMpnNtjtEAnXA/BLLRgvoFGnJjg3z+T0qmSBoBP7yi\nk5xKvdvsUZfiTK/OB2t9aPWNorNN7f8xwymtbuM/boqB0ax3atn7D+J64+cO\n/1qN3KkaHUbd2JNTWAgY43dvHSUYkHjBqat7NtckgV8zcdiouD6XTcaTBOqB\nda6xXVDaxO/tCmWnnHHazstk4IEEKnf3AtO7JWNefzhNLa/9sXPmlUj141jB\nTHax\r\n=r2HO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-a5afa2-kpdxnohg_1622545454358_0.6413597728876625","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-39a696-kpe0p3fq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-39a696-kpe0p3fq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-39a696-kpe0p3fq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1b4492886692f0e48329597008282929554198ad","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-39a696-kpe0p3fq.tgz","fileCount":309,"integrity":"sha512-2t6orVJqVjOwIjT2d7QjDF+xwWI8uhjmyra4c10Nhej6tijEfUPcGua6xzVYyVxElijssCTeSSWmuBrPJFdfvA==","signatures":[{"sig":"MEUCIE09slFebWLxSF0mDrGl/iI86536bn9xwd0rkS7x6m9lAiEA7Qzvn/KP4fD8bQZRxNNsz8+ukuq1n+E4ec0vMbAhUes=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569441,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtigeCRA9TVsSAnZWagAAx4sP/Ar3yx5SjMzpvoO8qhX4\nQyQu2oxNbmpB+qmoS2Z1H2GdrGuSAGgL0mKGOC1SkZRaSnUTcT+/Pz70UimM\noSDbV2GokUkq916cOnMUg2DQ9Sq6KsSooMiKTowty2oy2KsFPA7qA2LHTk30\nEKcV+se00Z60AslISiCS+Dbt5Zax3sdKcKKL4uLou0fLiAdU+lVWxF+RkhvX\nQ7sNPI4n3dFh8u6SLfx3Y6gTUJtcIT9VthJT/cElL9Sam0OutW1VB2L8e7bA\nrlQKZEjCOk4OsMiyrRnq7GyLs0fiCOYYHzZ4JaB6o7vVnrR4ndos2O3jLlBl\nGt4pRMYy7AqqAChpcjaiv3A8+kqCRFbKjQ/BnSQpsJPdzDX8x9xJoRjwChLV\nmVz8SxXVBqmtId7pLBH6TrYVDcJNg/YXjuCtLZRcmDm6aaEfGqekA3B91iAN\nt4u9eWTp2Q+M5NqdqHPkyzlvU7hR+hXEH3jxFFI9jlU2yl8YiulypWP0UvRG\nRlxLnY10xfUMzfFwXvbkLs8+SX2lkmf29Eek+hnjlBYZEe3Gdsej/nXZpyVG\nVjqxPnHtHy9FwCldbJKfIOC9KSlLDglhQX0Mdcl/IfXw9l/VUyBNUYfK7EEa\n0tDGHkvA0/HzSlwMOgXrHFkzSlQY2HfNmQQ5l3ZDPsr2IPcOmvWV2lf5LFqc\nQ2Zn\r\n=GRTc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-39a696-kpe0p3fq_1622550557903_0.30842248400560623","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-0cc1f0-kpe1qqg1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-0cc1f0-kpe1qqg1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-0cc1f0-kpe1qqg1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"309fd7ec03c778c8b37412e5f2ea13a34b71fc14","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-0cc1f0-kpe1qqg1.tgz","fileCount":309,"integrity":"sha512-lcCQYmsfjRu8oQa+COvtUk8+MrFUlFH9aYb8VXkrFQPq+9tWkZ56lZM+uk/KCIaYqhJapNdAGTkQuVqwfT2Pfg==","signatures":[{"sig":"MEUCIQD3ZAPs7IzuiyAMhWoCIMweNmn15PFilkLPhG++479AhwIgROVjr8bPJz42zG9RYNYkfLi0LZGup4NVZwfoMUir5W0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgti7/CRA9TVsSAnZWagAAbe4P/0Tlc8Jsx8qlc5+VX2Pt\nkAZd+lKt/t/mG+0PgT1LVwj932CWu17SemINQRLOJ6QyHjPEyh5+KQlW6+Sp\nKRJS7/KEzPAySwrJ8CVDgkHTcuSHEoALLMHNFGsf4Xbm99YlB3AI0hNnPHDD\nzyqTq81FTywjQO4LeUWseiAHfgC64Mxmf+PEWF3OAMJybaJzH2/YKxbrq/HS\nIbt3kMnk51avEWPShJ5nvQWc4ALc8gJWaLeks/k9pytWxwH94WF/tE7yzv3y\nn0WmwYzflBOndR7fKyPkHiP1ev2GhWBJm9PkdMn6jaB1TEchNBOD9wS/ldUI\nOYyo/WqTY6dDwg/r30ICCQokfr7eQWpiQlHHIW/RkoQc8fIzI+2NLaDrdjTF\nPs/Nz/6TWpfgVEuFN+erL0ASFbEhwuElwAfwdQwmEnc7cFOICU6NTUlwwdMy\nAvxuu6XzvDMYYKq+WbRfgXLe7QEfULkJ4fS/y7KpwvQ6qx9GYQIFI5dzRk6q\nK6rTUgevxwU1Rrjb7LzBVRjQKZmJJjaMetcCquRV7msI1Yd6Q5WLiSOULDMH\nROLsu2d+vNwhSPOAGk/uXj8h3qifCakFAkrz0w0UlZgUFFxKT0/mZvCOUvNV\nTr3ZK1apYMJOI6kWq8ZnWCi8LV+OHhduNrCHlAfVWE7uowi3AjszpWEqR03u\nuRxk\r\n=jGKJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-0cc1f0-kpe1qqg1_1622552319113_0.8770065113965095","host":"s3://npm-registry-packages"}},"2.3.11-feature-3f935d-kpe45qre":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-feature-3f935d-kpe45qre","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-feature-3f935d-kpe45qre","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3a54b237b60ead82394664b96c832fed6cdb5a21","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-feature-3f935d-kpe45qre.tgz","fileCount":309,"integrity":"sha512-XaenvoJtmofZS2njbMgvtL/shLLoq8HQHlmU04Wv5JHkmnMNasI90r1P6yVWENA3klLC6tCJq7xmc/Q8CN6W7A==","signatures":[{"sig":"MEYCIQCnFQmLcj50A/ZAS1TzsfHrFuVNH5xh/bFspXRG9Gyo5AIhAMjNqbGLiUWyUxMdRQYnUWYpq6lCgRG/bmoveSwlMgTh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtj7YCRA9TVsSAnZWagAA1gIP/Az574ctJ7bW7Ty5wHWw\nz8nJafbbXJo3N3GSQWS6H4STMVnwH/lkeh/CuwNqYx1n0rZ0KdZh8406bboq\nW+dFS4Y/mH1l96V4IFcEl1E1DsBcN8Kx2eioOYdpH11oDjyr2W+JleiXLfUA\nkDfktF4ix58zwDSYo0tvnm4fjIZUZ+NqFWHKufXop1+oqvEsd1lL7Zodx33A\nOkF5l9ZctfuovYkUKUJk34BSX44mq0N0XrT0c9LhmJbZdmVQRs3cjZ2xz4pg\nqjN/8cbb8vmbgQo3a7cNp+cLRHHauwK7RHaGJ/gtvbzGJY5K+ql7p9fYhKsw\njM+u0DkiONwLU0R8st5e01Ugn/k4uEivvBlDy9NfG3ewhrVIekYk8R3cykoQ\nVlhOttRK3ncydAq1KqmeBbNOeyo/BecuPCZsTvGmB0CZA7qjsDgPNPccm1b2\nHjepyUuFhBeeZc+6QBCuL3lHWz+WP1GUebua8QS22nonng5UsCEiGntI7bQ8\ngvc28b/381vj+JA2aGNcbLKTAUbIvXM4sV5I0nO+fgOsgb5iJcdyV4Lo+hj4\nA/3BKLwHYyjA/G9O3JorqzME2pZ4eoPs+zBOiDUIuuhFWynRVjZTmRkdXBjJ\nV+WnpYmUe9Hreo3gKzM+LHTxKu1R0UI3aoU9wNjGCvPNVQLhgZ4Atsal8IPw\nm2dK\r\n=PXBt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"feature~add_process_model_cache","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"feature~add_process_model_cache","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"feature~add_process_model_cache"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-feature-3f935d-kpe45qre_1622556375736_0.5077540841540309","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-a5b1ac-kpe8sf44":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-a5b1ac-kpe8sf44","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-a5b1ac-kpe8sf44","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a2db70da875a8d8441b1ac3f6322e2cc3681d48e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-a5b1ac-kpe8sf44.tgz","fileCount":309,"integrity":"sha512-C/IMy4b+2AsIgsKtgpz75bpMZfVWKMy5B4B6f/uev5awtTj8CcRmZzIoxLGRrv/xnMLMg6x2tGBUM8abg0SlHQ==","signatures":[{"sig":"MEUCIDnLa0hYA1gdisoVuqRhXD11rQABRhW2n1KscmNt8HwHAiEAlJx+q2zOCokodWvEMV1ibKk0Qsb102HyvLxVvm6Q5y0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562885,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtl05CRA9TVsSAnZWagAA82YQAKG19ySqY+KxzH5waQka\nPNorbJ9UMiNxbHMLhrTEUgFImKcJK8GORIRI//yk4swl8Z2G5OjMbRUCWahX\ndfasJI+6ySpNN1i0x9aiyZYWyIEEKYp+JO8UELOy+dHoidqM3g4ZDSRZ93wl\nYijYvxmlnLz4bXPKZ8yye0d1TFS2hNlIjjPhl8BLkBZFA7Pc7WEyg1ow125i\nKNxjOgitqILGdavTh3UfD068fZZ6YVtY9jV1/yCz3Id3DSwBHjtBKSmUOHBP\nY+o/aYwxsMJ6qY/QHGWl/lH7lq9ooA62D4RQsSviv55kVsb8dxgxed7kM5wo\nUCHLBmutDaQJTL6bIDVo/aQPnrJ9OI0n3oqg5SkR+riFjCdp53aGAClUmQLN\ns01mxHKMAD6AiNgS+w216FpdhHV56tyumS3LHaagdt48Lk30ZU4f9zDUcS/X\nH4OJU48Pc5LkKaWQkwMGXTvpodr93sAdBoWkS3FidtHgL5lOB3ry+v5r1uY4\njmQigtwE0Hzfb+z/Xf1dH0cq0KwNma4q2xsMb1164ZaGyP/hjRiNUgnX6n9H\ndsnpkaK15XcMjeGmVwNNO94qF1VLYbNn0380b5YLzuwnzyHSiWrIUK0xoZR1\n4eNa0UgCjaV9JERx7MLbRym82oLH7FKcXF+w4IavcYuWN79XpvwSIgYZZvyD\nmLr/\r\n=ubC4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5-hotfix-03f858-kpe005t1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.8-hotfix-49a6b8-kpe3s8jo"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-a5b1ac-kpe8sf44_1622564152812_0.47840996506070455","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-685c34-kpf3ocjd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-685c34-kpf3ocjd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-685c34-kpf3ocjd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ef531c19820742333e72635666ea53d166ae9c18","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-685c34-kpf3ocjd.tgz","fileCount":309,"integrity":"sha512-ywovaBWlBzq6C/cQcotOW5EZ7VDc1z3s08iUuV6QNv6aKJiHxXX25SxQDM1QR49YiSLVmspuAOuRMDnQhgBQWw==","signatures":[{"sig":"MEQCICRn26aTcvwMtrN+tNPXY8oHuqzT1eZhgqHYeuUvPuuxAiB/62Rs2LFIMfv7ZBKrzNEQ3tzAwXSzmBr/PbE9pnNM6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtyfiCRA9TVsSAnZWagAA6IIP/iz8aaS/UzmuI+PgN6rG\nZAJGsxmBHA06lbwb+ZRoAauMxvvmh/Ip8zA7iHBW0lPMsnNEQGZmRrHyVNUs\nldawbl0HeKaKwyP9yzkLR2dLfJ5fPQ9lDpJRIyyDTJMgdUs8KpEUOdcKJ0xe\nqJ2J15MadmRMe+ympda7ClRCpwiUe/ecj8vCuSoJBJwOHEwRKr4vPjMCYhnf\n3oYqmcZunCeDE5Ze8kfvD3KX604yLyYreKDg2xoz+f0/Ea6pXF5hIkKpEqJs\noLh6pjQyq9WTe90GL2NngnhfNibQpfUrqVdIhwcIyzedkFtzjH1CZviXZRQQ\n+xy/J4uMgYnC0PFWMEOVU/nm+ybEZN3pCYbJycdO//unRWN37KeHh2WIIydZ\nHB+nB0aGncDqqd0DL8cSh2sMbP/Y6haIb2yW9CCuhqQ0zcx4KUxGtr2qlNaA\nISRyhybPw8A7s7SJHUBtH0hZZvasnvC/9FqpMUfjBxOOOXpvPfCY2Y8u/K7f\naecdLtw229RvtyCUhWIIvyt63ZU1ng0PQ2iPi427nBX8xKcJsbzjSWqsQFGx\nhu+Rz3udrVEhwLiFLkLW3E3s6Dmt3jHTkeKYFZf8CqrtK52D+i3i2rrrH0FW\nkcQg459sSkb/blBOYy0IAqJSKewdwEdlcKjDD5GbroeE7sb/fSQQd2zDMMlI\na9Di\r\n=OC6G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-685c34-kpf3ocjd_1622616033983_0.15782818048164238","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-ffefed-kpf4b58j":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-ffefed-kpf4b58j","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-ffefed-kpf4b58j","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"42e350121b9e81bc845f8679d16de712d353d008","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-ffefed-kpf4b58j.tgz","fileCount":309,"integrity":"sha512-/+f5L0ErUoDXMkD9R/yFuvpaTAEZzY0Qr9ZsuLjFfabLL1fyhBxOEtq70DbVgJ82m19WKgjrjJ7sv73uMqwr3g==","signatures":[{"sig":"MEQCIHFibUkllUlBH+5dbLFb9E2VpKfrR4I/dOiE68zIE/RcAiB/YCYMWIcwHlJ+yb1wlKScfuuWkqsLgUVxnIxbvuM57Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1564729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtywLCRA9TVsSAnZWagAAJJoP/jmFSb+QemY1mjDD5woZ\nxb8zIuxqqwW5/BHVUyqkYEr9NUdar/+zgUwKzvxFAJ+WouobD0sZ223Ox4/8\nMYE2c165b0/L/E6iVx8SDhZD7sehiBg7X0QV8KFCX4b6qmojEJrQclGn/pd9\naJe2EWS13sx1VGPaT2jG8sPE/NdlOv5p7l4kiWyDclcYpvp5dEBc4ZBdWpy8\nHKtCbV2NrbAd7hnuXlN796gUCPwJhN/MeHEjYR83RBzZ4Ya5tYDKNQEZnKSP\nmCO1F3v6ueywToFYhSSysbOdzFmWda8mldHrl1tlRE77oKbZOKDRdfOlorFk\n5SJhwTKoYkZBIx2tsfWsNSoCUlU5PEnlBsul6MDoS2EehjrDj/Vz5o9nxEVU\nWPIEtIX+I4ZMgVsHwC9eUi8hek5nePv1UmRVfgwbf+aC6H4V2joCd1WZyLst\nMhyo9tVj4HlB9NEC1bRWR6gasB9LUieaZ9jk+85OZxpZlSygaH61QLKTZoWa\nwPRgBS+8eIB+OuMl4oMMMlGPRLgHQ6NUxmRS/YorC8c9IAjVRRtKFN3/1qw3\npSMJssGbMaCYx58tbkjPuhSTUGf6ErniCW7fSWD9nrIayY0BILqzXsI11kPu\nI5k0KJiCh1cYBFig4BQ8qYIYdqKbhpoaFZUno4VzgX/+a/nK/Ei0BU0qLvjL\nkRIC\r\n=BwB3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-ffefed-kpf4b58j_1622617098688_0.28159531444200825","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-f97eb0-kpfaarj5":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-f97eb0-kpfaarj5","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-f97eb0-kpfaarj5","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"934726af0a0a81cb92fc13d99e0a790102a05f82","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-f97eb0-kpfaarj5.tgz","fileCount":309,"integrity":"sha512-+ZlIhqyw9DBMaSKWajW90m2KB17jtIy8M4anxfFvQBO5QrFIWBzLRlEWLoFi5TTtZ40STQxmoSonmSZJmeeNeQ==","signatures":[{"sig":"MEYCIQCVGMTNyLrzbA99fhf4zkU8UU5wBczBPqxrURiHCWsDxQIhANlsIWsdQmU+vnt14Etl7bG/06Ya6hGU7ZHnHYZ/3CTF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1564775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt1NTCRA9TVsSAnZWagAA8roP/2U2gbGSdqDleIEpJ0wW\neveTPy0t4mhMA0jIuA2jEFfxRUiIDSJJKOdkuIkVzAKr1J/CvexfJ3fK7Lnq\n3bhkCiFZefC5EhOmrseiM4yGXMspoB0KC16M6cwdnTIidSYG8IDlM43UddSH\n9F69SxwW/tX/w8iCJ2LJo1m9oxRbxpbQpKr7EM45ukbHgpNxq4Aqya3szLjF\na6KZ7blIyC3BAp4NPkW/quMvYDo8qS1p+W4imD89vaZ2lKbkmQgkc+CKB5R3\n/S5M8lEmzoFIitozgLNPe1c20UMxkCL0MsozyZF+mdb8FBD4Zep3WvXquK/1\nYYoXXVRoPF9j5PTJjM4bWMaApvZ2x9LeKJ+LJuCFyVxGNqeUwLAgBlX1OTVq\n5py5M6yC4uvOr49ljDBAKeHMnimb37YJa0ICH/aOmr2b1NKTsJAiJA0je92p\nReZkTrpCAumnHZ2e1oFCNpmG1tIHLfZzoPwyJFDcIiGBfTxUFH0/Jsho0K/0\nJOYLjHHfvg6MwZ5GQtS282kWMiR8ZgjI170Dx/+j40Dmgma6GzdTfLxf2Btt\nZ3dDbJ7e0UxD8fyWtoS8mQcPxwXv4LLtNQzurt1harExMm78dDU01rIrxkfF\nBdmFuysCkAGVJcy/CKVcDr+kcclJYOhzkOIURpxbiI8I4iyBx59EnRKEnb2G\neykV\r\n=wV9J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.4","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-f97eb0-kpfaarj5_1622627155222_0.8586597832597831","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-b3d2a3-kpfbsaii":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-b3d2a3-kpfbsaii","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-b3d2a3-kpfbsaii","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"fa010e50cf65829e11177c4b063bdeecb9689c54","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-b3d2a3-kpfbsaii.tgz","fileCount":309,"integrity":"sha512-DPTZ1UpxLdD5VCyPrufeW5NKN/nLDd573VsK1b3m2i1I4wAE5pLvlMsQoWz+cN/oqOVuMQfsFLMDzMarJcNwYQ==","signatures":[{"sig":"MEYCIQCbckDUv3yahwDEDeLSBEDb3dV3udjRoS8qWy1/JMEh4AIhALPPsN2G7qWfU3N5okFSfEWFHNoXMsqiKu6soZSfqTRE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562885,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt10YCRA9TVsSAnZWagAAxR4P/1PFujNwUQcFltLdG65f\nQMTg7k/8QYtrJbS+uo89jObGxtcUVfDEgWGj+JS7gXUQqrDU4SFO8AsDL+w2\nKiMroycNG1n5NhUDRYTyB80njdBE9hTI9d0Ez83WK8VjCFjS6+63zAN8H693\n69U/6GGLvNXfF8yNA8o1Xl61SordG49zABW9RFZ2i3ODDC47qVQhHR7l30IR\nNsGi9bxz26f4LApqIX3KSLsJGTUJK58/BTa/wP39g24tAvy0fJz5AUHVuwIN\nWSJZkF/lnT1rqqBXui5wcPNT8p6xzLyP0j+oXNq+M6Dc3Lrs9FK1I8EWx/sz\ngFuqxFqUji1mCNIDijwu1x45gTapOyXu2y/ViX5mVB1MUnmWO6KcrdNc8uhT\nRa4BhokpFAQdmS33APfStP0QthGOgLAEqkAnfGWelP9+EmJ5GUTyFQcuH2Cz\nWSBmlH4Uuk9t86Ha/+G6m1EtjxS65XEpU/bm6gVTM0wEHz1WfHqPvlX+QNNG\nKp3M8jcf07igROjv5+P1mPOqv5XyvBlkfl2eD8wouhkYaEqDeptuoMqt0vHj\nvrVfQVhB6NFXXdPRenGqyPnWgMHznUm2DvAe5DJ5Czad5sG/NsExzW/pZtN8\niqJjLrQKbWqg4WXNdCllpmIQCMFoPDxAPiaiEmg7SeN8CVLb+WncHl3PIPVW\nUj7Q\r\n=NCY1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5-hotfix-03f858-kpe005t1","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.8-hotfix-49a6b8-kpe3s8jo"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-b3d2a3-kpfbsaii_1622629655738_0.44082311507518446","host":"s3://npm-registry-packages"}},"2.3.10-hotfix-ade7f8-kpflx8zk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfix-ade7f8-kpflx8zk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfix-ade7f8-kpflx8zk","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c424f099dc6d5aa2581bb957041d98e20aa2050b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfix-ade7f8-kpflx8zk.tgz","fileCount":309,"integrity":"sha512-4INkodcaBeXIwgB2aIBCeMMyqBQPxcND0ZS9mL/ev/Nb61DF6tRSnTTni7CWRyY4BJKAocAeglYWoB9e0gmH/w==","signatures":[{"sig":"MEQCIF9X6oB9tFAP1Zg0R8Uv2FhVzWAM3KQx3eB5899ijU93AiB+oZ2vUiB55pvdlaSTtmLOP1g/H0rkrEoAklYQ6ipLAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt5+WCRA9TVsSAnZWagAAXHAP/iKyHOsj9tpYQIRmUj28\n04u4juEjaXliQVuDbYtsHLB1lszC4SrK0ZZlJhPtLJQTpJ6sj70Tl6QWCJSd\nsF6XNL7S3RYj1VZGCiZ8S4q2gFZQt7IGTSb9OlTM2zxW83GxqM5BncRlj3JD\nV4vZ+NC8FlKcDv0aWBK5y4UdUvO9bSxEsgml0xS+jmf3dLQ3A1D21vSaVzPY\nkOhHIv8lAFuzg3nKdjwHKR4hUqAfafCelS6JPbUFm0oDLtARSuQLsVZuKFDZ\n38FPjynsdKsp0pq8LIZ1T6OO/LtDSvjdAS+XHyNlKSHTu7R2svBnyQk4HpNg\nYmYm7ZpQ4JQfrnPnBMvYeq1hX28VNuKVdvTzlOAyMDQv7Ag3h6gNedNWDSe0\nvIQo5YqpUKnzDcB6YGlKMTa1UoPl8fUorSH4mRm9stWEK1IdbmvX941KUXHE\nr5TBSeQcD5ynVVVY0+93xxLnLkjVqa7QzqApD6nbFdX6dXxS/LSeRneFg4qn\nlioJpshdm4tfNb4l5BnxN60FxRe2l/9af4U4Y4OrnjLvDPt09FMXtQ9eVQ91\navkzBoDp0ZqkdLS82orpTf/oWvAUtUCxCEtPnN/KhaMbS5k38NWQeMwqNRp3\n9eMdfj2f1aOytTar8gu8chUZvA10vSIirQB8RiwQvsNSCzffMfYOTDZ+/pZ3\nikyu\r\n=m7gm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfix-ade7f8-kpflx8zk_1622646678066_0.1966789089578529","host":"s3://npm-registry-packages"}},"2.3.10-hotfixes-862907-kpflzkx8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.10-hotfixes-862907-kpflzkx8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.10-hotfixes-862907-kpflzkx8","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"12552e1e3dc494a571e7aacde70f88c67013aa0a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.10-hotfixes-862907-kpflzkx8.tgz","fileCount":309,"integrity":"sha512-SxHvXwdZeitJcG+7+7TaIpF7RtBTQU17cKuVeC8KNGfGbk5HyHznj+REd2NBpfhO41SL1GQ0iWOqk20lxKxN1g==","signatures":[{"sig":"MEYCIQCpwrwAlIiXthQV5/d5GPeQgN5CWigBzprr7nMDAZIKqAIhAJ55HxZ/SXz41yErCUW+wqAtJgbfKCuT2EzsNQ+SlS1F","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt6AJCRA9TVsSAnZWagAAqUgP/iUwPfpCVbbFZTxEz2fb\nqWud6/Sj+oa8Fjhht68VWMUBocOZy7aOPWNjLNgjh29GZcnMrXy0FnRR+mlw\neGhc60FfG+lr5B2veFZQhukjSzFALFI3+nubDiemj3gUtAe/xU8rfgLpoIEr\nDl9nqXZE3ZdccpRhUMi5cHI4L3Ka1nwOzd/dubogbyiIhYO4Jk82jBgo36UV\njl/nCQ9uUcITCEPcq04GkYC7hAPqgEmjQAU6kqOApwjl/vm5oVHlE16RaJfF\nNNrKyPaZnCElR8z4+FbA+zVm6MDMtsz+ModgcGRAH7qf1RB7yVAy03wSvLed\nElKzAq7qp/miiyclX3oAxvAJWxDsB1er+7QnhXvFPJbIRRGwaEi/B3qIMM+5\nhTMbLpg863GBCmIZH2mrwQydBO+aU2pu0LTfmg5z1lOo6v/KdY6aSd63iTFx\nbcWmXsAH02GXEF2nhvWPo8jYbUZ0Wsn47FEofS++9gPL2/Lup3JmG15np53t\njq+0fbjL+wA2XuvFInLEFzfeZ5D7i8S/947FnRqCszZWDYbe9lKri4vhCWLo\ng7PF0g3Z6rR1fcJBHyCgP2mQM2TgKl1H7mCyfQbfEMD27ToTB8q0z5mf927z\nbOO+X3BhxRmBQw81wtvZS5rCuTFrTi0hI36vc692pdKeqBIOAwNGbNooNzfb\nxdVI\r\n=W2lt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.10-hotfixes-862907-kpflzkx8_1622646793191_0.4363528354999482","host":"s3://npm-registry-packages"}},"2.3.11":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e1990698856cb4541fd18bea9cb28001c0332f95","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11.tgz","fileCount":309,"integrity":"sha512-1+hvUEAhAmau/n/l0Fd4MvrqueivUQYSo2nlrC4EzoFv9uuUae7lDFjjbex3Kvg7q5bG0AEo8xHNK1VNTRupRQ==","signatures":[{"sig":"MEUCICVPMS0N9in34BqX25liCilHcRGkdb6Bv4MEdLVgS6EEAiEAkp94ufFykkAw8b6UTaWYvisXpz9fL7Tq4+qA77wVGVc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt6c7CRA9TVsSAnZWagAAyM4P/0A9NYjCkGCuVxgmvbik\nr8yJGGCDA7aQDWqOO5AGybL92/qLqtH61lvTuhxNRkrUsPbNOZvXy9NmZ/sa\neQtj8M3wMKshm9cF4/co5XGgjjRWCFRfOa4OH+5UVVax9Ej7gadugVAYuyNs\nBr1x9JqKHJqOjTnv2/n11QT48X6u8hlvG94Ik/YAJTgn3CgoCaoZFMknSun8\nLJbvug8cNlTBmY4XSsKh38Q5RCw1bOBm1kcwSVD51zXON+/aeotbc7hmAqmO\niW39JroHm0hRzduw1VRlss03VMdDaB6On4xfdkXPlYXfZaOWnyenkv+5jtKU\n5EZQyPpL3zXajAeV/w8jX3hnbevceHxNsCxQQ6eD2tHCVInGyEEh7EzEe+0l\nGV3z/X5owV5+CMTm08EXkXRL/zDyQ6BaTrApZFs8C6Ymsyw/wEDDaUbKIBPc\nF0sA/lZKZIe9/Q9oZPTrRErvvhT2LT5w6/TH/vtnrtsjAsmIp/g8R7c/D0oT\nT4yTxecOg9GWNJ/XTJ6QAtL+4Qs2sFLyaF2WviX4tk9dss5/FQa0yCvRo/+5\nSz2WSKcUSMLyUS/WEQrjZEtdyjfJZmvLUCfG82p9ROyfWGmc5awCbIn6UoC0\njBu1k1iLlTYh2t7VsbW+K4EefZwIWswQQHB0SGjJjTKMiv61WXBHZIDiXbGT\n4+fu\r\n=LyJw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11_1622648634906_0.5656543101322575","host":"s3://npm-registry-packages"}},"2.3.11-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"77ee0fcc9c2acc540e83d77dc60c8740bfee3e55","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-alpha.1.tgz","fileCount":309,"integrity":"sha512-LgmVxEN+cFDXgZ7lgWqZcZG8eStdc9ZlhDdVCQuuLJTyV0V+EfPHcB0BnyOrR0Jo3OujaYXsTC1EQ1uPvScyIg==","signatures":[{"sig":"MEUCIA4N4HafrnnnUDSjcPRTbEkbJIFaIfYuTvUR76WXpJahAiEAnLcL4/TIR6YLOUSaNjN4xN2DtiB03ateoNfQscWgmHY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt6dGCRA9TVsSAnZWagAAabAQAI6KilTQi4VDhazNvo4n\ne38g1KpVX9CU9HMQoWD7+Az2Yje+0C2iRjXGkfYyo5/nQvHOC3uXBnJG9Mwd\nKzutNq04/pw5jGGg0S4e5bbRLOmvq57ZvzJmM4a3vxeGiam/FHwloyUeGxUm\nQ6uvgHr26bwo21Ko29jx8Xkbk6m7i5omQlkkNywgkp6TNBA5OfFVRLpFFMct\nwQqMLYX96mV+Ybkp2jcz0rAsy7A/QjmYtSMOTAz7Qg1f6thd9Npzzj9B2F86\nHtNYMTrKaiF0i4iFRHQ+wjXJO9mIetgqkRveDTxn0g9QFhECdYeKuGZ49f5V\nSyoGKrNt54Z3NJG1+ylFjKVWaVKaq7jgBZvDQ/CtK4yS2TGH3z3tyBv0hsfX\nS2pXwhwlyjHb/e0QGQS+XDWUcm/jQ4acGm+vZxZkuJfrWM+ESRypCkh4po2h\nQPq9lt0EJX0lLEa31R7/xDvG4xSZ7Xh8lkwFc3wU8vb2DRjIl6QjIIlQWdr8\nmKI0xtU8bVv2ARUQgya4E263y/Tnntk0b87aicsQ/6iM2g3ubg0k7zn/rtOn\nmgEakVr2CGQDjTgs/BLZgBdbligax8DLaoayWvhXpRYWF77equ0fjVCDRtcQ\n1ONS1GpUvqVM2XS9UP+yPy17kCetIeNQR1FGhtz6Lr3mXvWjtv6shqw8yZND\nv8zc\r\n=eyAk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-alpha.1_1622648646516_0.740333022770848","host":"s3://npm-registry-packages"}},"2.3.11-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a7a5196df49b3bd44d0b6e62a1deee46eb29c8bd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-beta.1.tgz","fileCount":309,"integrity":"sha512-qYauLissCfk0cVW4h2oz0kwpjE09AagwbzM4uXbHPnH9sAdFsFa3rG3xjrhCgkcw/QGtXkb3WYjyt0zWJqVG+A==","signatures":[{"sig":"MEQCIGW13+8W1MXMJyb7ou/wnAIqEG3Pai7WMyhCbaYX7O9tAiArwT7mrxVunAd8Jj2il++yNpc30hmljH3S0xAUMIIoTQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt6djCRA9TVsSAnZWagAAaP0P/jFuPRiisC+yY5CHkDCY\nK8tnRfqZTr6ecmMkrT4XabDodAX8BWwnAgK2fJhy16YbzwDqiQZ1p3un1lLj\nJz5D8osQG8IwTlyBPYc/sOlqLEtHxFfkkuXrNqEuGZmnaSLiPOpnTtx1g7kK\nq7dTeQ3U1S7vgVxHwzy4UApzSlOmbl+98Afpl98ysB828Oy/uVRFtuFHriB6\nQUtRIERO2zeHVaTyWv9B5bPTGzHa9ALxEkuZ1zqOK+fLRTUa/7vcIrUeN69v\n2aEAMZCDPnwYcCnY7PGSQnoKJPR/2rZ70CflsSN04+6AnGRkLunLOAzaGilE\nemntBtCuIq4mZF/3WSoPstuoEh70/DfaG5i13oGCiFgsm7cwGyQRbhVk2Mip\nKocqcI98VexmTw0EaOH11Rc0cPxJBZ9QVJvICoEvZ6zk1S/MZIEYZiP0Gqb3\niJlgjPwvKKrNfoYhjBlDKjprCGU/jABr0cU12uXEEu7aZB6HA7D/yNrEWz5a\nEI8d1bWoecoZviWRl1H7mugutYLCu2vrN4aOxrKwtzknIV2qmnJWuyTX9VPe\nNtQ7wjo4mHtVyV2rqj/anYF1fp9ZjrzegAzChrv+yPgmZ5/OIADA28DvTAlR\npoophsMucy6kk7QurwFpI7WoJIi9IfnOOjekvyGvUnbTAwIsCOhidAodJopI\nXx9/\r\n=ckiZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-beta.1_1622648675015_0.3949577719092676","host":"s3://npm-registry-packages"}},"2.3.11-hotfixes-5f81d6-kpfn4q8u":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-hotfixes-5f81d6-kpfn4q8u","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-hotfixes-5f81d6-kpfn4q8u","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1c0bd7a60e7e06c84f349bebe5acce79e5fd1003","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-hotfixes-5f81d6-kpfn4q8u.tgz","fileCount":309,"integrity":"sha512-hp1w98OOJt3C8YKO9TWyyqIk9+tzDGHkMoKq0plRHNiVoPabiOPDgAJw+c896K4152nf5lKO5xAS5+rrAdFQpQ==","signatures":[{"sig":"MEUCIQCU4dzoRWXytqjvhYZKKMKYR+5FwhqeIybXQaAW22p26wIgASyrj0bNpan3DLPj8ZFXRb3fAFWt8Lei9NbNf7AAuKc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt6eFCRA9TVsSAnZWagAAOYgP/33PVFYJ2iA43VXyFZUj\nwPrvrlQ4AbdsCe2XyYZSc0yPTUn+v/msACWFKYv309qdugpmQl+mM3bwk6Mu\nKQO4ybFkR2e64QY6siW5QepFutFTH+6TuIuUeI4fRycIVO6BC9NNF5xzttNv\nDkrcHms1YLS0agcHVJwXr9MlEClEPWtnS0t/a5uJrPhmbTScHSQ3CPvxCVbx\nBX/BuUEICQ4vb6TkPsZetW5K9FVFBi3V4Wuh8g2Zav60bEFiApld09NJowJo\ntZ8yW+l+jGSQry+wkSDMS7vSTxWDGON8vceQ8/XtcYjPAxOBOuk/DUafEQfI\nPu1bGBta/Ogv9napo5EwEvLAIsUIg8uzzXufg8SzSAEDdeUjXq8HCh5stUh4\nfyFof6aaV3m9TiOUt+a8e2UP4ud8XAxeQFofo1yzO+wukKv8wjYG11q9Nf4M\nVDiR0rQva4Yyo8Sf1J+/oz183+iHAyPIrb5NFQO+qmaiPmomzzP9VTQhWIAw\npZaOFbOWUBe7m1eqqLYmJtUqouBa26ukd0EpXKK0UpDYcT6w2BqUUr4ho5Vd\nxLbJz1+xBzvTnN9N/4hrdj4J7xmHOwBKm8F/VkJPb0kjyti7BlI5Btqkg7tZ\ne+82yRejxx8leRf7x6MyctzGv5SakX/E8qx9B/eJNfD2keO7OhyY9XwiGtHc\nM1bf\r\n=HH1m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-hotfixes-5f81d6-kpfn4q8u_1622648709402_0.4667411150029641","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-cd3318-kpiavm3n":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-cd3318-kpiavm3n","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-cd3318-kpiavm3n","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d451ba980bb9801199a4e0e0989f8dfab0994f4b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-cd3318-kpiavm3n.tgz","fileCount":309,"integrity":"sha512-pOT3iY8ZhMofmcJHgB45OLaoHZWDR/61HshbCyotGzK9SjTLL/gQnXy1Tcj0EV0eeTXE2kDCo4+SwPU/QgNyoA==","signatures":[{"sig":"MEUCIQDDNbHmzg1bn6yYbxQ8c+O+AUcH9xKTjibu79fUhRmfSgIgWeQFYhsv52hHNFRX/ud2BjRlWU2K4v8JYxcnpHFPbzw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1563832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguhu7CRA9TVsSAnZWagAA9RMP/2wUzuYYn/4u8AqT/bAt\nCtOa94giHt+I66gsSz+tIP6c/z4RqWweV+sSgaUACmNqC3W0CW09fZ3ucQF8\n24oFMaIrYZmeuLNT5gxY+mmHcYDvixquQCNcOd3FQRtR3FKYAjcMIfV3NGZI\nfdiqMkO8vfPQdfGURYG8hqrIe/Mn39pyk2yIa3kePVM4kgPUfxnWoRZA5DYD\nLoDeC1Ri777++x+GydFOpj3j56ZyJPRd4O9lMPdeBQIogkGY5g/jiXrhrrEg\n8iL0Le3DNbb3MyaRRCGM6ifQcem696T/FtrMz/XwlXXcR2AtpiXj3wnS1Ldb\n9h1QF9nhaWI9rRJ12brHHm4krs2l/bskHXOB2wJhvh6OGnZrrcnuHPK1hI9Z\napx0bjIbIrwT0hj5CjtyhkLG4R6uRccuSgmjqdqu10qUah9c+BFi1rsscD5N\nFBCmUU7X4do2DKH2pVP5T60uk2x0d5D9Hf3qV/AQhc58d0obHnmNWchGpcJj\nn43LjS5qo3aqkmNrQypIN8rKgEwuSa5HN5gHX5Tl1RQf99r21ygVdFBoEblX\nT5vmUgbyMZMDXVPRmwSX+YLHjJA7pmq7I03AJ2sgSaCqKiKt5OamrAPethwA\nHYhffzUWOgHh/5FxkAm57jXRat/AEgMzkyycauNVBGt5Iwx2PTt7wqUPDRBg\nKEOF\r\n=+LkC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.9-hotfix-2fee2c-kpi4ax8n"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-cd3318-kpiavm3n_1622809531339_0.9621270583875998","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-f3de22-kpidc9lu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-f3de22-kpidc9lu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-f3de22-kpidc9lu","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3a467ea992b0b7c908a5e3c287f935e8dde39644","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-f3de22-kpidc9lu.tgz","fileCount":309,"integrity":"sha512-brijr40OL9EP5BZV1C0sb/IALLynYW9R1gkcGJ9cHr6NenoZqwL0qEAmpOMISaRMw6HqcJZSWcf2fbXXcRZG4Q==","signatures":[{"sig":"MEUCIBxKy3lN0JVbKgeRh+fDhDy3A8/8KLaI9fvGL3SVO8oIAiEAxfJRbAKJM+nazhk802r4srUkE0rTbFu5xhMdfmsIxFs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1563374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguivgCRA9TVsSAnZWagAAyDgP/A7Gs/QjTC6PLRSybUL+\nB00503B5WmZ/YYwpqEtTD50iWYTzspBxmQLuGnFBScJwJ5r4qwiC4Yg28Ag3\nrcUYiGbPGBo60zkG8JlwpiaQAJ3wmlfR0go5p+BlyeDjv6wVEZEVrL5YZm+d\ndASqul3HYzTO9jc3QKvS+U/xl6HH2ecvzjZrFlA4T7aeS+gI8khi2cwREW/4\nE4Cktj63+D3nc+0arK460OfkkJtB30pqYEBWRpLeriWQcM5XYr1RIiuk5tzW\nDnp7ZIB0etfkrzSstYl92AwOty8X9iQ8bPJjyANKJxHER+B/FYCLJVL4h03R\nMZOkLYn2WJaKdr/Ejq9Qru4SuUclbQNIQwC3+3lUh6UUJHsnrgAJnY88sheg\nho9fNw+eB7dMWxVQtMtyrHbRq/Fwg73XA1oesQPjunrr0cVWQLX1Up4eCXyh\nu0wJOZLJ9J+WxfqWlhR6pQnJfc+oWR1QWTtqDWPxfnPLoFK9i3ncqlQXjXDb\nqKsN46zyj4VE85jPb/t8iYVqi6WnKByzighVbnJii/bxBZvELRg1AMXjU8wO\n3LpmXVnbMuACinnZmOPfJd1aupLZ9EZWtimWs2JsGsIYwNxyb/exrPEaOjop\nCtHf7FAqFfiyHqc9BE9Nj24fkDHAaoMFtwgludrXRKttyYIho76qwQy7BHlk\nevWn\r\n=hQLu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.9-hotfix-2fee2c-kpi4ax8n"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-f3de22-kpidc9lu_1622813664426_0.8152720284751969","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-b2e0ef-kpieen3s":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-b2e0ef-kpieen3s","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-b2e0ef-kpieen3s","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"77a580331856b33b986485d6252b200c8a44e90f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-b2e0ef-kpieen3s.tgz","fileCount":309,"integrity":"sha512-NoR69i5KFkboNUPqbqaFo96Cx/q7BYdEOz2KWah2oHoW7EJ6aCpK92ilCP+CN2XXJRtZvxV9A0gLq0pEzgkjGA==","signatures":[{"sig":"MEQCIAXFuo2mcgLKHUZcRwtyqVPchyGzk2gQHhBxyCjWUKKGAiA+b/7vDmrsvkpuQiQ12rpMn0haoX5Gd/Rv3r3t6ANtxw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1563838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgujLZCRA9TVsSAnZWagAATiAP/2Gmw1pdqLOEg4pQAhBm\nKyOgOFBENhJ24rBQByj45SEdAvqSmuF8wziGT9pCwwaDyNYEI3zWsyNjhVvb\nv/LmA9KDR01lhDNVF61j768YIqnjLl4DeJH6AdIkV8s2AiaL+aU/38TTNWSx\nRuesY30QMOpVuaQwmdtUV7R30LO2yzekuASiLqNIA/mhTIffAuVQgghlOiYf\nZ/eNap9SFg3V5Rolfbbh2y1rQxX4LfRlIcB94OLeLy1TB7V1I6W6ShL9SHVf\nrkhJ+RvITGQgMzZ2UBsHrYsCL77k2r0qqU4w2y3ZS+dZyUHIe+HBsaXZL6sT\njLM4YmiXO8fcE2RCefDck6Sku2cjQwVCYfgkCGcQ82u4odFFrye5GtTHfvx8\nPyrEPSTWf9SY4f+MUugczQ8y+Eo+9mtbXFEPSRYI6yq5ZxICd6VFMnqOouUh\nw9LnrJ+ZX6o55m7fOH1jHSVF69CJuXV4q9FM0r4D5yzsws7Zbg6RW8SUo+N8\ngfhNvS5Kzlxvn/QNpbNWzuFPmPng9e37k9ASmlrcPgxde8o85lYnANaLd2iv\nlUOVIBtJB9/fhonG82aZlu8Jh48Ne/LhQ756vsnRiz/3JN6ioyTLf9NGBE5h\nVdzYX/ohsr92SxhDTgTCq0lAFFTMwjeibvMSM4bfSNKrNofsjiRVCZWEwqvD\nQvdD\r\n=q+qp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-a1b095-kpidwpz8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-b2e0ef-kpieen3s_1622815448901_0.793753458180021","host":"s3://npm-registry-packages"}},"2.3.11-hotfix-e42edf-kpme7vj3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-hotfix-e42edf-kpme7vj3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-hotfix-e42edf-kpme7vj3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cfcdbe00fc6ace25554156d63720fb00603c4f7a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-hotfix-e42edf-kpme7vj3.tgz","fileCount":309,"integrity":"sha512-+eB8uHcb3cv8bKotSxe6axZKbLg6SbftFJxCdxKuC27nDhY3q/lfPrc5YGKOPW7EnbrmULfAtL3kb6S/HsQeaQ==","signatures":[{"sig":"MEUCIQCOam2MhecWbGxGj96uY9vq7biS91b/lqhEemDJy3eFtAIgZpr0+KcY7U27sqwqPSfshDKD/ErQOUrwIs4WzD1lFbM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgveJwCRA9TVsSAnZWagAAyuoP/2XR51iWOu4TOd+2inFp\nKKsFBC3vqDMgWGu4Pll1I4Rwl585l5Btr9hFKGhTixT3+/RnHeJCvyHiTocX\nd4VSx8JOFTFkqQo2rTYXb8MqJq515A/Vj8LnFGaDwTovkVFUCqK0iLAXBHeI\nuT2gryMJGBfjn5wSK0lU8DDHS7ZNbd6aL6O4XT6U5F/BcRD9tUfts/ZrbjYv\noBCehgd7qCvzeGqPAOvMb64Uoky0LvrUyJGW9iLTmCkUhvOOAPCRAak0OLcy\niUbGgpj/FMGFmdTvOK3lyxucmNI4PZqRXi1Oj9Fhtdo+/w/uKHKwxl+uqAgY\n42LgybuTCwmr/yI8xqKD0HgEFea5NVxPqFGnFH0BwjO/kChUfef9uOJBHiNy\nl8qLOaGoLBqtwa+xM9rTt5c7kL+Tna/lf46NBV2FpsezVmTRg1Bv7/CWhWP5\nZITJSGiOMHY6Yoj7cBvtauII2H++M0crW4f5vHf4IV30Up7LhfETt1Yo3mjc\nwZeAGd6RuYn+OpTdtlcVvd6TIfBWSWOD6/gpfwlkdJ8hSP5jXDTqs7/q3BAq\nyZ+mvfR+6SQ6pYTG9s3xurQnaiQLUma8ZyElsjpOh49W+IDeLQlscaQCWH/t\naaPmSjl5VEKUVw+WrJr6gFGl2HngrrQxKePlPMbi9SKU1uJrgyraPlt/x4O5\nt02J\r\n=3Bi5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfix~fix_process-definition_cache","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-hotfix-e42edf-kpme7vj3_1623057008505_0.18687267246612915","host":"s3://npm-registry-packages"}},"2.3.11-hotfix-d373cc-kpmg812v":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-hotfix-d373cc-kpmg812v","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-hotfix-d373cc-kpmg812v","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e1fd78d89470cef7542d4dc1c6368e309445504b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-hotfix-d373cc-kpmg812v.tgz","fileCount":309,"integrity":"sha512-Ocn3/zfKRvBHB9f4/82ihNiVR/YMifvGyB/wbkKN8NOYXhPRpSo+fy9lGVepkXsE29gU8W0QwITSj8unE7s3GA==","signatures":[{"sig":"MEUCIDrC5ThkKS6vnZS7jhvtMeDTitTSlpEq6WjxAhP7lTxTAiEAziZ0aw1XNYB8I18tdPHDK4ZiRl64f8/lAdFrk0C/NxY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgve+OCRA9TVsSAnZWagAAq2wP/jM+iqDNzFaut+E7qWz7\nzmZy+d7z5eloVYgzfUhjLBGsbKlAr8sET9GS0j//UX0m2Hah5wagylsuH/mA\nokDO4M/cnC+wfxkBMb1dB7V939PAaVSHHVdscyu5JzF16dlO2If94dN2xG7o\nGx6xqH2QZ57NK6BN8x2MpSdZbEvNRvpAVGQ7ysVOE2BkjC7/5PPO5xC2WcH2\nxx+1moxjP8Ap0yis53ff3Mu/fCxUD1u/wG1cJ39WXQuZykiCZ2nNoyfZ6CRC\niYhRuwKNkPEkA1ifnWRdQVaVsN4ewsxKgry6Rn8nkkNRTg/9ivDe8SOvrC6U\nqeb9SrDVY06yw2+4jos/j/2z67jiyNOEUG2aniYeHk6pYO2M4XlPk6o+ih26\nW5y1pTOvwXF3UZ1hA6FTsFeqntG/9LlUvkMDcCqIajnPkuxH+CtlrgGY09LH\nHf13cisekSg30HFbIHDNsMRvXhaXN0tm3n0gZgK26dL1O/huhVHUQlZIFNHl\nF3Z0yTEnfCHRpUlrIp6yZ/d4cvHPgUW6Hz8WtUpvVIjCgfeSSm5P8H6K7vkj\nhtL497LYfUWcS+3jnLWUX3rr+m3u/3FlOqVWm2Z4g2zEZuBk/dCm7QIAqom9\nCLwSnd1fcFlRGudWB0vm2RBlPX6xQ+o7mBB4Cbb0sbtLxkykxcCXD2WYp2RB\n+Kig\r\n=7JE4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfix~fix_process-definition_cache","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_process-definition_cache"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-hotfix-d373cc-kpmg812v_1623060366733_0.9447668788530397","host":"s3://npm-registry-packages"}},"2.3.11-hotfix-3c16e4-kpmkviw3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-hotfix-3c16e4-kpmkviw3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-hotfix-3c16e4-kpmkviw3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"921dcfa34c16807ed15a3d28a9ceedf1c8287227","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-hotfix-3c16e4-kpmkviw3.tgz","fileCount":309,"integrity":"sha512-2jIX6IPt/hIMkO+7hy8b3g0w59s7Nq33xsnzTjCaRLbu5qu3yR0TDxsC2o2D5E+5L8G77CZnJ//7dYArREafNA==","signatures":[{"sig":"MEUCIQC+URcVEzRHBGJJ5ZwxO/twdfq63S9qkBjAn2CBIgWWnAIgT17JDUpw+9nlZ4kTjUDJhXqVmh+EYwnptR1Nq9EZmeA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvg4ZCRA9TVsSAnZWagAA2MgP/RddSsrmbVK14OaBXwUx\niOJ3gNXOW4eUandyO3XcSxpIaTC/Q0oBHsCNygmlOsnYC1jaln+UeGo9Fy8b\nzWbl5CLgNwLQc5YfF2z+4qnGD99wuWaabjQy3icYRs7nKPShJJyKPOg1eGi7\nsie5m0yvegjh+5hur65yVhNvKuKFpT+uheRUqkF9FPdAE3zHIbrfXmACVd8H\nANLMrvzJUctYxbBdlT8MQcW1H/MO9Ovc9NtJ6JTbmeP3S9pOfQ9zRmlfQKqj\nGh7jgJ1rbRKxWLzoA3atjktxjz+n/2Ru2k7xNlCZ436SURWA5pB28Uz/ZIdW\ntHHrAMWzEzMqQyN2VRpDshVpLUAbvuE91UrffQ9o3E4GkYtU4dRYqkBEYUSJ\nbf1WGKdLeCqYa+CopA0apk4OBnH57Wvzp1upikH2PVKB2EVeBPY5hsaenaw3\nqDSUTBpBmrWgHHg7V7dbhsDVnTrdNRsz7Wh20Tv6lRHSxqamIzvIsL9SdBvM\nSFaf3V5VP6vK/IIGWEgyzZCYi+0XB3dFosJoWV3rwJ0XrEeVpqFdI71nktFP\nHnR/Pv455A50XN5MAx0sMJDrSFH03tkssmlpd1dtrXDISmn9bz/41opG8gmj\nOIY+qd3T+Rtr7WRMA6gHL39PcPbkkTGgjxqyhYJiwCPOwug2uek/u9F2+fbU\n2REm\r\n=X++d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfix~fix_process-definition_cache","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_process-definition_cache"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-hotfix-3c16e4-kpmkviw3_1623068185370_0.5001584515214874","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-dcc0c6-kpmlm5ff":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-dcc0c6-kpmlm5ff","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-dcc0c6-kpmlm5ff","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"30efe5b1b858629a866540cb90e17e52f05d3076","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-dcc0c6-kpmlm5ff.tgz","fileCount":309,"integrity":"sha512-se+JRHK91lYiu4QOkziHEkgt2xsmx/sAhhO5m9yrkV0FWVVYnSs1Gu6baIePobhN2i0aO5GXBAmuk7c1/59new==","signatures":[{"sig":"MEUCIA+fBZAchSizgdDqpO3h5/Xt+goziBxdhuqLV5C7EfFAAiEA03rD6KqzqyRgCFN1Kuig7VoFCRHETELuzRVmAYRuyD0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1565221,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvhL0CRA9TVsSAnZWagAAS/IP/A5rQ6XMPPfFNI0m5ySF\nRYJ/+RqSJskbUfZRL2rgeBnHPwbEbwCGdntH0eY+QQjjFtHaNanPBOA5HAGg\nfHRzkJqQFBRq7cngO/J1eVRe9fGuX73y641fReJuqIDR2vXZrPl5W1E8iXwB\nHkBqPc2YCOCno/jw0p8+dJNbbAGDjTCMwLad9RHQj2839WVhoJFFpNWQ1r3c\nRcz1LONkwme0bkt3LwDSMtHAT2cBkauTZ2+sYyidmPlV3W4DBT24zNjLKaEE\nnV3FArR9OrQhvQT9W45+R7Os18vSQRCm8AbZpC21QiXsQ7wQYy85a72M3CB0\nD9kn4RV7Nix1JrhqCvJnE8KflofBsD7m1y94XDqjPPJwvwC7RcNtljp1IDM/\nmDKiEmP8YcP0RMtH/5ytawneSWeEDdpFM+TcqHlsi+coINZsqIP9R3u/qL88\ndmpxvhL0vG4z22lZ6B37WA/JmDYqU8mEjLZ++ZltkvPLzxh3MeSIsvF8934i\nW7lyLdLmXn0HsHcGLb3B+JcKLlgB/E0r2p9pErdcFRDUZXtdJ5TAjnNSgfLV\ne19JfBtqd+NyawfZAYl3tNjBVqNgA1MelLVSD6LsVJJx4zB/npLX0PPfFLXp\nfmPcRFfy+xTvkv+Q/j8WpHODHwqujrrSWnuaqRzoFez2py8gXCjgnarIGr3x\n1WoI\r\n=kYAW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-a1b095-kpidwpz8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-dcc0c6-kpmlm5ff_1623069427888_0.07442629859277039","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-0f92fd-kpmmzgtw":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-0f92fd-kpmmzgtw","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-0f92fd-kpmmzgtw","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"825b455716780837e0f376ef96d30549b36e5ca9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-0f92fd-kpmmzgtw.tgz","fileCount":309,"integrity":"sha512-VKYC+UNYCcfuUfvM85xDRpaOx9x/tzm6UW0+IpIuLi/LAIGnLmS5NDKm+QUSRirDjKqdsnIifK7x4zxsTIxDmg==","signatures":[{"sig":"MEUCIQC9BDoMH6PuXkcwedJ8XxTQOMXr1c9Qv5zZKHDZoH5ckAIgcYEsiMsOcnxsFG0cXo3egMIO9mNIHEmCiFqYIL+Q6Rk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1565019,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvhvtCRA9TVsSAnZWagAAOjcP/0Xnsx9U4aBTZGwu2yI0\nglg/Z9NBdfVsts8xvHOifmkMCaUrjjccdBXv1Wd/Gmjhkusy9pV2XMF28s4H\nvcBVrjZC/Rxz6lvWCbNiWB63jCD2t+o6XPhWIhfP5XpQkYGJIJvfMBaXsSgw\n1upBmq/6VtU9VWKM556dbH70ictzPB8exiulNK0S5+6Wcd/y3sujJrRlyhp6\nf5Zs4FM07xhA6hJnMvn2S3l+YNhPP7ZuCAKBghDjp4lYk4RVxkOHN8ABEMvv\nMM+2s5j3XJ0q1p3LKCtx4BxCKER8AV/kgzihYz/uAx5bm7hXrKuA/5XVvLWK\nSysVNdFYRXTrC6yy04XiFbgoICvqwO6HUZLIlY2qr4jxp7Gbgor1LkL+RxjD\nryZttLJj1cEiQisakT6XygMMctPf4H5t1gsvHA/TSUGUmMR+R5Yxv88IhWje\nTb5GzO4oZTqR+dDTh3UJLdoMiY8yZ5XK7MZtuhaSF5yejE8TcCd7ZmyCLTSJ\neEZTSuoM0rBfqrLmXM4C7L/FphFpSTao/w2AftpzzkubxBiteXIHccixBMcX\njO3ozp/JkZdPGTYQgwAcFy8zWVTwqLLou9iKOr5/pzuuGnv+IkF1/S1gvnRL\nKjGOEkYVxfvb1OEvLa9DGqseBTJm7LRwJL/T9UNMcMInSOeNUXVZugjVuBCo\npYPi\r\n=u4zO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-a1b095-kpidwpz8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-0f92fd-kpmmzgtw_1623071725404_0.20765422093784514","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-b04eb0-kpmn1vt6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-b04eb0-kpmn1vt6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-b04eb0-kpmn1vt6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4540be80fe9cd9b6db069da060812584c6173224","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-b04eb0-kpmn1vt6.tgz","fileCount":309,"integrity":"sha512-5JZz/iN77e3qg4bq9nXpMjWmk00wNP5l1U0zDQgW1Q9zDfrZ9vlung/Gx/s8xwxKF1NTruQOw1E4o4eCQ4BXTA==","signatures":[{"sig":"MEQCIGmUkiLGNQqWvUuPaMeDpKosWqVtiOAPHSV4Wdv2dwmOAiAdB/nPt2rEOIBKnmqBKPSDHHU0u0mgKnFKN3EA0f18OA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1565067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvhxcCRA9TVsSAnZWagAAXxwP/ilFDZ6jtj3099r6h2E/\ns9ewAgcwNlLUTs5agi+FmRyHaAxdk0x+rTC+UK8/BPQmychPL9j4xcKBx3Ll\n5fHR85VpvDuzt0xa3c1pLuO0X9LYEacZbXi5NqbxWFGlweh++cE13j7smGAJ\nO2tKVwgHPC99NsMhuUVjuYXQ3p/AMxE1wkr6u2SD1ylyP/KPnJ4B3DN4J+XG\njIjLaKKWhcF4Jd6bkRsTymJHLh7dgbdUMTIH3lm6ywt2l5utWmfN2WPmBSlt\nSdosgXsnupC4EMAX72uMj7APgd7SI139AuTIvRqlnGkRaxs7B0BPmS669ghN\n6p9dOtKLd9/+vIW4/n3lRqpsVLgw0ksxqk0KBu3u0ZMltNQrYJ3GDT8JcPeU\nwXcliBXa0a0eOoOVGNk/UzhfKX+lhGtJUKoL20eD/sQxK4MgNFNKGKeUaGbV\n5cR6l5czw4eyObpAjL/IjFvsvLOrhOcu4IETOuviw1/lEwQAmxoi0l6LV4e+\n5to398yXU6yKJNNfiM/PfeC3V3vfVoCNgpDMIk2r+MxMn7uSrwcMWH3d8Laa\nosYFL91Y6q/pLlqIkGo7kQFc5/ha+aTXyPd9eG1tEx3O2EXD+SKUOiYxo8Sw\nfCV0Km9QuGSeA8eZkUE7oGl/c6naQr2qw9WDMM1/iCQAN8RzeVNM1LFpDc/3\nrpF6\r\n=DJLA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-a1b095-kpidwpz8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-b04eb0-kpmn1vt6_1623071836495_0.03238899916654314","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-703755-kpmn5rm2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-703755-kpmn5rm2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-703755-kpmn5rm2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"172d0856a5db1a4e175401f2a7d7f4011d6bf5d7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-703755-kpmn5rm2.tgz","fileCount":309,"integrity":"sha512-klU+kQcvu+KtIl75v92CRF444EronuRUKI08S5R527n8InINvQ743iaA7qCpBfU9pA1WxjPBqDV8Pm2MRru9yA==","signatures":[{"sig":"MEUCIQCZVYvRImN+FCI3HExKUw6R5BIuR46ysett+nEe9LYMFwIgR9TvE07TRVstvJ4SZa1kC6MSKA5szgteP/7IXCMjWYk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1565067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvh0YCRA9TVsSAnZWagAAEXsP/irIMme+iTvGzpeXXC74\nE24mbB73MO+TxlsAdczGCIGSgc5uMPKQ/Kgqp8krPMPcWFTDDoBQizqnCZKn\ncDT6H689zolT1Y7uDMh+nRJ9KvGMhU8AAUN6u7XgzI8+P/IF7GOgKcXjiNha\n7F8CgHzIJsfSpTqiD+7f07SnlaxIlpSyljgkYgKD85dFETy1SDIjOkyUzPI5\n9lbWV75e9A7pQI18zBKO7jFDJXzYupJl8srYYJrGGNhfLXLp6l3ZZvJxyG0s\nE21eUAFpbVUJCypOSRx1VbySwANF1xyOvum1FPJ2lAOm4/ZDZfOSkF7ZB2/T\nLnLT8is6I0gO9YTJNm6oSqrOIkhVv3L3LlY0Y1U9NWMgiIkCnCqHvvCu4qpx\nh+ZJsIfbY+gRZSHKteFDeRBhsjzCOsSOq7ccs0/6Vmv9fNTiJ53xoCi9Ih0d\n9ya480T6Db24fqqH496LNYe2YUiJH/JurVCrClVuxCkDxbSVkgaA3530BJGl\nPmiAisv9GRyP8WjEaKpu9bzIm518dm33trP+efAvGw2Z6hJsJQI5ItZ8Sa1h\nKcgjMqCeny1SP9F3Bge6gwofBiMFwwn0JbF+mgdjzag9eQQx/N1T18/uYiH1\n7MERRd1CmzBE8W/KN508IsRhEqr2QupZWaHCTAyE3K8pMkDYxtgzQ2WckOum\nardz\r\n=mCF3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-a1b095-kpidwpz8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-703755-kpmn5rm2_1623072024004_0.32631676843168966","host":"s3://npm-registry-packages"}},"2.3.11-hotfix-a5762e-kpmp0jh0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.11-hotfix-a5762e-kpmp0jh0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.11-hotfix-a5762e-kpmp0jh0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"99c859708e29738af6151733bf98ad7db0751a8c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.11-hotfix-a5762e-kpmp0jh0.tgz","fileCount":309,"integrity":"sha512-MiOydFR2VN3HW++woKp9WBSBBZWjdepok9q4aAczEdsBuBe8fb+CPhWMHuMwSEIrIdXZPX45EDJj8Egb8wPK/A==","signatures":[{"sig":"MEUCIFF7/Eg7G0L/9Q5lMhXrd70gY6qg+YZuXj9w7MmjnV3fAiEApLpCZCold4R5Pszc35kPhreYkYk52A//RPWQyWCprBs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvik/CRA9TVsSAnZWagAAoAQP/3YQPgZDECJYc7Q0TdI4\nrngRNusW3cqdTu4POo3zsI/NBWS79j3+XM9hPY0/eUZayzAK/8bgquiYfaUm\nzWpSUuJYwONvY+dKmd7rEAyWR3wgPHt/RQN1Q3+cOCdjxzu88qgUMyf6kI0Y\nL0Al7W2vxwpd7u1z6PRg4LJIyuYFSRl9AublMrAXIDq2R4ypVYuKrly4eII9\nsaDxdgF0jKHbLgr7JTWPr8Ffb6AzGrGpICXx2ZpooUiZZvaUqWU+wpEMQdqB\nDxVFdWfBs6yL/kabEberyjxFaaYO1DmMo8+YjPD3jDeXiXNta5/H8595z5tJ\nmpT0nbviPUasAzdhCg1UZ6xJ5MGmGCMwo/2Hgc1wUW4vEIzlVYtk8+cb06Oj\narcQwjv3PxjQUtaw15NKpuzqVVYd9tzJMfuz3AGkGexWpsuzkHhNJbq4pjFl\no1SDOEYZeZqJ8weQR60qUz9gi1taFSzkb4k2m7P2IHD9UvBIGn6xSEyWRK5H\n2PVqINSj24gwChlcDbx3xBEiS8N9n1EaA+vYWhjfZKhcwSm4Boe9vkrNJ6qz\nIw7GPRtfyDAxeUF0qLWONYStMfHp989qXK+5UM+Vg0RCcUgfIm5v49tDyeIO\nrg1Bh/NMUNtwU7MMtTSbr4UM2BMiqTFgg3zlw+1EdaRyYuWLlDK1q4G8Cas8\nVWH9\r\n=/S75\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.11-hotfix-a5762e-kpmp0jh0_1623075135031_0.3257629837270344","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-c8b888-kpmpro7y":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-c8b888-kpmpro7y","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-c8b888-kpmpro7y","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a15d44fc38984be78907cb1543bb70bdf22f2177","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-c8b888-kpmpro7y.tgz","fileCount":309,"integrity":"sha512-dAvBbpb4IEMOrzmoSL34TvQH/cP1krp4BDkwfW6hh+XGuP+wnKJEyTQ4ohOxn4qctzV6ErkthGonshd//cyoPA==","signatures":[{"sig":"MEYCIQCvE2zHlawZXInqarIoofc9r1/jHZIVCmi5B8kfv4bqjwIhAMOc2TS3L5wN6twwW8SSVzMwF5TBWx4xkwIoaSJLT2ld","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1566090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvi4vCRA9TVsSAnZWagAA9oYP/jtW2an/h8FCMy8EoY1W\nHaOf1xzZS1n318l5SWVYHjkbsRwYJfgZIqvDsXdCI3LEHJpHRyRfgMdKX7Fl\nEZpGnJpK9wVjptE+TriPfjVtnUw8JyOe+L6wciJ20HEoZTxxI6pjtjSxJ0ZD\nyrEkZ4l+pFsbxu2SZXsBM8HUemjfY+H1lT0C+emliHE1Dd0UI85NqV2rsBJF\n9GtPd4l2lMLXJSZ3aCnrPTXqukp0wBz/4XnnaWT2Re+ugDZzHJt/uRc9afAZ\nMrGrFZ4f+VIx0G6+whuH0BChEWb7AaxB1BLlkeDmzaGDUA9W7WpagZsQIEiM\n7GZ/9ef5jBVoWXK4ewQxQbXsHXX0PTSgOdOwK4WSpggReeYF7kX6IjOR0Vkb\noH5W/wIBGV6jdoeOsLh/5lwYg7rYPBSaEROPSt1VQKgmnWloJyCO1hxvwCZL\n0tlvEQR2YNualOuJ+a/Mv1PSekBP4NzjYL3s9GcnpY4+j0z+mrKj+1fAFxhq\nHQkAM76KWFFLpo0lf3+efWV3aW+jgQnhA6XNOV7XEAZMfLabP9a2ZuxhKkN+\nqp6Go+BrfFJbT8TetwdWx1aW/UFSyDTfncxhUeKhqlDIfl+g2v1xx6nvlH/t\nJgCWkfkwRcYTjpCeyOo+NW/xQBlcL+ti/uuWDdHKsAYePEm5F7mHclCJYmTp\nO4ox\r\n=lJwP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-a1b095-kpidwpz8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-c8b888-kpmpro7y_1623076399105_0.2926569943261006","host":"s3://npm-registry-packages"}},"2.3.12":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d970adcbc57c8787da797975c115175cb98d182d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12.tgz","fileCount":309,"integrity":"sha512-+uPOEf/1hGiCGH48RgPLXuN/2XTlzfgYE3pZQxHDOPpueXshP/XizhnTkM8GxvoF9uo2JwzZ3l/0+gvhrtIspw==","signatures":[{"sig":"MEYCIQC0COTdd+mtZYaVpZwrZr7p9ab+mPgl6XNnrmAuVFpZrgIhANpxkZ2ED1/28w7tp/nAUpTkKl4TzLiLrbLc1zXqPGMv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1566064,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvjU3CRA9TVsSAnZWagAAp3EP/2F/Bec2V4ng0hdHbMHs\ngHcZP/B5NCQZ2QoySODO12VmUX6F1vnBAbBmBodO/OjG4Rw5GciRqhxvNTxU\nHcOb4PKOs4EDt2/8obXyAYnwoJHEJWIGewMSiXV9Q784PyvOnhIiuURXrmtA\nrpjPjLB7pKW/rdkbLLBMNupCJMeffoC44on9ekng10XrM08RVRBWNBGCMQCH\nS1ETwDjn4X5hM2luosp57iFJL8CfsSCNwh8zUPc1vVcuQDu1f9r0fWyAjNDT\nReSmjXdScWRX4qEKo/AbolcjPHYE7V/28nM2rc3p+PpItu1fuSyy0yD6D8et\nv+/XVSvCwMoi0r9FzBEMupken+dTdSEN53sm/IAhnajrsqQxQq1We3sOVD2G\njV6NXQ59VxFUOUxUVuTPQF9vfXwlUegRhjwAoch7y+LuQH4mefi6x0+mp+hB\nHAgLsTaZ0TEeephdlqDQ70NC3GmhvXJXZqCWVSc1w88klpKCZmknWTs1JyzV\nT+TXQ/nZ5PZ3soScoxfkhgykyX+a0FTwK0MuOiREag6l34FPlJWBaXs+vWOv\ny7VTZaWS5iCi7nHtiI+HJ16BE9RHWsaozZK9rkC+2h12Ahow4AvOS4y05ZTT\n2JkLicfmg9rfnDCp/n71TOz9L5cYNo9cYMDtZxv26o43qTHgdbBb99sHhXLB\ndS3B\r\n=jGdk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12_1623078199775_0.5938763133105569","host":"s3://npm-registry-packages"}},"2.3.12-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b609c5eb8648fada7e030fbb91955efa879fd28a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-alpha.1.tgz","fileCount":309,"integrity":"sha512-bs7wbyuHkCxt3AKPft5RJVhO1U98IAAmvQZoZIBxmPhHB3cegr5oJJcEScbsIBplKIt/a97FMRsMIRdYfDCO2w==","signatures":[{"sig":"MEUCIQCjjjbLtrFEbb++WdGvwhztCfmI3A2FG75lVgMR6jym0QIgGdKuoPjg01LbVzi7vEMiAP2jPu1nEzk64jzUeG7EXKo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1566072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvjU+CRA9TVsSAnZWagAA/qMP/iaoICasrQWtpe1cD3+K\nmgc3dawoGeeB5DhXk5h/XkhnHt7syCfKrfA5zID8Nb2YKk4sON9lnFn0dUIG\nSSZo+Y24H0U3ixL3tDUiKE9cfvVB8ilZkpMvfwWKGSiZ9bnYlT4mOr1XgGZw\n/ntCx2cspGmGzdY1fHfnbszWI+8RNbZvm65xNbdRV36u2TvsDpjMd21C0WnK\nVRhofV7AuWyfgANjJ58O2Us3MP5gM9y+NmpIhnNNZLIfmtBsoU1MZswOZ4Ir\nCehY43a59MFnQmmaNE4e0eHsucmsnPLrhyruJbQHiwOHNha/6mQZosbro88B\nH0HkUxXnAxPzQPbKbewKUWc5adEfgALRGQ+8KHGIeCJwC21pyY98AeA3ymo+\n0uUwMSyjOpQf3lHOLQdVkHBfQOgTWudi/Nkh3EgwnyEx4EA1KQEAKWd5OaX5\niOfOzp3UdpzRSvdv6DaIfbTLntToUTvYgJFFQPgYUNK2RzCIsThlaLqAP2Oc\n3jAXRa4tw4tDYjAzhpz9GgvTqZZdBgx0UqMvpnDIIY3CuAKnHEb7zCooD1A4\n1XJwhanyV/kTuQJI0Om4RHN9PvRhDJ97620tIfCA4o9BrXo8j6qri3Gr9GGf\nPV2SM09ObXaajvo3TmcdhBGJDJw8coXd+gEDG4CJJndC21xj8ljXbt9Z/n3v\nPkB4\r\n=fUu3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-alpha.1_1623078206574_0.8372344318940927","host":"s3://npm-registry-packages"}},"2.3.12-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3196a00510ac7e9a65c0a995409a628cb69c5a20","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-beta.1.tgz","fileCount":309,"integrity":"sha512-SjYhtgNhXdAmP1BfgefgQuAIdkz5DY9LihQZW6LOBceeMzN1RhcSKKKEY8Ld0ABkLX6UA8/5H860K+hu3shQnQ==","signatures":[{"sig":"MEUCIQCFI0iuQO3PoWu61jAfhd9kcwKsSZjY6lDXoa6XNEWn9gIgZgtWY3trj3qVGR8qRmk24BC09bivFnYeny090rE3PPs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1566071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvjVbCRA9TVsSAnZWagAAC5UP/icZ0xIuAblZ3beaqT5W\nm+kaOl7St7vUiWnyj5SxbRkKBk8LVfznZJD6jSflwPG2Rkb281pbvSslh1HB\n5UkLmP3uqzK6BUtfY2KGb0XleMub4O0wym30lqwEtmzJaC9ExCK1e0vJ3NYB\nK+fStqpEqIdqtNYEDyiSGpbJt9di9JFJ3LvpDYaJ1Cbc+dyfpASehXOFjCkQ\nDnn9nmNEIc4XXKaV2YJBgJwDPOae6D5LzrHelWHANM0cbLMhf1gxXQw+JBvQ\nTqdi+tlYBhzemMauvfh5IZz2Ohv8TQMf5tvOaERBd7f1CFxkyyo3bc/rKOyA\nBQVV1tfk8Ej7kdi4lhSy8g8Y1sONLgJuqf1KaYF7lTDQebu7ShzYOsVsMDWJ\n5ABDYVi/pcJrlew/A/Qd7kJk49sGD/ilpdcNe88dQAVEDTrVNv34HXdMb/1y\nuJBvGaLmlZ1KUO2oWPpd76hB6U5ZFXikIAEK8UAqsMi0gGF4NkjmtKkzekAm\n1v8FMQs4jh3YF+Prza7onTQTkA5NnOTcNUxyDVxnav+yOiqJ9OpJORBvErhE\nRHB/JRUvu4ILeVILA/uaGepLqxRXI2A7mc7pxfI5ZwqMePZ2d2jyAcTFAhWp\n05MJOPbKrbeTCXK2ppgsmBRi1g616/33+yAy2l8Oc2OdpITW2f90LBpTBGEE\ndNoC\r\n=cWiV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-beta.1_1623078235297_0.5946721508833235","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-baf001-kpnoi0tx":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-baf001-kpnoi0tx","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-baf001-kpnoi0tx","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"01108ef0ae55a72da9dd61337229ed6d44dbb080","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-baf001-kpnoi0tx.tgz","fileCount":309,"integrity":"sha512-P0FZMB7i3t5KHldUF+4NISnworxwpAvsQ7IHtg1I13FRF9QVVub/7WIfR2NM6lBTdcAIXUubaT/xo0v9yAN7pg==","signatures":[{"sig":"MEUCIQDVGgWR5bAeTedFa1sQEShXV/RRGBVV/QN9b7eIIKVDbgIgfglu9k2AEaGORwe7ffmv89Qziqi2ylvrV/c9iHPEuK4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1566092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvxITCRA9TVsSAnZWagAAlHkQAIUjzEc4CSgwttBXD7XJ\nm6gOAlKAy2qP8Ehr0P1zW/CFRa3GKL9cqGuejFLXpQYbaaIrOUui3xkWMgO8\ntGGgFZoM+4cBT83b/W5WrQks6h2GqHar9x2V6Ma9J3yJzLB9IJ+qbIMhUQD2\ng4Z3wNDREd0R/257pCD2tL/ZsYJhM3RUjdAOEqh2AMvfQAkZLLZL34R2BvbA\n3gws33A/e57olXif4eSc9gV2WZx4795kBFjQgOLRf7xeI8+J9uHDI7AKImy7\nYn5R8bmSkPqcg+hLBLUI7TvAHWXyXnlmwjegit8EeuDh6xaFMBnhcJaCRNx0\nBW9I9K/F+VPJGMVFLZ0dqnUoqocBMpcUucTcpaRTaTxBdq1q00KMm2tW90Qp\n9FxKqVUt7h5IUmXRfsQRQiwYjcANnAFPel0jYOkOIOOZozbfOUpmAL7DnAlL\nmVQ+iupjMclu9ITz4bVshjvrVR4KOU39s/krEJn0J5wMsUbA2owyrl2cmwEv\nD61NL/v+PoMNJrniSQKp3kN8WfJVS+1rK7Va9tGGqokHXmBa/QI+gKea2nGw\ncbGmv+W7o3OhMez9+Gcke1aBOmbyB60ZwUat3r1a1hx5pbQhV8603p6QF4vK\n1Mk0blaQGv4MIRkOgf8MBg6WseAz7xyF6rbOwpUXIT3Po8MmJ6O0juxKrVpf\nsycX\r\n=qumd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-baf001-kpnoi0tx_1623134739741_0.4862907829041214","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-d95a1e-kpnoxmft":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-d95a1e-kpnoxmft","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-d95a1e-kpnoxmft","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"994425e098bbe4d80f398702193417db63a5f72d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-d95a1e-kpnoxmft.tgz","fileCount":309,"integrity":"sha512-SbU6ys2eWv7q6f1efUQsuUsO1FmOMEPk0FV+dGMW4S3ZSAYgCimAQe7nwU0bHUbuqvRvyDH4jj+32edzqmGlRg==","signatures":[{"sig":"MEUCIA0exGcQdyCIyYPz+vk0ZQsJFW8ZI6/wBd51Tz/9n/CaAiEAsnkYgj+EQojWphHt7KD6kgA31/S1B1gyzDrwAy3cbhg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1566094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvxTrCRA9TVsSAnZWagAAkjMP/jS/QLG6/NG9b0fgjKsv\nyRzKNzFR+ruMgDaSRBsT++LOyzaGxqTPqbRiN0CKiu9VvyNgjnD1ygIGhoXr\nCMvtB0z+dOh6PV8kEqtBcW957jHD+x3+jSmdCg6zGoCvuxgLKsugmRxC1PBS\nZpNm9460cPxxGcRH9Bfxe78/sC+sWyA+K+zKaOGE5H1laY2SmZEuRj8DslbZ\nQ3HQdG3Ci/0vMm+R7PbHDlZHXoyBIgZnbSi+G6LLGuxw40gIU+X+Nw76SSLE\nRywC57r8yUULmF3IYpBhMGg4GDISy0NkSQO+bivhZD2ucBhihcpooIi8ppU3\nM5U8vDe9+VYsNvg9FjAXxSpE+iv247utwSFvY3AC1ZZUOKmG9ibcheBTow5T\nwlFFhXbarblRSU+v4WzFpNTqL/fwdxia9wcMqTL2M0MXqtHBoRCgR/L4/9ck\n7yw7Y8RjQ8JSDLwPi8B0hw2DZt1qD7065BCJTcrhLKfczEqlTySkYAR7/2EL\nXMjDgcq5iJDdaoqkd+xnXNwWqBBnGmOEpGANRXwydfwUh4ZcKfqwLszWYsLi\nJFi6wrSGaFdjy/V0wsRu9dU8gprt2Nvpxe6Hy5dV5VwGs/Qx2SVJy38veSiY\nrRb4rDLVH4cP2Ct0G3h+u5+JJCh5RYu5OnF9xBfX5S0enODDHJ76XrIfRsWN\nc7fS\r\n=qKlG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-d95a1e-kpnoxmft_1623135467042_0.465559759998762","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-f55735-kpnqk91u":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-f55735-kpnqk91u","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-f55735-kpnqk91u","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"717f03a87b9f8ce56e81a9596e620dba189dde1d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-f55735-kpnqk91u.tgz","fileCount":309,"integrity":"sha512-0HHvaGayOpLQd5ZD4L1/Jcgf5y6HcrSKd2D1814jIKAwapRjbu/fSiYttKMoguDxze9CVGSnyTSExsooHW0QsA==","signatures":[{"sig":"MEUCIG7BBMYQpUIQwvHlwELqrgOug/uGRBT57W2IWakDdbpwAiEAilqgPYhnRStOazB+QaAwl1fY0wMd48Mtlcsw35R4+pA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1570856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvx+ZCRA9TVsSAnZWagAAv8cP/2HoKm/QPdCceraU4xx8\nXav8N8QZW1XXplrgXgtQ22CKuaarZsbkiBBlT9nIlcSnu0DNDrlBznPRJnxx\nv9k2FAml8okAljBECeS+p+OK7fO8wMR9XDN/NQgRUR7zg4VZWOuFy2Qwj96p\n2x7SQoKBUQg0mWWbWoe7jkACrdOa151UembbBlGNS0f5xx/qdKewD2H+WBAQ\nPna3RKFwHB8fIqfEZEYtCtB8d5I1u/HYOH5HF+LIB3SxLviKmYLgNWScQwp/\nxQXEhtxiT0BhwBVgJFoypI/V2GCRAM50++Bk5wGF4h/atKafiQ4/Qjve/kua\nAgrsFh//4tLXzojtUlRIoWz8vETnLiLa06UM8hXOB+SYlFzldfn1Iz76YqCa\nw79bEgs+c7Gj7laxVKeiYC3eRrDIvDgyjpff3BmihT5a7lyavZqoyiZCtZpt\n518R+QnEOpf7FwQU2+jlrbD7/52jo0NQ4kjw5MNS2ytqYJGT2GLdPgQsOQ4C\nCv3cQeyxyub9oNaKJf5euUk6U7GQgvC/luTxDfNCvU4dsrvX/6nBT/l6ToJN\ngz7YOBtOcQ1T0dK7iMp7a6bq81XwAvswheMz1RohkT4K1uC8NAmHgatLZy2N\n9RwEr8ciI/sCqZQZ8cJHscqArYOjxx+pagZGgqPN3iYzaN6Sj0WW26m1BgOd\nHt/H\r\n=8oqR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-f55735-kpnqk91u_1623138201178_0.13754879523001518","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-129f9a-kpnr27yr":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-129f9a-kpnr27yr","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-129f9a-kpnr27yr","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b6eab6bdcfac08f0bcec67ad3aba0a4da52ef322","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-129f9a-kpnr27yr.tgz","fileCount":309,"integrity":"sha512-aidKvP26RzEieqQd45bLlNmL6nMsr99MEzcx+Ix83ui4RCT2tI6rrB6Gxfg/z2oGRb/6LZSSMHhPt5Y0n6Ok8Q==","signatures":[{"sig":"MEUCICqnaxOiR8kcLx2/EPxioSpjYmdfaTxrLta9NJ+oAocdAiEAuF6iHTmh/UYPxV/jYNwKDYvl3TN40xxOLKKB0aubecM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1570858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvyLfCRA9TVsSAnZWagAAOHQP/0sj9wF7kxmZm2wtqhz+\nub89H7rWFst+BevlYtFBpiVZsgVnwEN9KakUbbIuohsTI0knU9pqByD+unAL\ntNcvjUS3M2RdyKLm6zrVyohmv5Xiy+AgiGAp0G4trEJNOzE47cQ2aTbUDOhV\nwlizWKC/rYjjYmKqQ/7lm8RJFsB1B7DAC827cFXbRUvyhMcei9LOayUYF4a7\nup0j8Ifx+4gA/thfXCBMb358RgHzM7asIumM6TbIPhTJBOcW8ecFElNqOuAA\nkfWwzF8AF713GpWTsFfYMb535UShYijpkVGoRJoSkcEL0zJ0l5D6orWEyFNG\n0irOe2fz3Sow4ao7Qjme3DszgAQGReQhoe3j0tOS2WQY3HmrPBmj4jue1BTa\nJKQP9LPWQTEHGABHzuGvsI5gGCgx6lqtiax9gMvRPi4dLIf7S8VFVjO7qp8s\nrAOiNEZ8aISAopXu6EjpEudAsmcNQx6BsF9Az/D7uhOMcL8PiWdblPwFvZu2\nNs0GkTcogIZJym5AXmNY+7b67MNpZq91lz0P2/3LmtjWBnnxFZXAVJsD0JV6\nl/dhD1yU4lHK9JRwTpC9kMVmvG9UaXqtLoXqZv5SeyppPm2AqZzUXJ3oOsQL\nM1C6rMPNDR1jIo8NyTFUCQac5aqVvmyGGd8Hjp5bZQ4GqPzD7vv0fyJslo2t\n2Q5O\r\n=QQam\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-129f9a-kpnr27yr_1623139039739_0.03417578681167788","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-0d197d-kpnsy75z":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-0d197d-kpnsy75z","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-0d197d-kpnsy75z","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f54d41b56bdd2bcc1eef16199556bf96c1c9e864","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-0d197d-kpnsy75z.tgz","fileCount":309,"integrity":"sha512-vt9ocHbUEKBEwEFygveD8XZOX0eVlpXOK80dZMF/f8NCQaiHj2nvumn8jpMK+cCheWq7jCLXyWJA15rZzx5jPQ==","signatures":[{"sig":"MEYCIQDzseuUzjmcsT+cQlPtE99E7Z77vPnpK2k8ij9a2y553gIhAPKiXwBthlrSzpUllz7nDHMe1LtrS2nOKolQXErTLTN3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1570856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvy9JCRA9TVsSAnZWagAADt8P+wVi3QYgkth8gzqYCkut\nloJ0Q6JQe3n8KXbviFg5VHyz/qjQkS+6bEmBocX5IVA86VsNBc3eCJME6eo1\nxEXhRlbIzrR26bEXUXjqAroosojO/MXhvB8TtfVWp4wzYLpAqDFa4kF1syL0\nkRjQ1IQ/ouIovz2PXEY+gg9AJR3F86/LKVIQOLKL4OK8K7LVs7jU43RzkG9S\nalfsXB00NbaO8greG4q0pktMuK3JcLfFiiGoTJpGfsylT4fsWIJTZZGD+UVM\nE6t4pFmB5rBa3Ys5zKiOPDMGEhej4i1kKT2ukso6NyxgXnIF+Q/fM1/ZnkjU\nRbmJj6Pf4VPigwrGiaVpEhUvPSGcRP4i4ks3MSiDvypuK61YqMyi5zXW6Xct\nOc0cl4a7OsS5v0PPFEuxUfo1OFG3XxsElfkUv9IX7qx/W3ACpUNuPRHNq4OX\nUL7eZzu8h4b/E1PPvGDL5z1MTde1GRZATmgn32PnRShTn4ceih3M8phsqzhn\nc7MFfFsgxjm7kdyYFXKNM1YCLQfIixJzn9umJ9hqkBMG1XkKfRb/weKhULVa\nvQVpASzIOC/j39T/uoMnZU3LAWO/OKb2pMl1jECEYRItJpvymCW4LjOuMwvz\nrJB5ultfbYInObOhGPPeKfAYSP4lIoRTBjMi4AOnNACHJdXTnHM/unHmJ1LV\nxCdP\r\n=eNR9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-0d197d-kpnsy75z_1623142217245_0.4074462744014553","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-604415-kpntt4ww":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-604415-kpntt4ww","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-604415-kpntt4ww","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3d5a98cd99bc8a149bbf207a261006d8f98948b3","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-604415-kpntt4ww.tgz","fileCount":309,"integrity":"sha512-5z0tLhPaRl72SUn+2QoHcLYUbBKcqeXDMTuhgh3RvRTjIlzG4nedxZX6jN1E6sDnVYUb9fvD7xdOlMMPqWQArA==","signatures":[{"sig":"MEUCIQCCHe6gmzlYdcHtYAh+OV1CiXRQf6w+8SkyL6eE2A/gRAIgWUL1IOIh3ul916HH1AmiHfnOe2zCZ70viSZL9fNvChQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1570858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvzToCRA9TVsSAnZWagAABdoP/iElUhB43yzIlWCRjntE\n9Yn3jEllLkkVLowsSP/8A+8tcQdwuZ6kkTDDdgOpRCpIkXeFU4Isn6BKZEF6\nLCNT9EiZPVBdzEh7LilwyoXZfk8NmvVgWMVZlIKOj243F3WLisjZEIndno02\nehyMmd5vCg9oXK9LxFH3uw5Q7S1Okcbt4h6HMybXc4EIeAHmYOAH/RFCHun+\nFAAalb+IuTmsPSs+eKsJHNO5DvZmpqoe2XsLEYW55tOjxR2fi94IW9gvmYyh\nWQK169CGb8IS9IQ7CAp8EPF2RR4B+8zIDcePEr41SXdN/ynLSkXp3HUWWa2H\nN5NBLgOZq3z2scxeWZ8Pg7zO0ExJjEDKRZhw7qfeFwiQFjkBEWyV6kORIGe5\n1wAz155Ktwq/0x7RECrM6oV8/Nduj3S3CqiVVt/xpwtOkaURIoE6RIU7jPup\nR+tA5igadDQtVzD25tws7/42JR/FhJZqMvKoNUeywx/Dt4USnBKi2Fa9ywl6\ny432AHwYrT3sVV0SPgSORUhpAs60mTGcWV8I0r5P08BSEsN728g0fhNII9XB\nQJwtAcbLYv59DojX+NXC8/ZZZr01wvpCQdmaS61ljX0RomqumoevPMJMiH29\nAperG8O/fh66g153oJWhnTraWHZgCwL16hLXLYyofOXPLW1Xah+FNXbH9L41\no6gc\r\n=K1ec\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-604415-kpntt4ww_1623143656159_0.8834405678689317","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-5cc5c0-kpo2uyd4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-5cc5c0-kpo2uyd4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-5cc5c0-kpo2uyd4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"17751937b792db1f485f32268c6c651b6975d2b7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-5cc5c0-kpo2uyd4.tgz","fileCount":309,"integrity":"sha512-3LYtO1ietThEMy+NxQyzjVK/WVqH2cHjdGlzTq19u41DqBFET7FjbpZoy1INTvWyl69dKh8+2+3XjyK8x1mlEw==","signatures":[{"sig":"MEUCICjJgoszn7S3edUf9ere5ZdOnZos1gudgrTJl6zFl5ToAiEAodpeSWuHSwr/HYAiu8hHC3gfoVj2xDGEhAmhHX4BOWM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1566087,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgv3BGCRA9TVsSAnZWagAACMgP/RBAxWemfECEkmIXRqKQ\nwgfgqeHXZgnxxFd6WsI83OJHgqZXVzHlvlOYZIVWBAnV1gnXmp0HsVxO+7M0\nNuTN2D5TrOCIOzBuRUH6lJXqTORu8/JbcjYgxEPJKa2o13zI28yjEY/GjotC\nwZcGNIdNqXqKhx+9BovFffLS25uJiUdJEQR2iUdHIlyOvhvcdFwDGCsf7EJg\n3GGDCYRlMuyMuNdjkkYZtKAC1Re7Rz9lfUOvQaS0u7X2BcnemYWkCxgbdTn1\n9rBTiPU+Xb9b+gFYfwvQ4KdBdQ1+fDNgAI1gmGxB87N2/nxFnxBWUcYcLGDt\npcdj83++YBT5bkRU7BEkBUnvRh9vOWo3T8ywUqSgXOeaIIJSwZB+tdlpV/Qm\njFAP12lcebtQbgBqhKft/lNx/UxUhuLOyXsi6VNoQAsRUCDrs84TOPkVao9q\n2OQ2QAxR/kNMvf5ITeneA1/aAxAA9da7Zulm3tTEUS4vkKG9owNC3eW8rkJu\nCpEkH4nlhCsmoJ+smcjLayKqPA425nE5vGxj7AV0cbpHmuHTYMJYhkgu6rV2\n51qn2NpaSVWKMjBu56bxhqp/4GwmCGBgZT7Rv946WqT+w0qxQhIVH8rWb2Lo\nlM6yu7aOkvydu24SkVsCZPBT4Ch97HwhAnzbkyNpTP6XnNNTZIJag6nRG+3d\nGSxl\r\n=Ik6m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-5cc5c0-kpo2uyd4_1623158854040_0.810675254736891","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-871ebd-kpphalt3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-871ebd-kpphalt3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-871ebd-kpphalt3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5578f2c16c58324fadf551613f1c201ee4f59e82","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-871ebd-kpphalt3.tgz","fileCount":309,"integrity":"sha512-XhBApEsEP5IevVYn8ouhPNjzkaOL7QVdMnJlbEsl0P7q1YEcguUqm9NTuVjIwwtFe7WAwIg58PTP3w1IenejtQ==","signatures":[{"sig":"MEQCIH/FhZMBX8/+lYoie9hzugrk4uzvIzVdksmAD0Xq51ASAiBMk/rOvNReIte+/R2+XP2nEPZ7KA8eNn5F4CgozJZdRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1566233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwLssCRA9TVsSAnZWagAAa9MP/jlQrbQDLmwgSYrLgiLU\nSG+84L6ORQuVLYHpL+nPTaxdWqt8q0kg9OjM5545mly5KzdeVzdFiRk+YYg+\n3omF124R4UOa967cj/s+MZ1n3MPNCghOwYB6OzX2nqeVC7BjLe9HzuQEGcw+\nUYlGwDallU5uwwiM18F/hN9BIyOUjnEGAOl44ekXppkVMIr8gMhlN2ZEtRQw\n4sJJRXdN6nBejQ6TzOsevmLB36K8U5jlmUMXWd5yGHBTKbMNQ8JQo13HVaBn\nF8+SGLNeRgl/wRbpjnGJ/zbOlrHz3Wn9Jc+syDmQLi7TVvF51siZ7pqSAa4e\n5SU71P4WEx9P9HNsr9HSwnHuJsshPs1/TIGoOL6+nUQn/ftTaFInaHJCYjYz\nZU6LPnwaU9LCLYAZ4mkVGeWNNRhwQYZFoa88tRgN6XMN5oVxrk6BagahlFvD\nbrj7gENeGHVI0kJFzPJtl34fhMbP+XmcGxaRmc1+M/eC3zbXr0jkJSJHQg0g\ndCPNARzBlDqp9tSqKlpxwZsC8FqP+qtE+AeiQJ74uHXfVBcmH5AC5QVtOJBE\nHhsQvv+iHsRGJIQ/UTYG7WWdOUUE11CanBcreTcZ+yy+vdLVGBof8MUPHvqp\naqvfSUNmvMg/YMBA6tvCRMmVomfTZiiyoadgux6CJBtfqpfpH+Al6BfQeac6\nSgVl\r\n=zi9y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-871ebd-kpphalt3_1623243564571_0.3647362042938287","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-146de4-kppkktl0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-146de4-kppkktl0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-146de4-kppkktl0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"aa30c61de0ef2ba4510a18a912c114da7dedc32d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-146de4-kppkktl0.tgz","fileCount":309,"integrity":"sha512-heDUdKTJSDg/60nEToFRjwWRPdzCghHjP2W2LSyoNXsT4GNRSELzJEOORS3yFTnfPCb87FlolaXhX0U3b5xXPw==","signatures":[{"sig":"MEUCIQDV8YL8xhhm9ll27O5cX6SiWMUf2MH/rV2doUGKglfZ9gIgA+YeS4AeCGeTjE/GA5SPRqc1v7xb7x7mveepO1k9slI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1580113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwNC2CRA9TVsSAnZWagAAC7IP/jVO/zaLHnUzuIt6CVSY\nAn5adr6zpUNk3IfObuzSFI16bke/A5xAPrXV7q70TPS2rduyBDTMsgxDRO9Q\nnIiusS/CYqEeshszPMX2pYmUCe42Pfa0jv0WYLWmQgwAVHZLf1YyPtG+E78J\nIag6AQ4LYP8vRyiwO+FbclJ2c1i5t9H14j/oZ2e8+us9ZRC4BceN0XcqsdsU\nJZjSTR+cBJopK8S7ZiJnGbi0xVlumABU7MG9f5VNZjXwGqX25hYjDxXz1uyB\nKhd+4+Nx5ELE5RWsJr6M/eZvlhOr1qZbczwP55bKAZPYimFQBepRWOmayNl+\nbFQ6vlkiZHeRPD5MqTlV32CrZfOEgW9IzT9aimjb3prLNDkikwKlCwLS1rqm\nilaoB7ob4yFHN8acU+wNlzUEZw3qJXW2YIcgiURqFzX6ksl194xlQUF/dadA\nM//4dA+GoOFROw0pDm8r1rw2pH5YIa6rf+7RXTQfAMm9SVqlTMS9UHADULVt\nYoQlOleKxJR1tpaEMgTXuLJDpDn8rqVHZYmo7M9Y4x8RUuJ/a+MZdJj4XzL6\nvQ7Q/h8/lK4/IRa/yLgbZT5YbtmdcYtoOsMcq5HIAacol8vZLQ89w/EKtMOQ\nvVUWnlAbsFtkigMcQWEqaaS33N6Skljk3T5Uvtz5EL3MZPosg8NGaMGCTfOs\nylk6\r\n=yHTK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-146de4-kppkktl0_1623249078721_0.9726547608421958","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-6e7b2b-kpqt7m8m":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-6e7b2b-kpqt7m8m","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-6e7b2b-kpqt7m8m","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"01b0bdce3a183a4e3c67352094a55eed3c7b58b2","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-6e7b2b-kpqt7m8m.tgz","fileCount":309,"integrity":"sha512-W4cCDPObGY9FT8OaLttbgFfwCpp1nx4SFQTR7xbKCwdE5aSTULZwYc60Zfmo9BPz3715WWrZvC+X4ZHa5YA6vw==","signatures":[{"sig":"MEUCIQDF6f7ePWf4eGFHzRnAMyIyR3HzLCkROvy9A8ta7WOJ8gIgQfAHo8KAvqvfvF67FeNLpNYYQVGandP1CW+9qPL4en8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1567908,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwfWPCRA9TVsSAnZWagAAEwkP/3vrwhQiFakUgVvDBLcH\ncXKH1LrnUq3a2MsK96xTA479+ALOAuP8WlCR4RlcbPneZ3hBezG2y16sS/QQ\nqJvX0riokE0Gdt812imVKrZVwzqvuO4PkL8YQNhUrFw/xavtlRlPMMSsfpXY\ncUEr0Skh5kw83f/bCoZYREzztCMFB5Iwvz6ELLIED9TvgIHUtMcXFRNhgjHU\nhdy0tbugFqBlYvFRPlQHA1NmSwd5iwQ9UIoqFuQhqHHjGw8r+jqslMHy//ag\nvJObu8iUeEyvAtdKE5uPi2GwwOzGHrC4WLVN/evI8nP1E2zh+YnN2yMaChij\nVHaWtSuBfwCI8kFCjM1HKRc6W415ambl1sjmYsDF7uf5JDnLir9FEeZ848o5\nd6rmmM9gQ+Ob1RXtow3J/s4fd1kOZjBdpiz2/VVGL0B8J1lem5dFFl4zYsdf\nn2VKR39YIaKnRMnuf90QGXwXgkPit3670uC/l8KJtbK/4FTIvjDgiY1QQ9+V\nVFPtjVXLMc6vFG1ktJhwY+auWhK60CYXUDDgis6HdgW8WehDl8o3/vPW73VY\n852V7zMdlVEAqJ6H89qQYfRz/Ret4KTrKUa4zgBzaJ5lFaMFWW2mITxzwB+z\noX1EC8qwGLF319hxpnGydPl2qYMLJH7L/JHv1m/4g56LZ4aoRti2VZyqr13N\n9xGW\r\n=57AD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-6e7b2b-kpqt7m8m_1623324047059_0.752662731159921","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-c7d7a0-kpqvtwea":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-c7d7a0-kpqvtwea","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-c7d7a0-kpqvtwea","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"815b7a29f4beb84415a4834e6710be4d92dab989","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-c7d7a0-kpqvtwea.tgz","fileCount":309,"integrity":"sha512-+shAWMy9LT3BMQSjeDqTh1WtVr5pErNYVAmaI2fbINQV2pNR51qYni2mmpwiv2/FZbUBbThz5W8NZsyBtjlWMQ==","signatures":[{"sig":"MEUCICoRioz/WI4PrXKshceFUYotU0SKu83MQReQDc1KJdcAAiEAjMVTtDf1Q6rG9AvK0J837m2DZAgMDuZPzMLq6JFCPI0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1568844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwgbFCRA9TVsSAnZWagAAVXUP/3v2EGGl+1xdCXH/IGN9\nB40N8OeBHYMkXtPE361RCt8ia3Y61PEcR9VgSc6dI7wMjC+Gbuv7rqtpM1Xl\njoq/CKBSj5XAl/TeQ8wBj5X/cObfoqZeCIehKkNKxPNVWfiapJDhKYs5rrKI\nTiOgHtiii4q1hS96GM01vdqOAw63ufaxlarWCSkQ1e862uv0kBQFmtFtxiN0\nzsOvAk/Y0Dh3ITaH031g+jVUxmJyGyIN7Ciyfn+A7VlkqPRtX9jrTEqrL98R\nlVqcpObA4vUBiXC5v7b4uGcZEMyzOZElJg6YjG68Odc0T3kkK9oPrvcFPAiE\nEB2u3gx7dIToIRj1JiRUT9mobbpRAtirxcu4Rv6NpwRtrYHc14/zfQwJLZbI\nuolevssxXFeWvGt7KZcN2WMLvH+gSDYRHtnukO6UHaifsJ2vyEXtb+Xjn7ef\neZscVSHTzPaRiLJ2BCrkdX84WA6yHJB0depJZuy/0WQmcBwMtytGf9aRVUMe\n8h+E0ETFTX7DBuIV69jatbBx2TrDclUXA2JU3fN8GajYbixDCctvKy5UC1dI\nNtdO8cAp2v0fD2ZgF3RoOWX3JuEt2aJ5zMWRR3/2EjSlxL8ApvX/nvb6Yltq\nd9jPSfE4SPS99ZYcrpy0zCVvf0Jw8YiaCgTd8M+6rAj8jye0l9WYh2eZgzDb\nn8ZY\r\n=sXaa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-c7d7a0-kpqvtwea_1623328453425_0.4862105988873575","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-076bd1-kpqy3956":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-076bd1-kpqy3956","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-076bd1-kpqy3956","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6dd17484845de8a7a90ec12e3e39b0ba8e112160","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-076bd1-kpqy3956.tgz","fileCount":309,"integrity":"sha512-3nZsx6xKVpGlLEX5XOh+3NCyQobtOPaMYDxqbdEdMQ4XDTs9YNv36S6Opw4N5/qLZXeCoVX59PvWv7zkZ/Pwjg==","signatures":[{"sig":"MEUCIQCL11AMJhy3Y+ow2yNrAmHaUm1MEEr/J9j5pw/CYx1voAIgC1RIG5TzaNF0DpW0qHHM9p92chueoa3R5ZpCK4Wp/4s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwhWVCRA9TVsSAnZWagAAicYQAIySlVhSe0NY1C51tq97\ny2wPl88Sc52Zdf1CZUJUni5NXuQT2Oe93ix6HPtp7I8+cHKMBOpxPp4Ryc2J\nxh6aWDkh7qGKSsNmAJhko1m+chXg4VLfRLmVSl78F2nd31VHt/43vaIhyWdR\nyskabZ1m0YqUZPmj7zjjgecoUXFrEnbrYPmrwJoLv49l6fhZ4B6t/0KUSiiA\nG01r6+Hgn/jkOktuFRY6/uO1EhyaTWph6s/3Os1nv4gpqmUTX1cc+gN2NR4u\n7q017l2v4bs1QE3edarTcNSvVA+NCyT8gQgmAb/frvhCfBTjKTHqu0mVzNB/\nKUEsrBkEXDjRCuEgz5+2KUBzEr3sGRCiOvkPOS4gw+OTa4kmdekoR94+52oY\nWF5PQXrYvd0O5NW+in5Vp6mzon3HkmhJ9BB5/3ee1Co0zZQl2nFQqH/sod8C\n1UTlszTPl1EQxw5mLciRBN4rD9NFOxB6rpT7otXXlYA5rEZMSql42tuGHEXx\nO5gJ3Ca8oVElncaTADy9QQ83ydIVZr/6XtIxwtoqK1c9rGBQXAkbg6GU787L\nLIGO9uaMQBNFdnqhAyLvNCGOEur2Q2JqzVkdSQAqwDxk4364hJlNVMVKVRrY\nf0t7ZF5TKi4aGg2HBfWsItgDRSESjsO18n0C4+IhL4W6X8sTTqgrn2pDAi1t\nFnAn\r\n=923O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-076bd1-kpqy3956_1623332245525_0.5669278755766349","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-0954c0-kpqyxtz0":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-0954c0-kpqyxtz0","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-0954c0-kpqyxtz0","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0d17caa0233a0643b11f38f76e75e430038f61dd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-0954c0-kpqyxtz0.tgz","fileCount":319,"integrity":"sha512-WXnZIY+DVUPWY55gA8fos+olaAUbw6qrBc65XkvV41CG/rSEtbmIPwUXpF0afVF7N/eb9rz7c/2vDwJ8pxVaKQ==","signatures":[{"sig":"MEUCIB1/8wlMP4m2+cbCUa6VdkmruMrxtUjS6inZKxKOXuMUAiEAmfDskHMSJcDCeFgD+YPYz59XIJtVopYZ2iiirZJS6a0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1585192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwhsnCRA9TVsSAnZWagAATm4QAJZRPmmOET3P0vBpJpqa\nw2lsy12c5H+0ghTb6g/MoSlBwdpOnLz2C9R3WQrQ5wmuFKjW6EzPJWUf/MJ7\nXkVMP0FWv4WEna9DNYdIf9uSc8M9OC9u+2V5H7vUFidZSTz2GgBhz7L1DKNy\nWXNMeGjt5RdU3Fu1EinBPxVUNWP+Fo1pnZncvPmCuB4SZCW1ExHU0nNZiwFI\neqmi1KN+BXmT+lKZRgO0vnn29Sy+mjVw9PStk8AVKEl0REiHggr29KNbFe75\nQ0aspWZoXAyFHYszYCzad3PhfzIlaBKN26//GrVJLc2ofSRnV/Hu6VbSfNIZ\necn+sAASGpo/XMBUDXArsi+Zll0XFFZGssIEmpyBb6wLApna64qU17WrhQnt\nNUdVYq9CzWPK6L2nYkqq/Wwm02zA9WAtK4EiWv6HbbnfkZkcp7vv7f2sW7/F\n/1Zs5tJassxC0aO7yIDyYy7IePFhyWbHmTGl0DT2J09Y9VKZTuPnweRkvFxk\nHuQMCPq+X6QZaZWNuTXZOpkwxuHURESTD4NA6089KBhCq3Mm35uALBRA4ZJe\nLDM34W2i00kbxvhU3X/F69VlUzmIYt2a8paNfIrQZ57+GXF9bm/rxLvKjpyQ\n7LWGujbtjxgetvKv97+A8ATWa73rOKMPeAuCk21z3jedFZyyu/cHZtXoRXYi\n0+HG\r\n=ISPx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-0954c0-kpqyxtz0_1623333671346_0.662123361594942","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-1d0429-kpqzelg8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-1d0429-kpqzelg8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-1d0429-kpqzelg8","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2b99d4c7f4a7ace5e3e8837a02bd948e4fd47d93","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-1d0429-kpqzelg8.tgz","fileCount":324,"integrity":"sha512-Ci/A/iJsND/NoQiH0uWOsHSZaIAvWm4pyeRwCL13G/U6Ig3oHWS79ciKFfmyljpSt996khqiU2NFpWkhSBfM6A==","signatures":[{"sig":"MEQCIBtZ8OqqZENgIz6P74Mkmczfer5gbDNw5DUZIgmjo1MFAiBxjDdp6pA98wlNl9ZGbdgr/MftVKkNDadMk8jP3vDArQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1587939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwh4zCRA9TVsSAnZWagAAelAP/0M2LhA9MarmEbCN7Wjp\nzEjeNrUpwsGcJZt9ELlNN6BxFew8w96gsEvzs+n00AAgJHH4M9IFRSdf1CSV\nPjKOGJUVeqHr3UW8wVcqh5DvV1ffvFNFXp/Xx4CtIrLjTkaV0sowriegvSIj\n29ZNWL1d8eVKTeInvfsM03Q9jpCULUFYOvjEz+9HTQoAcDOobzFkvDbkb/oh\nR8fUFbnPU+Cb8kAcQ2ITPcMbizv6Ycbaqz/QM6lld2+4zZNZu7opHUBklTjF\n8aXqe/JN3i7bmMZO4tCgXz00Y9vnQyg+WLanGkf0JOaqB42Sd+qjyqIKoV0o\nKn5dma3Eg9MtMuIQHttqkHg9FjK/dfTg45K8DA959FniT856Gp1fKXBX7Sud\nPtVjd9KjI3YGqTnDzXt+I9copFDuaP3TqRO+Ysf3/vyftbhMQcztVNiR/tvL\n4Rnah1Zj02brxVJ8JrlEGYCh0xsQxdY0O1bisTBQDc6nRerEZUs+AESkgr6A\nE7ItG7bf+cLAei8oGr5Zm1VK3npl5FSH+jAb1INFglJGBLBOJw38GIior1CZ\nTj1uLUFeCygmMr9mbxpt5qZWHVy0dhW7ze14CQWHSm0v0EGjEvNsSkMx/E3O\nF6ZTAP7oN+9E2HcPDhIyYgOyxIlt2v7thcQ5ZfwicJoNFAFK80rHXVi12iLe\naYBF\r\n=Lnf6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-1d0429-kpqzelg8_1623334451611_0.42853361674346613","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-a302b1-kpqzgv93":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-a302b1-kpqzgv93","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-a302b1-kpqzgv93","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"778d6ef2c5db549a81024b0fdc29ef6d8d315945","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-a302b1-kpqzgv93.tgz","fileCount":324,"integrity":"sha512-VL/DaR6A27SzOA1h+LmCWVIBMJFh3ixjgXvdNF6QS9Vm1RJ9x2Vva36J4+C3BeWRmeMn/ZGTGxivOLB6wWMi+g==","signatures":[{"sig":"MEUCIQDy/XMFsnw5an0Z0JjThgX2l5/Yf4F2W6KWM7nOHv7KLAIgDXZtGvZdeweNCdRwpwLLtZFinV8p28rvkF4pUJOhz2c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1588077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwh6iCRA9TVsSAnZWagAATh4P/3YyzamrGn+QQgHeF37l\nCkgF8xHeXz6WGGxVHjmr3UZ6aBvuclemLgfRnTDHomhkE1/kOpIdI2Z/DzZo\nY5frvHK0KbrkEwcr8ChlGoWktywV2HilBkTCGkOAfKvvpN2nnedT/HCuf5NK\nuhFPaUUhL9/d/54/FDREkOpGAEUe7hY0lSLwr4Tl428pmad3ipVJ+gMgEQXY\n0rMjJjvCTJkKsomWEKRw656G8kug8/W0SCLo7OSu9pKD2cjwSOxcV4Z9dcos\nP/cgO91KaIUjlND06yj3iIyEb/YyedcDEMTfKchWtp52P8EQz3QxJgfP0Cdn\nFGYca7RyegRd8qnHkS1NLM93v7l4RPqyRAHbA2b/Gkhf1E+AErOvojhC5O2H\n92RLxYpbd7Ekuvxik4LGTzUQbInosrWnsQpP/X/2eIuWWh1ng1MHDllXfPcU\ns7XwIm8U4a0NlBQP5OJs+wZNKtU59v7fvTdnavdMYqIYFU32s7+mA9jO91Wr\nEjNoaxYJPXqDV4Av4iWzyZYwIMd21kLBvR3bXJSuxU97Kzdlo30wLcO93xmW\nTuw+L77gFCFpx3z8mJKcJot5YfhRiTz1RSxxHF/sNYxdGylpyIw9GTLnTDoD\n/KnK4Ns61NM0AZs3AxNwmtZpzofamscy6zsY0t1ojd6W1hWn2/kjZoWEgqh0\noTca\r\n=q/1t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-a302b1-kpqzgv93_1623334562016_0.7847673398747059","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-b250a6-kpqzpe7i":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-b250a6-kpqzpe7i","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-b250a6-kpqzpe7i","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ba7e185980cc62c1a74411658e2acbb1b7ae03cb","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-b250a6-kpqzpe7i.tgz","fileCount":324,"integrity":"sha512-iJdpR2PDtJ3gAFnXcd5C3EKHN9bsChoBu+vHQjNkt5y2c7JySjAfkkLfGccNpAKkHPYRNqmjQ5TeeFeBAW/Rig==","signatures":[{"sig":"MEQCIBAkuUqpm85IpD0C2G8CPuI4t301jHJcp/4hTRUHJHFHAiAwkj+8QzqJnipZuT9zCBHodAYuZeWszZ61SERvQqt5gQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1587945,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwiAtCRA9TVsSAnZWagAAkRAP/3YvnOplB98fvG9o6zhx\np6GK1CZ8MMzd9qsQjrtv4j8pUfpsfNOFJwQDV9LYgPZDWCQ4ZXUrt83gxwXM\n7D9Mrk+FC7zKV+JOr5+XCPwTbXBs2sSw07SxTf4B9ElbX1NkkI4dD2iR7hnL\nY89EY6BAOqP3kpLDOqulwCbPv27MMKDrBCVIK2gaKTWboz/cM6xg6i7/RqjK\n5gWpIZgzXZ2/79ehno9UPO6UVon3EOMTb4kcWq8Ak05nkZgSz+oaAQnwP5MP\ngQkuDxwfdAtU1NPUtXIWcLwiW/b28p9mR8zRjpL7AIMNzgr/j3o03qp3/OV4\nQ0wlmynJYGOTLna+2Iv43710q1Lq/w4IaqCvMTvxFP19AF2knY7SAzwzyItn\nuN0TLGVYekrLpGSNHh4Oi6H5hBIj3satmDD6soyjZxEi4CKMHna7kk0wtQFp\n08JQ4VQic7/ryXytRXuUi8qRh931pDX3Wk6LU+tq3zDo1GYDh/LUT9B4pLBG\ndlX5pWYoVfg6tPoS8clUCsX69Qu5OPHuChEk5zUIHx23Sg+3/RZRvHPqvEFn\nFdG+xob3XIrazYCJLf3zI1yVwQdIDH2Cu19Zqz8M1Wbl/ih6WlbxftUsxjrf\nACarZneI222U25de8xZTovFjst4aavAINJuaF/sXJdLlAGhy6+ABEo7t25WM\n9ziJ\r\n=DIXQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-b250a6-kpqzpe7i_1623334957488_0.8679441735708069","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-b376b3-kpr027gj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-b376b3-kpr027gj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-b376b3-kpr027gj","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"205ebee750d4bace81ece723e3759c519042d137","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-b376b3-kpr027gj.tgz","fileCount":324,"integrity":"sha512-if9gV3MO2LZQwP374coZ5Wd/p2TbYLQPSTSysBB6wc4nynBJ23SqhNE2O7D3IvWQcbV0gUSbENDd9+P7ku1Tiw==","signatures":[{"sig":"MEQCICKADOrubs83YpyEXy+CaBGRgkOHvTwfH1S5MT0ZclnoAiAvl7hVPvbISQVclrvgk3uKztO0kBIwherHak7OU21spQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1596597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwiKDCRA9TVsSAnZWagAAJ8kQAIXkpWrzSvm3mNOAFxwL\ns91rT2+1LsyOnLKUd89xotfItRyA1sHZ84VDpXfYFqZDVZyMUq0L2FRVroFu\nhJw0SUW5XTgZsRlPBCSc2wflVMsqs8HO4sIMHEqyIP1ezsS1SmrmlcqJFWer\n/CXPC9agu2fVpJfNW+ocBg997uP7g2c5cdQaDaxObRrgQ00n71s3u1lpy6AD\nzNkBVddfPsxMWCYlAWcpuJvMaz3f+F/Rd3G1E7ms5e7pLKlpqrPcEFHu/dta\nsGiqN6nI/wQpHVsPeszQMI49cZls7V6X4Q74Nq5B+F9W28cIp1RuP0MhDoGg\nr4nR94PUHOuiC4SUqcgXrgIsRPR+6Vk6mJhqVCoyQJTR47odmFo4dKr9Vt09\nIASIxx850ueq2NZ+LRmNi94dC2Rzp3NLR3mBVjuvfmzUmKTfeEMGlbCzphzb\na70aFzg4QLRD6MX6u6/Ba255GYmFVnJyw1JN5B6J1O934rUjHyQmoVzqD10Y\nNe7GRXuD50OxY31l81hcnx6s8DVnozub2Ahesp9S0wsN7xaR66qFxF1ifLxd\neeVdlZFKK2NHa/IV2QRERhpB3tcRs5REzWKXMNOa6szdyJc31L9YFtSQgIRb\nks3B08/rcilSgHTASBX/SqSB3AirSP338+SPIYKpEu4JuYNFGq1l7vIjOI1o\nFGt3\r\n=2ofU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","node-worker-threads-pool":"^1.4.3","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-b376b3-kpr027gj_1623335555582_0.740026557229053","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-8575b5-kpr0nw14":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-8575b5-kpr0nw14","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-8575b5-kpr0nw14","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"e930175fab530d030cabf2f7dd68909508afd2e1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-8575b5-kpr0nw14.tgz","fileCount":324,"integrity":"sha512-8e+3JBEpH9IljWPgK80QZI6T5cbTiYCfIgxLhtV6/LcVXlvNwiCVEvpK9pBItTAzD1+OzgL3Sct0enR8iRYNkg==","signatures":[{"sig":"MEQCIBlhbTkv0Lju0a/9ERuo1ETivWrKVKVApHD1bMKllkntAiBjrUKbctFOEntaP6gyqpJbMq9tzwBJOsA0JUurreq6Mg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1596841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwiZzCRA9TVsSAnZWagAAv+UP/1MGw4bsXdrNOL5LjOB/\nqDiri2bF+tUgTXT1Nl9VzfYGELdRN94PIBrJaa+TOC24FLpvbCBRIw2b0hMJ\nK+ec44yQRHG7P/IUVYVR7IsmPAKKCx8YvBg7wex1zd3L8bubAb9U4VoLsjfx\nMlYwn8XnX2XL9Y/3+C29nYw9DjkumQIhrIL31EhpcJRfcwOJp6nmBLzAooeU\nYH82lPFc4giPxrt3Vd5h/S0NqXT3jFl7kmK6tTROKb2Foie/0gaaj4SjIwuu\nUD9hGS1zXLF/SPxBKtndekfyqYf9zvek9o0Q1aBOJ5Yatj+DMzUCB7U8RQfa\nODqtLh51cDJr2QjE+n2BeyXCs8Zr8yyekqdAQuFPLwDW0mHCekQYrEpZlilk\nKl+bHRUeQQBPE4mZspnMblQUK7kpqgiU/zQ35xEJThg4V4MBvHRwbxV0M4rH\noTCOAdJobuXgu6F0RzLezAQ+wmvyUU8ZyTIRtXiukRwleOM+FTENpu5NzRYw\nkTjmFMSoOz8IInBVcK5+Se7fv3VtAJNcrBP7yaPzQpdhoSTyHnoQHkrnzT3Q\nZSgC9uZ5EN8F1d6q7WlAfLpyRGeR2FucimUJa6kKe0W6V13avC1e/+Fv3Jz2\n9PXLhz7CMsDDiId6l5qO4GyqPuLUpzdhgzxSJB8LTmq1BOK6I/QJ3Elocfy4\nNRp4\r\n=+dpu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","node-worker-threads-pool":"^1.4.3","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-8575b5-kpr0nw14_1623336563283_0.83827260815428","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-0c3c04-kpr0u1vm":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-0c3c04-kpr0u1vm","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-0c3c04-kpr0u1vm","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5d19d76856673ab234fa2e32d1fa1bbb2fc7fa2c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-0c3c04-kpr0u1vm.tgz","fileCount":324,"integrity":"sha512-wvWLW/LRdL8tnJj1qHm7bL1Xby2V20i3kpx1/VniEvCrz5tjofaeVyoXs6+yCeqQ2eGRmxxY3VbAnqAIRHiMsw==","signatures":[{"sig":"MEUCIQDlIV2wPS9Wnfc+uWDxmOQVmFTd2iU3uDeUAgw/MXk8iQIgL0YCqeMEl2zGd7pxjB74vIsVJeMZVbAWvoarko7W8zc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1596197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwieYCRA9TVsSAnZWagAA3QEP/R51lZnoRyoLw25KMuXJ\nf7QqOMGHNF7frM6ugzs20IaZ4BaD9cOZjfW6aPzIttGuYM7j0O0dUVrbaoUX\nH7GGq7nJYfh/Q3EpUGSI5sLwLoFHCHGPYALjD+JTgZW4pLHWox7VpsqxfYbJ\n07vopUyHiZ7mRvmbG4wzVNT+ZwWr2dpRuaZNtzGTV4hL6mQfkOfLxq5KvSAO\nHmHKbHBlBI1SxzpXzR9ROgwv89neMWJeBEaSKX8SrPmWz3JRfcO4yEY52HiB\nw442koA3k7d2TjEhB1Lbc+yEsEYW4ykbIO4SFJmAqVqxZnUKWQ7ck9Hur8MY\ncU1v9hjbIsPLOHIoKpqJyuUYAmWWI7i1HX+aqQy7ytiCYSJhBYoTtlOQnCVm\nzCD5m6cpbNCwUXsrRg7KcA8xBSED/g0Gt/XCXQTX7ogZ7sgCjs0bwAWZPgz9\nWgJuJKrZh8SutRI3YeLaI0IeXefqKUXi1UZN3+GkeBm/I+TlrZmEUpEc/jfE\nAKHzdOiUQMO82DpEPghuDqASNUXcZrKkdMzS8TiMeq8w7TaFeApK6iBTVdZx\nkK0C4g0lJvUrJaTTJz8xIjll1CKsnSRT3Zlcslguhou4wMyYlsQjoLwJia9G\n03khLwN0kfdE16t0XOoRX4mE9C9B2zeGBDWQNO0VA9Dg2XQOSTVvEn6i6Vz2\nNeV1\r\n=EJQq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","node-worker-threads-pool":"^1.4.3","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-0c3c04-kpr0u1vm_1623336856613_0.15736779574179427","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-12353e-kpr1j7hy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-12353e-kpr1j7hy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-12353e-kpr1j7hy","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"759d93778d8c94dc9eb64b502debb0170a958717","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-12353e-kpr1j7hy.tgz","fileCount":324,"integrity":"sha512-M5aBG4W0jahITBDMTEvqtwFVSz/Ih+a06x99DWPNZ4MTUejNblaaGHFKviL4YKgrFGr7/lF1TQJfXY0s8D6btQ==","signatures":[{"sig":"MEYCIQDsnpE/q+DQTQNyWKaxBS46+fBNrRmRVYaJly+wwSQGNwIhANPKFhnpgcQguKNUGK8tds1tUOER/r3Pd5ICCFMB9Pif","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1595584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwiwrCRA9TVsSAnZWagAAi2cP/2Qu77pO0+KtzT5be39P\nycnC6O13mXO1XgdcXcLYZaro4Wu76oursyabR8yXpQnRkMt/Ew0nkBHeDj9b\nEgX5IKxFIDT02ELMLhr7IW9D4BTvotdsoVGjDSLI8V0a8i4muy2L6PX/bwwc\nrleUF0p7E3/5jB/DIKhdVjAeL3UaduRzSV4WdvN8HkSWTtu17ARLgWiQx0F7\n2QaOZXry7ixBEnr0je6+/1n+oFhRgjCf6/uU13dtyQmtIfaRCF3VQDME3qNc\nJcR0Gh4wt/vaDuTkr62qxhL3YoV2TpriT3iAiBIQ8pJGZ6Kg/BeiIdT4SfuD\n4YQEUX4Ii2mUeX+ZQ5XaUj6LXcDopO+ANahViysDdpshTg26Etjc3zpW+eNc\nGt0O3P/ZFXw2YwAjHFrePohJVFHhz8feAJwaKzo7c9DvPsSQz1rA6q3HEbgI\nu5GnkDI3Dl9P0qktorHes/NHpCWc3QPTJW/O/dS4YgF47DCHw6DtAYOHwzV9\nVx4qUjq/+UH5c9fvWc0qK2KQ63GKNRYCcH9FJdGOw906SudnkyZDCK3HRaP2\nH4B6IHcZ6d/4lMYkqn0pBAbQCLCtCK1QEar8JtwjAYmL/3iIFs7mFv4vku+C\nHR55aH3BEmRLg1XUY36Ee5rplL6gEwbyCFq82smsAHXFdfx7fgVfAVqgNZBQ\nnycY\r\n=vz38\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","node-worker-threads-pool":"^1.4.3","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-12353e-kpr1j7hy_1623338027370_0.3135685590348738","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-b83988-kpr2s1u3":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-b83988-kpr2s1u3","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-b83988-kpr2s1u3","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"3b0c7551720461cd4a3128912e416a3e2bd16189","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-b83988-kpr2s1u3.tgz","fileCount":324,"integrity":"sha512-GiRrLitmC0tMByyT0SznAB8yMTFyiLk8KbZDASzwvkkVXkMoxtdOsQOQ9kgI4JP7km25Tk3X2jj2nf2a9Lowjw==","signatures":[{"sig":"MEUCIGpeDLUwwzZA/0PIdeO6jvZyt6cfsX9aegu06yTriIRDAiEAiep7r2SIHq/GSIneptwjigM5o72mYBgxmHpeDjsxGhQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1595457,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwjRWCRA9TVsSAnZWagAAYywP/3InFTTQIw0DkEiXaqAl\neIXMkSvj6Tq6nZt8+/2xQ1/Cymy4zOAT7Xm9m+7mkL9KXiVBXP/42iVVCQQ7\ncpdc+ymH9tGoqHeq42Itxeyz81uqqPtdmBLj4H5Oj1Z6fjB48zqYWu3LUz0h\nlJQoSaNepOKHj5uNn79bip/RBY1pP5u6M5vMxl4qH2wRiY71h9nZyLniUtXp\nDBzclO6iXZG/SNcrSTAdHl2yUVtALEF13J+I7PflvLAXEXm03XahTtkeCxHu\nmeLPBcPs+EjrQ9OJpdbEmGNLjJLYAwfGrAIHvf2dvGFOXK9yFlVq+9A7OeVk\nGEFZWpKGY3kLidMEId3EFFw8siJG0VUJbZOqhiim2inwjrQL9PsT2ApTbYiB\n6yrZVKmVzjA7G14s8+47a++B1CJ4Aj9huahEECgMdiX3bUFr/MWTipsxPX+M\n53pykAfSx2CqiAFFNW/SuiArGi6UOw4n8/0pwEIQH0IwpN5fGlaZFEDpRueN\nrDYi4KCgZ10sA+kcWCYCgq2wPS0kbMcqk1mspR9y54ebdSvzPqHszEUbUBSD\ngxnmFU683zzckoXkfnfSoI76rjaOqBiJr9c7s3vTKSuri+14/0nbFC+ddMQK\nh2rKk1sUo7iKth6Ybl5GEujy2z1tt5hN+4+3eey9azo0KAEE1fCWdYTEaAx2\nw03H\r\n=IGvD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","node-worker-threads-pool":"^1.4.3","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-b83988-kpr2s1u3_1623340117895_0.5047615276896957","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-d43abb-kpxreo4b":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-d43abb-kpxreo4b","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-d43abb-kpxreo4b","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bd1ecb9e72668fbdea6f140e05450f6cda218c2e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-d43abb-kpxreo4b.tgz","fileCount":309,"integrity":"sha512-OPVHYKD/Lgqhhcb73xM0XT/7M3TSIscP+RhBfA6Is6QCU9PEOcGl24II9v6jtstH/WlV/jrR8NtAnyouMFX+lA==","signatures":[{"sig":"MEYCIQDBtDl1Jo96rGpkf+YcFtdFyUhXyrtYNU3rMFj+M7JsQgIhANDJUT+21DkrrPezLK/9qRD7GCwFJ6XIGbLXfOrV+T6c","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1597160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyF8cCRA9TVsSAnZWagAAx/UQAI1tv2izkPzo/sHZDRYI\n+pwaIUHoT7ZTIW9k2ziEpH8hqgpMJcerCX3pQbmCF+XzC2RfGSZrO/3ZTe+I\n8TN4p90Oe3cjvI49aZntyb0yu6LcM7aDJOp28feClh0gh6Xo2Nuk7kDmLyQd\n3c5drFvjMJBqVh77br2YtkL7is+Lh1r6kl+aCeaow4E2SJvPVcpUDdLVwXIw\nD3tP5dp6HnTSUSfxov2E1jWAKLYvkHKjD2EJz3hDoreRjauoifJdxwOtOjJX\nHDsz9p8vHgwwrvdYjjca+vl6PLkYn7I0d78eLbVEH6JFm9xd0EzgT18ZXFtQ\nnCbBX8BjXdavIEpmpaeGr+doWWL8QGbIrg5GI/m6j+ArytQyiQoTooB7eeZT\nbpPnRextziSg6EZyXGZrk9QV2K49MJ/pI1pgyAFSoSeDTsFbPJIT7j0YKOta\n27GTXxT/fBfMVg2L9KrRCFwLF5CGs5KhQdhl0eMeABVvz3dRhHuWiNfy9o1a\n43FBQq6Eta5DQbR9xnFtYHXBJ/sdc1bFTGBgUQ7V7T6QTPIdznHKNshqdEm0\n+QS6Q3VFONAph+N5u2SIXjkJN8g5MszWfHC44veBK+dYSAZxiJ3RHgVNnntK\nPPpdJubT6QzVSEj/2Dtrsx0or9i5IW8q19uazt0Jnei6nN7+ckJl4hxgRqCC\n0JWU\r\n=C/mv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-c37da6-kpp8bajw"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-d43abb-kpxreo4b_1623744284160_0.6878210663003954","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-833ad6-kpxxw4dz":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-833ad6-kpxxw4dz","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-833ad6-kpxxw4dz","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"aa19471b9fe89f20da3fdabe460660b9d40c6472","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-833ad6-kpxxw4dz.tgz","fileCount":309,"integrity":"sha512-wjBZi8+yYcHFH9cbz9ukA0rRYxFigEGZKB0CjvL0JYyHN8iitwnUIzQiZS4V0lzDmevUGTNP7F6qUtg/1x14Bg==","signatures":[{"sig":"MEUCIQCZ8kZju0b6HEgCdE1W5PRNu+g3+9jjN4KI7fXB4898uAIgd/FtbJ7pD07fDsjyK2MZf8bjyxc5RYPcu6Wa6MUJZzc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571509,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyImpCRA9TVsSAnZWagAAOcEQAJpTiMvShVRQxd8pxCXy\n0u3GNuJngVi7XoneOd6dr40ncAsTEJwo3xYZqFe3yLnp89r4RjgYMWZa2mcY\nKrBcQ49V/Fv7Hpf6e7Z8pEK3WrGdf97d1hpBZMrqKzM3v7q+KfwGIA63wB4x\niKjZ9moDSYpCLs5HohpkjfBPHcc0K07SmSK6x2xxVVS9mxQ5juURTBa4GqHQ\nUYKvkXXKiY8TGS9sjSfNOZtMXm1v0EYVfHh/W+AM49ihjcMAGgX339v+pk+j\ntutmSZFi6c31SbYOJXnvynFQNx/W958YOLbNGsaGVDdeTTE/ZohHLOGO2Uvg\ntm6pNeOXe1nQPjLUOZa0ODbXfFue31RyCGXdyhWdZ9Q2ng7N7b2HgHhuojJS\nQFJAG8iojGtBypMv0sgJCZ5FFXsqp5QBOj1oDhuCApoaljTezt8Td/isOqLH\nRSjpV9hjd6v1RB+i2pGz4GLJgVt+b8AjgNHKLEx0Ip10VqAWv4A+MK/4ZrOH\nTIqPlVX51NZh+XjciaQAklVaqG+cir+z3h0p2eg9NU7yBrmmpPzFoS1MI3DH\nBoqyCqbw9+YAWrw5rQRolGAPpH0218qNL7Hlbweneo54KGwEgErcIodRlVhY\nVUiC82TCSRFQGV7GeuhMkSe5AumncsiEodkNgZld3FNKEWsXf8yGk43xDjzV\nDiHV\r\n=/PVa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-833ad6-kpxxw4dz_1623755177139_0.48837065442332084","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-82eefc-kpzifw60":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-82eefc-kpzifw60","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-82eefc-kpzifw60","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"9d03c6b237b7e05e99eb42eab258ce17dda84033","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-82eefc-kpzifw60.tgz","fileCount":309,"integrity":"sha512-epu++YDR/ORuhcx6ZmZ6IkEW7vildx36iZ9xSJiVdzFH9giTdDm/VGJHNw2kYEJHEjYbcW0uNA0UCVXKWrPYXg==","signatures":[{"sig":"MEQCIAb/JQwFxoMXtJr8VNmbWpRfYtLRx6Y1HPUhRTU0A76PAiBF4Lsdgg0bi6zekNLmmEBEFcIe+TAu96RjIP39HL08ww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyfysCRA9TVsSAnZWagAA3pEQAJ7hWzrISnS+Y69m5CLF\nDpqNIQDFSbpgXsMCeMH4IG4kYfbFe8Uhym2oWUXmVtNYT0rnGCxnHS+ahwse\nGvd4XAj9ScYZ0Iib6yrFUGAB0ijfq4juqvSPOpBRS/chgUXM693NCeFc2EX3\nf2TE8RzVZTreR7tSZf4Kou86KBhdIIGSsSzKaA0CAnvngzNjBvk5txeUVj42\n7ztFiZ8NwVFtAeBrNGRByRDFBvCh8m6vdSM/RSWaII9s7PCmrEVY/LqBC1KZ\n3cJNkom4czkTGGwL0zFE6uBuFGSHF5obTLDP+Ay9zo3iSzZkSAFeHPEekf7z\nmen/NuZCslBAGxIg6zEu4TYlqCQ6TNL6pZxycdYB+wPHLCANFQFrPl1ttQhT\nCBPvv0vkWsdDwlPmpSy39MDSER6jy7A2creVB9Lu8fbSfpZAXCsgIKT4M9+W\nHRIrdVCQ5ylkBoCNbA+++EjHpreBeZm5VhAzKVILo/51fysIBE1d9fp8QJEX\nWD9yk6Oab22pIxhFg35i52lTqRMKZtrxzJdT4r/4uvgkflcMxGS5N25e+38J\nHk6MVn4enZg9tTiW8tQ2iyRUbDLoZapKaes7mNsu4nh5jydbYExHLnO5358T\n5DqcMFaSfLY4okvH/ga3ougI1g9Pe2WkXsC0ozgMPoYm1LoDQJ38aR/+7ysr\nh1ZW\r\n=go6x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-82eefc-kpzifw60_1623850156792_0.07577768635993753","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-26c0bc-kpzj1m2q":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-26c0bc-kpzj1m2q","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-26c0bc-kpzj1m2q","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d7a9f992043f03ae19b5682045b7632351e374a5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-26c0bc-kpzj1m2q.tgz","fileCount":309,"integrity":"sha512-mKtpUv+JSLC58yTkRiXxpe9SHRQZffKlxffBuOAbkh7sfd2MAxTNZF6k0fHdbk3iReYQ3lJ5RLhgGZL+aHHS0w==","signatures":[{"sig":"MEQCIA2RACWbee/JOZ1VmcENcHHz1Zdpz1p04LhEMCAQBwcZAiASkO2DjNYAa6FuUwoGgBIpNMrdc2EGe6vS0emRcn46Qw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgygCcCRA9TVsSAnZWagAAAwYP/RYh6LZr6guMIQSeSmuW\nfx/V46zKEg7Ui10XMQBPFFwyERQoBzSFdK9wJnIgjASv78NkXDnU6W7vXFFp\nXgFrBvHWfKv8YnQRQwlW/tjbOqaeUsOfkhmnM7b1ksIcRwWY8kFW+KVwwZ+g\nYSrgDzkOXCqKwMzdQQZrHQcezBWHYvv6+QiveARt/XKcQ4SccuVDiZQbPM8v\nAPDmOua7/G7VVymUYkYf9jwwCIZmNaNX/31U6m581nwz7smvIGW5y4vIpthp\nHlvEFEIzF0OujdtzYrWdWZp3tTpJ3gMcThO8sWGyALlBukW5SQ92iPADNncF\nsEqXQ1jIKZ1aZOFotPG2r4fJtdLtISnv671iWAhoriXfKyYmnzd5yAo4Ac+u\n3+HoK3jfjyY5RkpTIad6hLInrvzgJgse44Fv8XHZKTDZne24KWQV9Sv7UbdG\nT8FdpzSjzP8+Vj9QpiNQ2j2zBTJtx8i3xOQcQw+q3pEZIEqtACJK0Brn6nEo\nscLE6q4u1p/+Qq6vT+HS16DQ1HuQ0JSF2AbsJMdxrtVzd54To0CTJgfxsp7X\nBhFB0DbpxaIrXDyPNLSiVOtH/eaRFYrYBqQ3LRwJ/ISZOYUhaJ4l8a0peFL1\nJoiHxS+UJ6xxxXRzXj9KSPmG4OniuJQ1539DT0EomxbcLHmxYKWHlokW/3OE\negsx\r\n=mXp1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-26c0bc-kpzj1m2q_1623851164672_0.1829811612098251","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-23c8e2-kq0lfxvb":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-23c8e2-kq0lfxvb","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-23c8e2-kq0lfxvb","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5fb6d9a014bbc38b2f3ec905c1200e3caca7c6b1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-23c8e2-kq0lfxvb.tgz","fileCount":309,"integrity":"sha512-flEqh/LMrTq2vcM+1ExzjcdJcMZoIziyn7qR53C9+O56P43X58ELsydGyorRUggVpJB/QqD9axP7yGcc9npVXw==","signatures":[{"sig":"MEYCIQC6bxvmRcPmvuhJawTlE7hu0SmK7tN7WOX4gjwCmDPUXAIhAPLqbbdw6UNGKEQZXywqesYRxpYCdSyAHuo6jJa53R3z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1597160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyvyMCRA9TVsSAnZWagAA3ocP/RJJ2NBix4popsCnez3R\nkJsh5UpdY990GI9ik++03VQq8DjUGkyazL23EwIp92/i/rfZ4euSTBWpdmgs\nPeRhD+3Ztl1qk730q9GpObJDxF8Bc1dvKv74dTdRd3mwyXhF4ZonGzG/qtoP\nKKW8d035OmGn1+B1Zyj38Rhpa+jHyV20wC0/9uXSn1TzPn6IM0ykmgU9cj73\njj55Mxv7JvAaW6BUnaqDusHD1oZQxHhGrY+ZRpKe4uIXniEtApT9SLwPnk9K\n1sz9mkNI2kA3KRPXVQZGvDtmF0du8V4sN4YoP2mxNvx8DySZaPfRMwzextvo\nHjCxbBRbi+RwhM/BqX/oZj3VD1cAgYoWKStmHigHTVJzefwCpT5jwwasjbxK\n3no0Inzr1ngnnS0bj8g8ZZE6D/AWWQGP+cuMOFGo1sRJZc8rouWRv7X4UpRO\n91qF+4f4u9ShqoQfLSF3kLHYWErcW3durYpoNhCLb2gQRal0cLtJnvX44qlh\nmIMuK+W8QXCVL2uAPilU7R6o8lfrHOqQTpMEaw8M9GivvcZCY9cStPsb/btR\n5RyUdE7PyEy6OBjIr/bUjKIaMIRfhDM0t5KrxEp6zE/4NgroDOsAEnMFvppm\nAoi6SRIK1zHpH/iBxkDdT86G0zTLkxVvopG0bxf3ETsp1jQL8KOu0MY3wcYz\nSH7Z\r\n=XdSt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-c37da6-kpp8bajw"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-23c8e2-kq0lfxvb_1623915660043_0.9005025318955278","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-62f115-kq0mb3ny":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-62f115-kq0mb3ny","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-62f115-kq0mb3ny","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d7df7b912f47999b06aa523c0ca4400db37e41a9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-62f115-kq0mb3ny.tgz","fileCount":309,"integrity":"sha512-Ueng0yEtCRdvoyKNBMOTLwUQHzxLfJs8+pfVXSUYGWfqIRBIS9yyjxQuMlRTpO3JKuUaYCQCgfTpSpoeEd7zSg==","signatures":[{"sig":"MEYCIQCo4TLz8So7hifvk2aK+VUbcs4NcNJgt/FbDE6TkiUjkwIhALBT/nGSsjVDvn5ZEKt1yWRMnswzzUDwlJgEFruqbbu5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1597160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgywI6CRA9TVsSAnZWagAA8FQP/jzLeZMfYhWpnQ5lWv+f\nOgjIylm+1gu9YLHn+UoxpOzYE6p/L6gB+ylG+/HdTQY95RA9dbQYJzILiF/q\nz2gCBR2QXa3QxBhPDBwBotMKcAA3gtlDA7WzVHix9TZVC4BMe/2ralHqJEq1\nrRtxVqVfiMMnvCq0VbUjs5Mkh7GyXOrSHLDVxvW97HhMT3QChiONbVQeipEX\np7Mx+FhH3ojkMf9uuOOE/JL+Nwe5gWFL10/zkzFx6UGFKuqQQu3yjDrIenEG\nwuO26GR2rOBtYMZckK6aJh6GRHngeL89ukTgcM30MpEE9xINt1+Bde6l9uNi\n1/MMebfW5sApItIsoetvCnfSs547nRmd5Ho4aoLD0gfjj9L13WRkNxgsZKaf\nTQyO3Ugp/IxgKrwQDllgo8wJvBW+bWhDiwIOcRdOzE13zLd2zWx7XTcJ1a2c\njdJP3TQqp7HQ582OST/VqSrw1Ine7eMmojc8zAan6XZ5Fy0OokINnfralzUD\nfMqjLwFtO5SCWdsjH+wJyM8J5K8bHWl076yAjedspysAJ7AUHBhoFFGczb1b\nBt5s/MbcXADTUI+AgKSu8IZEm0MBDw7oz2/aoMNQaPk3kheLnsZ7/GhGMXaH\ncWtz8eTUjrxD1b4/sq+gW+klgXiB2I+1aFPA+pZCjNiL9uLsBxFi0Kt6mVj9\n+TkI\r\n=HuEa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-c37da6-kpp8bajw"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-62f115-kq0mb3ny_1623917113771_0.004368132343558262","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-b50e72-kq0o39rd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-b50e72-kq0o39rd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-b50e72-kq0o39rd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2bc21ee15dca755b86488f57042d0fe8502bdcba","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-b50e72-kq0o39rd.tgz","fileCount":309,"integrity":"sha512-YtqlfLlusNvE0Sqg1Iqe3W2Vfatbakevr84nDVtZoI3IhDQ6k0IwYzB55JtgBn4abvnOEPUzL44X24/ht6ZAPQ==","signatures":[{"sig":"MEYCIQDFJQn//NdmeyMButnU4AN88HUALstLLCWsveMl0bsk5AIhANtMWA0+hiqe9yKdhJ/Jl093twgTJUl8kc21zXbPv5jI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyw3tCRA9TVsSAnZWagAAaZUP/313B1y+cC+n/diGReiL\nXX28UO1NenOMwJKpZiRwXc70WGAb/s1NX3AR2zOacvS6oniVDu7ZIKL6EvZZ\n4ExKfxz8HON2JBIk9dxAdycF9WcjnAdS6HSKVmd/lOWCCvY0Rm2QrywlbJ+Q\nx/haWU/Xa+ilBK5/UNoJi7d0QI+hHWUZA0alRvq9JX5L7ejlHeADbOCIo2/E\n71FKcjwt/uNCCSodFp4hUIgPQtk0dFMTAOu+sdPautdI7pCp1DvBKBXEE+aU\nNRIYGliPZSrop8V8JR9QPZoKiqfBPG3IQruOC/pesYlp2pUYGabrbnAPfZBF\n/RYI4na2ZShgxbgEyqs+jLzmKXnqITim6gPaZ/nyVMaA8BpbgTNV+LUdN091\njZFvYLDb5pnOgQBg6hY7APz7OmWpI1WtNHJt7sptxo73+NPtPjAK3LChKr2L\n0FQ4chQlEH4qU9kkqIJA7W+i7cu6ytgW7TfjTnc53GnfKVYOqsYpYK8/qGbg\n2kSj4wYQPcUg/Y+SABJV1Pahb/pnJXhGD35RAoqlebgA4r1AlM0GH3Jqvrn7\nyTlRJEffl3TAh2M6Ejj0I9cwVLi1LdpvdnRBZk3jTzQX6k7Etc9P4C2GpkEu\nL3LawrZ9JD/0KqscVgM2XGS1Yu+IwUyOu89pRhVJr6/y7LQuO0XhcCtyIPYU\n/ojB\r\n=qD+G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-b50e72-kq0o39rd_1623920108910_0.03576640655043439","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-0844eb-kq0o4lt7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-0844eb-kq0o4lt7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-0844eb-kq0o4lt7","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1fba1336b5f10c00175a99fe6821620931fe6d58","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-0844eb-kq0o4lt7.tgz","fileCount":309,"integrity":"sha512-9AlwYMGA9uOszQPAMuCsSecxaRVWYoTCr9SpGg9lWlvhYi2THnVzq8bD0NgzwMGuPV8AQ5AierRMJnmIpyGh7w==","signatures":[{"sig":"MEUCIQCI+bPtkg6hrcguHNH2jtuB4y7Jeg3o8Lvfq2Ib47r4uAIgeCbpjLvIJiOaltWSbBW68JRAbe6aVnMi6Yjcbc0HkGk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1573685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyw4uCRA9TVsSAnZWagAA7UQP/jEjGaveGkIWSXfVfSP1\nz1tvvxXvD22oikRQye1uIM/2srEk+HpobXWGVRZdzeHLtztmCRS8wmMG7KL0\nGs+bw0raYU/HB5Tjafmg+Qez4PGwQZ5VatuqG26GOusFurfWlOBNYaew/1Ry\nsKq8fvcZpJOHJjO7JFn2UKmC1VmnkDC+xMVi6IzFgcrKQP7C4Y7Kqt5AR1z3\ng3pn7Hkj4uHjFfevDAlvji7/jLKcH9uB+ORnEp7jXgljCyTLwVnS0rRN9lUc\nV4cJ8Ra+Yvbv9B4KWESJHLQTlWro8poDPz3IkImVlUZYpWIn8idp/SFae38t\nSABWvvjFTNulZ30P5y996ykovM1DX0dtlNRtzOd3LSmyBoB99/zCEVZEULHe\nMpt2R8TCzBAnX01hF7ViuOr/2ajwtsFqJhlQjn2rv8gYwD4P/Rhag6ex6Jk4\ny2zMJJsz+7W+7unDvuE4l7x9LncTI4tTdRf1p9+SqMmvcT4lhHdM1ZNuSNrb\nCt5qUoAeGQbor/AnovkimFAfZw14Ojyw5bHTu3vmc2cPML0W+zUO/Jzr53yX\nRBcJj9VmslI7KSi/4DIu6+FjSJ1rAsYoH7Io6W4ZGNGxAih11CUg0qyrNPhP\nNGIDoKZsc2etppEkWkA78yre+2UmbpDsGe1fUKieUW7zXt1yeP/Mi2mU8eQg\ncQ9v\r\n=xqs9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-0844eb-kq0o4lt7_1623920174071_0.7768389539203926","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-776fde-kq0o73ca":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-776fde-kq0o73ca","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-776fde-kq0o73ca","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"b5a8807e86be2bd0f192c204db6e819e17b37317","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-776fde-kq0o73ca.tgz","fileCount":309,"integrity":"sha512-1id057DZymBRMi2BBzd+ymk0dtt6kyI09lXJy8YwNCz6N1ht6qAPTyjmwbJMbGUVQ/1DwMwZIUkwYhJWBXyf6w==","signatures":[{"sig":"MEYCIQDKPtcnao225cwFf7irSdJiSKAX4Q3aEv7fYb9wE0I3SQIhALZO90aD6rYma/bqsgxpqIOkMrdWUWfDecjV6Ajk3aRd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1573758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyw6jCRA9TVsSAnZWagAABwUP/jAorN4pACp6ZjPTsZLV\nfaRe7qcf1ENRk9eXZdAdnsjn8OBWHcyLJbArRK3re2BtsjNq1WMAsGCpba17\nAJ3SRQ9mrQhnH+D/jX31U7MXSz9Fi8Y6SWZ25yG6YJpNZ3xtePnAHPE4a3PH\njorpfDz2CD9mgHC/Br86K5FvY+EA8JEonl2v/1yT4ypxswgoivz6qBfplD+F\nshO7oD3p+nL1tYTzQOLfJSWo6sIeryPlqk08apHvIxA8q5UVLnV07SXGqKbs\nyw5V88SiqXuQ8tD5GG3ZLR8SyRFjZnBjlRQYEN12LijUDetZjCgpWMLVXfRN\nL+pybzA/MLxZdPP7zHCsJnZeGHpt0EiVVJn5z5cW1Yz4r4JfIb842SkCPvxm\neKMlyQE1q/29q2nEPZ5gRG1jYLTG2FiSnaHNuGhLZYUQii7YnNjo0Ccq9ffn\nk1daoy9g8TwE1+0jVT5mSCZJwSYtZqzgM3Dw8W0jCxSWdqAF3/hLZ3NPaGog\ncbhsdD7UDod48KfoPTj4hJ2KOQDQyTAxvXMjOvrzlxaOj3jYOWc3tQ02UevL\nhYUcdBl91MXM4iLSO5YO7Av3wpcNFakN2pXEQCwCCt23F/YPIlrYonkCnH9I\nktbJbCY8rm7xyrLURMRd8B0HkRKZhupttuus/SIze1/dfSVqwEuPl5taf+Tj\nVE2C\r\n=VpQK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-776fde-kq0o73ca_1623920291002_0.8459134265570831","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-62f115-kq0oeql7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-62f115-kq0oeql7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-62f115-kq0oeql7","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cb703a1d944755e91cedeb95c05fb69b43c163bd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-62f115-kq0oeql7.tgz","fileCount":309,"integrity":"sha512-Loq1/RXmPWGkhtrstqPXP2JKyLgGWFVFt6gkmSISexBnPu67dRhRtoAk3vuRlifL+LjucujQm43Bq35EgXlpQw==","signatures":[{"sig":"MEUCIHx9iRGGHICpvjTYAwd2mq5RyjcUuXNVglmEFVY75OCeAiEA5i+z/0jQrzbUvAmhlGrqdDQNJAgm5wcoHxMqBUOyPKk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1597160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyxAFCRA9TVsSAnZWagAA/FUP/19pp7feA6ZirajeDzc3\nZJ8G+T8+7GeRBA0pOPT95h5azNCBXuCQEGQWDGFkNAdn4TMaH3BM+1lVE9Wi\nJjS8XuuRHDo4DwUvQNh6j/MqxfVWOmvLI8Ywhukk7nNEKF6GoOFn8Aa0FsOw\nflzpULDueo85cfCfGPOmU1BkgSJ0AdhHl8EQZbhT5QXeMHVwyPGTyLlwBa6j\njQJBASpx+pqkKg9MLyJ9WPig9OK1iIhu9o2/gAFJGuIBLRYlTJ9vyjdmogXP\nyf32BMUHFwgrD3koFg/zf/2ESeg1GSQuFDwsMaugq8UavLKhDtDEPiH4sgoZ\nnr2EUWbzYYnFaUtcabFPmj8JXQ696IETQnTKeoxDke0DOFFEap3TFVeHgiLM\n+jueIE1ub6LZSXzLX48S6JGuzAQa82wIsIPdN6AUfv9yLM9EbYBYKiqYO31y\nBYS4eq+c8Si8Xo4y6hdz9FJF8dZCHmI2wPu2xyd/ud6l8QQrjT37AzcNoTyf\nTKwcJDcfsndNaF4lQyINR72cNc6R1QttP9lB9BBPbm7WcuFrqeeXzV/vNElW\nblqMDuasng1IA/ZPLp6PUT5LVI47ypnSUvDMO5QyKW6CuhP+7CYQidXKhFnf\njiEvJjP9VOS1fiYyc3xpEr2g3UWN7IpljrW98Fx3P8gOEU1RXD2cBHkWNf2F\nDL/a\r\n=V5tw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-c37da6-kpp8bajw"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-62f115-kq0oeql7_1623920644942_0.994558500956779","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-2947f6-kq0p2cj4":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-2947f6-kq0p2cj4","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-2947f6-kq0p2cj4","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6a9283842ed3bb08b1768ffef1df806b2668ae4f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-2947f6-kq0p2cj4.tgz","fileCount":309,"integrity":"sha512-Ybpw6jOIrr/lZ86pAEUIIzcE/Kq477UJOolvpb9Ku+PDnZq1ZvzuKnbaS9NyPCIXQEuqy35kYgrzU0JGjJE3JA==","signatures":[{"sig":"MEYCIQDcMLGTWU/yOo+o+IAUS+YL7yzz/QuV2MidLFK2whLmfAIhAIyWR0ZjWMWAcy3wflPQ1wePdSoG0+vMcIn+khQuXLl1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1573760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyxRTCRA9TVsSAnZWagAAG9cP/RQ2oOrIKVuVEKjFW1Yx\nKyMXpqBbCxYv/+pzhqd8lgjMq87nXX1b3k6uX8CDm3YnZNkuE6j4PmBS6Fo2\n7+onWlc2Y5K4g8+dmVWZnj108pVajkOBewwiM1ElevGd/nn3UTgchOWNRxFV\nEvfbVz4lEKrg5Tj14wWPcTvaPOeLHHyWc3neww6eP6BpFCdLVZ80xewlKmyO\nr7vTsq6ecFphbjlumYbRACmdZe3CVlI59OCwCCWKMcCvz9lOyrBPBMucN+Eb\nrYhu0J32M5huIxyXAAg5GkazZ8ZrqQdsepqR6ExZQOhaUu1QK22NYil7J1lx\n7e19hTh4WsNVwB9JZaWqczSAL/HXj+A9fwTlsjPDb5xp6+Ih180fqqz0lrEz\nHpwAoU0jDxwsE3PODU8/e5sepmgq6tEe2qgAkwWtUh0E183gggL+nCtq1h1A\nBejrqLYsjOGBEjV9P65+CybVnK7+YJknWpeOiBbRBQXKUyBaPdtY0RSCqzzy\nLoUC9c+j2NwVC0BgmsfZ/vyh48ffdn6FSsdkG9Jnem2zVSfhCqyKONE9H4NB\nETl0tlhlDtkned18qDqASplyA3DONoZlEdRYjv0Wp9hZ8OH9TMQHCLFJsTey\nZSO8BGUfb/7nhcHWx7WtUwqAjojkpiBCpmS0rE0V5PSZlSqTvM4ZAwALxTB0\nS7Od\r\n=kZgU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-2947f6-kq0p2cj4_1623921746800_0.8107518982053528","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-79c37a-kq0pbzwj":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-79c37a-kq0pbzwj","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-79c37a-kq0pbzwj","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"6cd0e4fa23964e25ccdb5c7877afbf398c29cd83","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-79c37a-kq0pbzwj.tgz","fileCount":309,"integrity":"sha512-+Kyo3H1+QhAuAgiVVmd05cUyI0caopD1gMIRRAxqskXpsfoDjBK503R+Ib+mXhPpS8ZUiK2MSo0TgrLyEHXliQ==","signatures":[{"sig":"MEYCIQCybZDD/Ad/EDKg2KocS7QJH7Hxe4+2q3FvP3iSOIrN5wIhAIs2Rq0EL1CrNeul63+5qAXZ3Tgz1wO5SfqwbDO2c8nF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1573759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyxYZCRA9TVsSAnZWagAAE3QP/A+hQL3v30vQt53Kk4yU\nxJXipg1aD1J5wD2/NYnxPFrG3NKbgI5wmhdoQD75nA3EP+6ymT9DsobuU50h\np5KU69s8w8lrj0buuYicC4o+bQdPWg09BP3NegrdDI77z9ZFJHx6Tv6pI4TV\noP/yEoRVeNHhCMYtlK5W0n5hIvOLNy3Fc3hYhstyM4Be7uOemnk2EwCea1Dy\n3jR8/EBKhOFVMTC0bLcmNnllAeoNYKiWLawcmPQsLHtUUEaBUlLMs02BfEHH\ne3pNdfZhgGheQ1CPncvQCS+LVGHxGvCFUuC4PZ5pw2QiUzhxq1r8RKZIx5RS\nlnErCBrdyJtJE8SYXOsB4nN2iSiqLxD+ePTbg4sHg5/C0jaZcP2Llvum+zrk\ntmhApvW7Hx4Lg53LfLnyN8RphV7UKnKrirCqqLgm/NGcxDE96nv/fYeHzn5S\nb7tzlbSi5VticsNXsql+0lbvJ3H+oeWJbfH1M4ZAuk1Y8nkTame/NW8VDXY0\nt6Wum95Ku81DOeMTU9B3dqwIqiOkoVAPzFjqVRVN1ZPQztSyreebBZwxrSz6\nkB16xvLG57K9g0hVi0L/dAidfQOsQJZrGpXVpdD/wnesjYr20u/gi7johvZ5\nQwXLk5g1MzlAI2FDGC/pcGQJ++sAwE4r0go9ukZGzonBffjVyoiHhrtR1PB5\nhOBH\r\n=7+qw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-79c37a-kq0pbzwj_1623922201075_0.8678968064403356","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-fff322-kq0pe2oq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-fff322-kq0pe2oq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-fff322-kq0pe2oq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f45e065d70627d162f761c6a699ccab02dcf426e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-fff322-kq0pe2oq.tgz","fileCount":309,"integrity":"sha512-ybW+WP5RF0vGBa8avMvas9jSyrhBFVjPTjBM3fYZfrEkp2AW7fzz8KBnvrYSRM5uC6oH8KOI6HMZUzK19HIAYg==","signatures":[{"sig":"MEQCIA3oU+rMU9gLe5S2nnNcDn22VZEyUZTpv7wEwsbsfOzgAiBkQDw8dIKDIW4okrxevWBJ9bSDEt2/QulRWrQLJA5T7A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1573757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyxZ2CRA9TVsSAnZWagAA+jsP+wbs+slXigQVHieULqm6\n6nips3DggshD1vlr7vF6yOrm8JJABb/qEm0/ynZkT9byNwE93QHWAK1Euxlj\nSZDn6qQWO/yVV2EihAz6mmurIvj0KOGDHfYF3lz4VvGXEPE+1zekiVjHGWKt\nPnzHaYcay1QMRCneDYhppjMSIL4eeb7yIaaV4DqQHT3ZgRxdbZDy8hdTSDdO\nvtX+59ND4/qX3mnvPm4Ut98cxz1sMC4Twq0m0ZH9onrZG/24/odDDRrz9ZfO\nYPIfwzmztEfZRkE/aDqKBfaTfX/Zv6PVoUFVrbcYYmLohg4lPNdEyERh0Md3\nYsiMH8q0ojnh5yAly+aHN/PW3vMYcX8xnlhpQb1QB2RnGIQlh7Pek5zE+mKk\nTwcQDC+Dd/MW6GYrkzB3Olfx8lF3IcvY8v7M0utPhinLX7KP3W5J+Ul+wJnk\nc2Q25Rs5jVCPfnULLH2h2dYw7lDrDhbvsiEf1trfDt4IFiJR9pFV4YoZU9I/\nvSsNQQlOLNOhUImTSx6KfISfLZDhVvlKRL2EMabPU4iiPR+OpliCKE7TYrb8\nmAsTJxxc7EcvYAW7YikMDEFwwVYE0i7xppfIL/D0HNTYzs8EBRziTKDhQ49F\nYjQe5vToKHb4DEeuRwb4mR49mDjUjvosle1TnlutVoPAjluXw+O2aa8m6nQQ\nury3\r\n=p906\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-fff322-kq0pe2oq_1623922293824_0.3963896994407099","host":"s3://npm-registry-packages"}},"2.3.12-alpha.2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-alpha.2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-alpha.2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d61813ee3e003b0cfea4c33c2f34103142708bc9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-alpha.2.tgz","fileCount":309,"integrity":"sha512-Agm9Q9yJsPZbHCAGOgN79TFy0NjYv/hmjFBHKGFdsK5GohTgG37bv6JshCWm5RFnqsnRUCfF2cVOFEcSjU4+Uw==","signatures":[{"sig":"MEUCIQCOQ9h41hKbwEJ2G+AZ3+mOcIAecpYNUtl+pN+e9xTjKwIgaL/7g7wGljVSvqqUObKSrDYaR3Icu42NRZIKzd0adus=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1573742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyxaSCRA9TVsSAnZWagAAMJgP/22u1ENNQgVKj0402ATK\ntDKCm6eh4t8z1HkT8PWMwPOiiBMu7zYWORSNvjqAB2/1EQhZE+2DuIfjoD6K\nvlpztBTHQZCuvsch3FZh0D1WpKhWr99h3yWdAXiIjNDiaoWV8KYjT3glzIuY\nGpewKb/J9xCJtqas+/2aJtqKCcvoKe6kpZHU9PTuuFpPE77E0wTS2fQiOa4K\nDlYI6VQ0MSLoRdIKPynijcRsnk1VHTfLSm8IPcAG6Gl6w7iqmdpOelqK0ck5\n5h/UIqMynomFpp3WMXbFP/cpKSVUP9joZdqQE9deZSTe5DLo4KneHdqrFtAe\nqY6bG9UECZtsft1XBGY0ie/dZhPlVEE6UGlGcnrBolyXiSPYqmSsD8tM5Dyj\ny7Jq2ViEQm6fB00XbUFnlFNVNBrCVHSOMOSvBCrE8DGGxnUb07WdmYi101RB\nSCi93gCKP+rvxBNK6tyaFWsKG7Hw5Cxra+3aoe8fZl7p1D7hrbT/cbZgKnJd\nrzel9PYd017n6rAiOt6JN+Y4Zhbc9T0FFxFR+ziEzBITQwTkaUKM/71oeDYm\nKOZeHH4YfBqXtUUvEvEwEs2sqJlybZSo3blb84JyFfLHwTULgAL1iFlaS7gt\nH6S59+fkMvgBSP4j6QlhGrYnkG0zp45ZgQwx+XF0Kfuxq0hq4QoZBQh2kv+7\nUU8W\r\n=XrsQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-alpha.2_1623922322064_0.3765322858276603","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-35aff6-kq12tl8s":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-35aff6-kq12tl8s","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-35aff6-kq12tl8s","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"813e973a47dc42a41bc73093351b1a2ea97485df","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-35aff6-kq12tl8s.tgz","fileCount":309,"integrity":"sha512-PCMO2FLla6M3s2TInNAK8LTMUt4M2EymuuAr2hX2sg9g4e9iB0R8WVv3hCfZAwj5D1f8vTFBbnwuQhfAGUpo4A==","signatures":[{"sig":"MEUCIGcLozv3gV16Fwl+V4sKj/23cR8ISAv7e9CIU1XLs0X/AiEAy9USOibDzoXS4/gMzneJuxGh3ZKf83dlnYaXU6wLCjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1573777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy26SCRA9TVsSAnZWagAAdLUQAIa+UvE8dnXMwLCYaYAF\ndzYISzKDiLtomlmNx6oifv0bG2t6CYqeHvYZrrFbm5bjLT+XAlY1y9MnUE8z\nM9ctwRXIjfD8n8rcqedw/OXYV946XhOBo6Xp2IoSabmHRz2xhyMWWAOUj76K\ndQi+UoSMG8SRvWKSojN7fupXKLLnDNE0KRC1CBU7+r6tHliPSNVioowttj1R\nv6scqSJori/srv0w/YfJW5TyjD26bwLKkjhjmm6m33jS1xqS9pIh14R0iZ/V\nm9Ew8Zn2DxDfgesUMrkaNipaDl0b/Wm+NJnysIiuYxl2bxHLrihRpY83lIc1\nQX1sh4GBrWuR2PDv59oS6O4Mhu8jCD8ngF/ODX5yiCxF2dV3RySMTCb8q3Ni\nMZB4frCt84l2W8AGPBOKNfxJPOm1LXSG5ySKodRPP6KPuWiLxfg6PQeLIkit\nYMG1L1IJDcdnl1/kbVldg0VITZc3khvaGi/As2OmnP+QKbNlX/f067ONx0bv\nM177jddJDDyvdbbkkgw/k2e7TI7ZLMGcwIfnofF2XrTPJv+WJ88qDea7af18\nvKfcVVn16mCg51eUNIpj6LuQpba8y1p49adxXQGBIp9xA6LGk/M51aNpJPIi\nhdvedd9yWAm2OhNKjRD4DjOS/AF0mN3odGYktEPGsmHHdvQ14f1yx5Je+qkb\nYuZL\r\n=Jtvf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-35aff6-kq12tl8s_1623944849882_0.15093463605423407","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-a09e37-kq24b985":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-a09e37-kq24b985","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-a09e37-kq24b985","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c35c9b09f68ec30a954efa4751bebecf2d4737da","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-a09e37-kq24b985.tgz","fileCount":309,"integrity":"sha512-3MvAdvxTIET+egKUyCJBlc0LBZKAQVFTNkob7rITrAXWZ6V10J7izLYa64718G3d8gAcR4YaqFCGZNNlAgilvw==","signatures":[{"sig":"MEUCIQCz0CswL0IYUAzgDlqf5U4LfwfP7QtY6LcGxCGH6EBkQwIgGEuSXLTch39v7/T+w7cqhMANTiTmVvpxhZRHdQgkQf8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1570002,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzGSRCRA9TVsSAnZWagAA/k0P/jEb0/UmotIajkc4/q0v\noJHsUD9nHEJlC/AZNekdacTfwN6XM2xoXko6jGWKCkXSea729HCaeX1LaBRS\nGIlayfRT/lBg3PE6JCsBl/sfBu19hbc633FBDajepGg9fCQGrsrXTlzFBcFG\nk9U6GpStzrG6E6CQPj3SIklFg3QNlgXCRUzflPWNVyI+Q5c1Rsti9dv1J0l0\nq7DypFhXcplGGqnISGzkEX3SLD3OqwBMPmAMSuHpngiaYbtofZUNAsNYzWPU\nhPP0gsPU/SSh/+LRqcVhjMG0UqD8GjKpjozmQbVhjvJdAuKGXBTSSXXHXKk9\nOuXKGkREDvxGd7zNplPjYnJ5kuHbcg/BYnxxJ1LjyFZfhFmjubIzIocB/WbK\ntdMnW3r8hyLY8XRGjYBf1RrTtO6EK2eiV21zwZjenaRgux+8IYhM7fC9ERdX\nrEhAP/zf5K3jAr9bOxcO1t06rkl5iLgL8vzeErub09sSeWDQQi29vhRXsRxj\nk9ZeggMxVwxMPoZhYzdg6GnvdupZ8D5i1WEMpRllxB/uOQhencg7B2Wif0wD\n4KNOF/T8wk5CidFsc91WzQcgcnbkN8Bp5d177oiiqOMPQ2rDsOKWGR+gWDMI\n+1uP4jQsZ6wAUnP2equp0BhjFfm46Jc76nl/EAoFRtfZZO8aGxUSFF/mMoav\ndcX2\r\n=BFHP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-a09e37-kq24b985_1624007825306_0.51413163363441","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-7ccfb1-kq27z59c":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-7ccfb1-kq27z59c","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-7ccfb1-kq27z59c","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"92ea6c855d7cbeeb8eb38ffc1cb3e8035e19dc47","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-7ccfb1-kq27z59c.tgz","fileCount":309,"integrity":"sha512-4r74lhybcjfHNa6jdbpJ1K5bdpXGXe3c9iqymTX4iCoP34Ob8KpsKgStOzJ9wlR8Iw75aBx7BJUw7f2pUXJ8xw==","signatures":[{"sig":"MEYCIQDITGdKuXM1+p9M4n06vznVEtp017cq9lPBt16WRmhFwgIhAOXuTrBAMhdOAzgTyhCD7RVFVjJg1B+3NiAdwbz8bw0l","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1597160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzHyWCRA9TVsSAnZWagAAB7wP/j2HBOyYHXBMLu+y5I/9\nu/Ene3nyWMfWJnDh/G1JuaZGkyE7VVyEO/e7hdrkT/cUEI5d8izFOeXSFnBv\n6wy1MOsIW/xA608NH6xbxsPFT4ahys4zBGgyGLPbS/wzqQ3mmkRTi9r31hzt\ndR5MxO3pK4Y7cQpN/5ZdSEqZF/9RN9FCl02V18x/Ci8XCAygfvGAgBT7xqgQ\ngyxt/rYpODIat61ihXw2pRYUIUkqkfzZh5K9pv5EQqg8lN67ru33b0m3VlG4\n1iRQlo5KFeamv5MmGMNwzs4hng8o4O0tGKfq+JAaU66kOV3Z7mM+E0br1H/l\nM3S9ilvR8swW7muTpjdA5F6grMqskodKh5G9njuAGLFL0aUshTDB0BFxZQJd\ngPoWdArE27Lz2EQ3x71GJctR5wc99gTZjuoFzahTv+HMmAeDlaP+aOsAtx2Y\n60RFJhzgzmuPpj6HMY+AxHDn9peUCYqHFxJUKC0ujWTHbCu25LjtXLBQkVU7\n5Dd4BZ1jsy1hDjA97sAl3Fjg9URIWFKqD4xNkoHGWMcQmbeMNekOx8lg3VXA\nk6/FG/akHDhHO6+YTGdaZwjchamCYp9G0e+X4c7bdjji4YYLOokI8AFGAmRG\na95GKrqE405VEDeka7E25K+1TUWS0lmwX5694c4MpAJRSjuZJTRowSTlPkyz\nTE8f\r\n=bzUW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","bluebird-global":"1.0.1","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"2.2.5","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"3.0.10-hotfix-c37da6-kpp8bajw"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@types/bluebird-global":"^3.5.12","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-7ccfb1-kq27z59c_1624013973792_0.7627999636364946","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-a8bcff-kqc28rq9":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-a8bcff-kqc28rq9","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-a8bcff-kqc28rq9","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4711083e154aebf27dcdd3a7058d30c0675dc556","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-a8bcff-kqc28rq9.tgz","fileCount":309,"integrity":"sha512-9UjQoJfI6DIadOwTdVatuuKLje8B80Z6MZoI5gaP42n7PZxAGxYcYVNyXEIqpAriaSinimjnqjBYTUV3fawIEQ==","signatures":[{"sig":"MEUCIQCkM0NwVm9VW1Pcq9RM+sNRQtOO8m4dUcNBb6YdB6u4WwIgYsMP6Y7OvthMiEIG6VZBnSisKn+c5n4battG7M6TmoM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1574799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1ZD2CRA9TVsSAnZWagAAaKsQAIvkd1tKwRsq2qcybFym\nrPfJ0mHPlgWdfJk81kOMnRJKK8Awq11gSHM1fZWZTGZLmVL4Fyn2H9RsNhUR\ncQAaD/CMGMKYSnsETKmKH9u/Vwz6KsPHiZuoJsKkRsWq6OqaEm/Ake4UhZ3p\npyYVmjCsadyuRfsKp7gc4Lp1gBIkmM1es3uwckt0JumQH2yYSIsepsSiYQW1\nDj0AFYWsKLsyKaTqZQDxZnhP2qELJ05nVlIk0a44Hr8SfoJF6pVNCEJwF9Mb\nLv3HIDiApo0Ixeig9TKqwADfI5AT/YX2gUaDiEGhs/1Yo7e/bO7BSKIlhNqZ\n9iRbAqm4tFfQwZQvd9tGJLONUgwPGgJ8lfTTL6DECd6bGGACvOC42x43JvWk\nVRFaNCRMgQpwUjPSFKVlUD7JxZy1tQYDlwGw5J7K8gNAZOP1PmA9dBjagfn6\n2D2rlMkikN0HU186KpCjcCwMcdQm2tT8B1MQL7JY5VSdBnXNYM2T2VTOxJXT\nVlySvtoAqhd4FQ6cpUlcpJIzjgs8vznmXsjAypI9xhzPxNP8TX2HtwjB2sje\nzNnkJ+iJFqM7ZnscS7XSZLdEWuvbXYyN1VGUKMQbyaPQVFjDhKB5EtOKrSJL\nkhFLFh9DTCJ43jsbjoaLkWF3924QlUL2/dniJQfFOY81ZZJ6Fno19bKdO0oi\njAjO\r\n=uBc7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-a8bcff-kqc28rq9_1624609014213_0.2854511377204332","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-55bcc9-kqc305xk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-55bcc9-kqc305xk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-55bcc9-kqc305xk","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"99d8c3e5d77c60a765635e82065d81f2e28045e5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-55bcc9-kqc305xk.tgz","fileCount":309,"integrity":"sha512-hoZnyi8pM26zPIJkCTKDNdyCC0Oq6BHCrvrHMfkdOn4vvrgEwe6SdFj1TYjBMxfKvlvCW8/NHFDc+5oVAP4YNw==","signatures":[{"sig":"MEQCICg8edw3uLvp81UD8F1nf8ce2TYph2B/LYjgzz8/MTpxAiBFuD0d/PBcl1zNHYIBBJSQokQZNwXrgCGWsBMfvMctDA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1574801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1ZXyCRA9TVsSAnZWagAAToYP/RJ+7khJneES1bOp+1WR\nL+88Qer1IEqq1DzEgVVD2nn8jJtzKJmb1i2oLj4nNX+KVici8OdLyMKZ1CDk\nE55qX/VNiH15gbSUDnfh43Ofegi3M2suKm7MxBoZW8ZwXk61OGIPGWBLPrb4\ndXMxiNV1b8+4NtDBGcnsRPGJZR50ZwnHb5v8PjR+PIsxGMiFz7HYsRJISEw5\ngmk65AjqlM0n5CcF952jmXiCCw2kyTRHHaj8aaM41E5kaPKwD9TN79xl6/5x\nB7cAvo02FB2YfrIZ1b+xmVTuu6Ic5K0xMhXM6maGoGGPDJ94pxIxphSuY2jL\n1mvOkzKi+BgfO3sEGDPQ8f57/1+N8dBm2AEO5YLEIMl7fSGscY7dS7hJuDMX\nOQu76GKt04WGW6gqFPHOvywBke6xzXoNtXwiXdavMuduE41hXIWJKKLN6zfF\nuLP3ODURqSVZq4cPUrpXJ3i91WCr3GirMlhwV1IhYcb0t+Dl635hKR6DweYy\nlbov4uoVt6i8Y3spDoB5JudDDIKI4mROX5Ow6nZ6Rcd69/6/90gvsgovN0xG\nf1aRtGQr8ChYU22Q4Jgvc7gJxwum/M2tyq0tDWx+1BRF46SDRI5XhFVkIY+E\n29L/3KgHLNYam+UQDgrjupQ77Ch6u1TUI0nmeP+DUp3ySrjmcbS2MqADmfa8\n+A0H\r\n=/nPJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-55bcc9-kqc305xk_1624610290136_0.08178331766809177","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-e26afb-kqc334cv":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-e26afb-kqc334cv","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-e26afb-kqc334cv","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8f3dc346cbaebde113fb4848f111d79b4480bdaf","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-e26afb-kqc334cv.tgz","fileCount":309,"integrity":"sha512-qqPuz1mndfx9tDDYkfx438B+SHCKLS6LMQpgY5whDEFhmH3Brs957ML29xvBs5zI/ovJ7sL+mUEKmO0NjqfAXw==","signatures":[{"sig":"MEUCIQDR01qWUSWf0CbR1e5g7R+JDmHy2DyoFlWo6mSTBuyLbQIgZqlFuN4yomrcX9Ld6BDq3IYqnnrWkUl6u6yJhWhrc3Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1ZZ3CRA9TVsSAnZWagAAcdQP/jUI5ltM4OUjNOgWP+jY\nR5EjBY8URlL1kBTr9VCg/Bo6g6RyEOsoU03YsJLncb/wnXKFlLu0r4ssQRq/\n4vnJWfSKV1XuAN+0WUn2tbaM7vYjxMYCF+ZZrAPyjGTtL3IePqxC4IBcn7PE\nr7CygstucwQNsDtBdTBTcP+Ft2J7AVns9jP4HCMiO+LmF2d2e+V1aHwbXPjw\nqP89AuSOZt/hld2c16AcEOFR1beXD/a1NFI/4PQ8owbbpI+Sq64tL1BSLcW/\nLqeJBv4EN1p5A0jgHf+EpG/Cvv1uipk73P2tTLx7BW1Y4PzvAFTrPCN1vrcf\nV3FoUcgZ1MvKRxgdCZg+ASURxFDxEDSwv0AB/FUQOVYBB69sgQxDn9iU0TgH\nrxy4jOBpal93p6omB9Gefuhx97upPAJ0xzBF+ySQJVYHM44qV7w4zluq7GLK\noBCWVMOx49OxJItzgAPXQylwRZKVeaW95aY6lI+b78HwMu63a/kQZxDMn8sP\ndsfwQA5bG+AJ96Yjnux1PcvGewkvIyXOe0b7dP4B1dxgs9m7LKKGXW8Fpzoa\nTjYnhnywFvP+H3e6yuVqXnt6DWX3d+PEs7c2iudOXCbm4Y6O+66Q788pX+tM\nWNQFdv5/TgXxIkC8BxnHuGFtyZ06qjdIPddsLlLQb+LHekiDQZvs8zg2GgX3\n1g7q\r\n=ZNrM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-e26afb-kqc334cv_1624610423294_0.7390177401803026","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-3fab50-kqhqwvvk":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-3fab50-kqhqwvvk","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-3fab50-kqhqwvvk","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"dd891b0bc3bdb18420fc4f58f99912c104fab61b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-3fab50-kqhqwvvk.tgz","fileCount":309,"integrity":"sha512-qoKRp5zfyT1+MtXAGm4ORcQjRaxnf4vMzDJXm9rU2kMrkZtZybfR7kkgMkb+HxmKtrINQ96+OQWmPntqDoRmgg==","signatures":[{"sig":"MEUCIQDpkUUhdPtp+qHF7BAUSYKb+CEcRZhBT7+/vw9h5D+mbgIgGDpUMbmM+yi01AaEmjdDyiRKrjHf1ftEJUQ225ESeqI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2s/ICRA9TVsSAnZWagAAc4AQAJDXVmLzKjXVyT54bN+f\nxTe7kUMvLcdjTvsP94/MKIlhhmCuNKAVe5tJksHBHf2B5+2LuZAder7FgvSz\nV6uzNayiUlmPp9uIuAFByesc7tCbJtXQhrNjiD4Q1PGWdkU3FlK36PTEIAkX\nSytHuf4Y9b0xbq0zA1b9M6TILD3tQhHRMileoHZjJouOmGrQjB1pngCqBfyC\nXVJ9JS2sgloL4F2fkptwU79hyGwzHy0jncoertHlaC+IwH7ubfnanStIyW6p\n4uGLkBRruAVInTUTSpmJR5cphQboyJ2FDkhEYcYNLahn8YDompGL1ub2wjSU\nm+y09qvsIQ9+Pprx8st0rXIcQgeKnDsomk++LGCymninf0Wd9mZWoPGsKsRS\npsWlQM+cz7alLSMTv7NvCqxTnjxqPLWpX8yQB7mXGkrcNjL0jXT05BvCxdp8\nCM2ZAACVIWLI/wYOjDS4Hzj58xrSwc5deyJRfHSKRKeCKpdQYX8DMmLTYYAj\nAJGcXtrP//6RAaj7C2QEWApb3CJwJw82a3pZsi4/G8HNbaL2iQw7xpJfCXlF\nRpYIEmiTHWYyeVSMsHF9CiSAOlh7VCajizACY8o2AZQ5UVn08jp67fsVIK1J\nA5F6BxtbUB7dymqHrnBAZIgFhKg3sFzl+fkjyaegewZHzSJm16P2Wl6azWE6\n/omi\r\n=Oaqw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-3fab50-kqhqwvvk_1624952776217_0.955576851545183","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-60ad1a-kqhw091u":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-60ad1a-kqhw091u","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-60ad1a-kqhw091u","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"1bd55380c7c8bf1c3b3b82ddb4ede82511ccca59","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-60ad1a-kqhw091u.tgz","fileCount":309,"integrity":"sha512-gUeppDCH/y1intIf7cvM5N9o4vyC5+iQnmiVSUd3DPyaDT6EqDiRioe6aSOI13XxLijvQiR/umPG7S5fGUiPqg==","signatures":[{"sig":"MEYCIQCVLuRx+WDTDIAG+IkGCGJDUvlP+xiPgR0Mnoo0VAlkjAIhALgbBSOKGPG7hFFH39H6uRwcOHzxAiiBJze6UXxcwJcA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2vE5CRA9TVsSAnZWagAAFEUP/2OdURQ5FG5v990skR43\nRrjwok31fj2jfjVDTNjgSFY5gZhF5F/A3gQuNkGkBFGv/tJIXBildj3KruIp\nKophtCmn4u8KYw0rKwRbbYv+Nuuw0Ry13APYv4zj9f2Hs7ZluvNY9e54vS0K\nyuuQSxv3km47jDf2G8SZH7rj3/7hpM1izSXRvSLGG/u0iygHAYLJ90+ge0Fi\n0cZqoktKtoflthwhoevcalqKfomQRifYIThNtI+VAliXnJepQwqWwdkVBk6O\n5VxseZIcJi6EwDIw+4lh46CDhgFa7g/6tKvL7ilUbe99ZdZDkwXReGVwpgDd\npLF91VkaP2CATQ/DbzDKmHiwELEyPpue79T6ONwzZzldNLEwxQMpcYKfb1Cd\nJZPCSP5Bv3s/tcL1Sw2irnF+55Dws0P0jl0ZduA90PSC5DjhHKf70NGW4RlB\n3oCxLrv2aZGba+cUtQaFzE4VtrovEgBr1pNi8NfSdVW0k1L3JINvsP1Ke62z\ngjAjm6XBroJyFjgzbyxBuOy/E5gUEDkUgk6LFE0I3JM1dNyk7DyXOSjAO1cr\nWvsczUf7Ts6DJNZeP160/m+bQqX9ZONwvmYQ0ydMtJtBLBVInWdnfNFUiGO4\nnDchiPX2qlCSUOG+lknUUOqi1ombQF6MMfeCI4+Iag3l3vMg/ubVe2CrwzOH\n12dB\r\n=bg23\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-60ad1a-kqhw091u_1624961337144_0.692971380300818","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-0c5bd0-kqi1if4d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-0c5bd0-kqi1if4d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-0c5bd0-kqi1if4d","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ff357800a32d4465b520c9ad91d4fd2f3f4d5f32","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-0c5bd0-kqi1if4d.tgz","fileCount":309,"integrity":"sha512-QtlMrLzRl7SaIpDmEI9pLmMNGf+TSnGCN/7ElVnE25Cng7sBEJBFCxbozos94WjZIfUWuVmw5BUfF18JpYRgrg==","signatures":[{"sig":"MEUCIFphrcg+R2EtdnsvxeYzWLE0wirKB4hv5JKCfJcNCA/7AiEA3anl+XH66JQPdPvpf2/hBFD0YuARkuh/9PnWn8uEYEQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2xVUCRA9TVsSAnZWagAA5hQP/A+omvHehjdGL4yeLNOD\n2GDlpJZaqxi+aHqGxB45ifzzV+o7y/F+Wigw6HBvZxW8M6XHX8XfE5Npe+5l\nkqmojjqaktsvKVzNHbtzjFgLfg+pr95Lx42um6+YOk+E6w9cZotwH1yARYG5\nmWMFf33sqciJLP6myD35r36nn+AxYnyGjJ8mC6npddVe7+MBeIgyPyegwwZq\nfXec7SrqTnYvFBmtatt8gWw6pEAI8xdaY/8bnTYYgQNqFxnNWVj+TOVLwRw9\nra63KklgHU6fGxnRIM4M3Rta8n0kQ5nRFRw2DQZAZsW2v0MQS21xx+4DwBhT\nvPhDSrhl09G803Z2DQtOMhGRzj3WGUpdeBOUKOz5qZo6Y75Asvvn7BS33PYW\nQdOtKSQIi2BIzajpmotSTwdSPd2JHLUlqSZiaEz9mFC8MI8Z/fjijjvL/dc3\nxxhQ72aR6hMu2DRmi2tywkyYW3zVhvvAEhXsHmqA59uIVQATlStrkQS+FyGr\nThNqiDQ3BlNoXuy8atzNq/IbYdB6X7pbccaU3ZVIjz8vSeWyiQvdIJFVgmTH\ngcRqQa7Zc/zs7/RPxWElhM3n3D09ksB2TElv1T90309vtOSO1jIVP4tUOHqQ\nOMvhx37liPdzqYCWApsQTBpqtZ3zR85VFEznQGfxkTVb1vtab9UOu9dmjQ7m\nq2sg\r\n=5lXO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-0c5bd0-kqi1if4d_1624970579530_0.9385281459623722","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-e2b667-kqi3j5fd":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-e2b667-kqi3j5fd","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-e2b667-kqi3j5fd","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0597ddf6a3c0fc97637e389b8a278de0582f4a46","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-e2b667-kqi3j5fd.tgz","fileCount":309,"integrity":"sha512-LyJerZEnBlYMAUSkWV2vNl2bK6EhaNFPQ5lTr8cPaTOKW0yoNC/+yj3codOE8vEH/uyKiOPVihgFlcgdkFX43A==","signatures":[{"sig":"MEUCIHLGTlABxwN9gXYo4fu7/v3HUv59Hj+SspzOppGnDBc9AiEAmemhrGVbDSad83rd1hMvGsxWDl/lulWe269LGB3Iz+E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1566935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2yKTCRA9TVsSAnZWagAAFnUP/1M66lUpaYf2y96hOSCQ\nErm6c9aMmZxClbt7xgz4TowL3tO42EqOH2niUkmS3k3658rIx2+/C8KLZ07/\noFRDDn0Ce34+YNbtG+y3UrHQNPHNkb+fD3Z6GE5U5t0timYWd39f9flns6W2\nE/jYHle9b3HFcby9QxMAFyeOEmjn8V7JeuDmvlZo6rS8T9Yy87+dTKRBX27d\nwIKNI3esVAyCxLy6+S1E/i1IV2bVgFwKNBziv3hkoPZMu7UZU+mhZA4pb8TB\ndcnX1W16iu6exIa2qzDnNfvRj9Lut5V36d0PkRej3b7HeovSId4Rhv9CvEdm\nR5OQS3pYMmACZxZt5GZ00kAEzcC8OoLPUr2hWg350UXZ+vsqHjutIYr3W0yQ\n29rfnmzX8YuhWvG3sfO83YsXUXBEpPZzIOIMwNc/HOnRbunN9t1anWincTj/\nZ0QqPJ7RHHUTaygx1NMERFEuNYhlImuvk22HvT9imsWU/JlfOu2L7ZdwSBzf\nL4WI7k8eLbKaDdsHNdbjxB2dPkWtgO791FphCiGxZNZN1RFNOQHNrXnjbYy3\nL7hDHPSaMhWp30I8tWsPtcPOc95TMY5R49Rvw2KnmomDS8dTthgJ43mZuVPy\n41B6L8KreKG+K8oILvcDjRHmR71Ns8o7JsLcJI3h1Fje0QZZ2JZTKHKWTYsF\nw6Wj\r\n=vVU+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-e2b667-kqi3j5fd_1624973970984_0.6305164139367998","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-b9fa3e-kqi4spu2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-b9fa3e-kqi4spu2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-b9fa3e-kqi4spu2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"090e0d538bc948a3c8ae0e25f57028eb85c69524","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-b9fa3e-kqi4spu2.tgz","fileCount":309,"integrity":"sha512-31WTWEDEhlyW4GJxodFomUivWDCGmr/eymUMoWXEbJazYCa+WMmg+k68HpOs+ZjTp1Xp0Jjy434rHT8v/JP3Jw==","signatures":[{"sig":"MEYCIQD97pFtWPZATYGKyElaCRHOZwo8N+pjpIdKaXPn/HH8NAIhAKnWNH9ZOT5JJwf9n0mI36cCyWy8VDn2EbHROC6qPcJO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2yruCRA9TVsSAnZWagAAt9UP/0hIHoOlLOANlpvOKkPT\nU4mQeMitDe0erLVGMO0IZCOjU8sO7MlyUSaFsZUeAF+Zhzcx6gxDRvW695iB\nzRdEymFSPq9r/usc4ua97DPf7SaUx93CiM/JJrZ996UtXF8YLAmXzIhs5jYA\ncXT/tXqZJoSKSH9whUDxfpHcdbdegmFde3bI2aHEPt1dgIZ3KUR31XcoLgE1\nSBB5+T7vnmna/EYPmB0snAB1ybXrtiuVXRvP3hD2PS0/HcxHHrhBnGbTURPV\nvpLrcnveMhIAqRNUV/A5pr89wYXQX7BzpksFvh6B+sUsHHYeyxiIGqKIVyeF\njlFZYMC2bfgAgGkLygUNzlwSdh9bVZTMaFM323dpgZqs3/F8jfXA90asBSUi\nkzeRJYmO1sl2tGl8oRkeTjIDyHrOwG42Jh5tWgPGqu0V2lcCxDq2/HhoGIJA\nRRi8cC6E7jARdCU7lT2z7jJkwbhidzEYwTOPn0KpMHM3CFrMPhi7sk3ETuFp\n5sXU59sBrkj1PXZD3EyuZwsDjmpbP3RbS97JSpk4Ww858exGeDDbE5Lf8ghI\n3QkD7sXfiTHSyy3GTEqslZiqZKRZzPfXiVw4ILvYsTaauOUQPfYZDv/gQuZn\nX8WTZ31DKbXgHh0moWexNt2zB18MAOO6V+ASikE2ToHcQLkZ5fmCsP04Pv/u\ngGNF\r\n=wzEM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-b9fa3e-kqi4spu2_1624976110087_0.15928745080131068","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-1e3692-kqi5p4qc":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-1e3692-kqi5p4qc","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-1e3692-kqi5p4qc","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"95a3fa06a24fcf7f55955ad2fb016b3cefdf201a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-1e3692-kqi5p4qc.tgz","fileCount":309,"integrity":"sha512-6Wk4l6gwmZiUD433abmBhjEkXG6EQR3dCvmKLU0BrsU/238lMVt0ZJncXxD1A5/nTqRCzpWhPFA+eYlFyFCZ2A==","signatures":[{"sig":"MEQCIHRUfGyXWVm6Rgs1nO61i52aInNGTxXYYMuhOWAWvijDAiBLaGcePCbxBGD1JgFcZUueunvzGcYRYy316oDZsWIo7g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2zDICRA9TVsSAnZWagAA84wP/AmGbWod8VbYeAEEt9dg\n0SV2Ca1Z6SX/KjTV4ItscPughIdMHXLcB5rMFw8Gfztx3ch6WXIj1qM45EZh\ny3zQG4q86mmXClWi/Bjs5UzVoT82Kvdj0jWDuel+TDomMPFQu3k5hVYDZt+v\nwjLqq3zo2kpx33CF8TncZAmCM7ARYs/VfqhnuwBuAntj4UwJlG8IgFbfvMs+\nGgcwxPpGJ2y5gWRyhrjpF55Gw5Rca/Crw7VJ9VLsGlvNnvqIYvg+fClCKAy0\nwwvyOlZV5c+obSNqeHORe2kRwPxjhcFKwSsCPn5qbxPql/zjpvVBdyuN4kpr\nqHt/ad9hVjAVEEfzn/C/VKbl+QdymaTwuz8Tq64Jej87n3FeMe4LOVUTpMQh\nywyCrEb+oNHqiMqwq9ZbRReF7ctj2VlB859gOASJJAdWwsXuL4HaHWQO2Lgs\nxSlypsKNenN1+kSk+5dEEHUvuVBNfqnz74nmk5em7rkT2JqrMoJ3RKx/6uOZ\n9uERnQ4dQ5IUJf0AMBWRi2LKdVUCwwTPZzEa0vlraRI5Uxw9NEGszMDwudhD\nM5fRz+m/jGb0irbzX8QL2jjMMHK4FvrEEMwkkowLZLd6nCFxoJickdZckJkm\nKA3YLveIbeGV9AI+jEzsr+VObq2gwGQxmXsnUfaYmSOkeK6DLjkG5yNtDG+k\npKaP\r\n=a1vp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-1e3692-kqi5p4qc_1624977607493_0.18201065414757922","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-11510f-kqjkn62l":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-11510f-kqjkn62l","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-11510f-kqjkn62l","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"434bd4eee669ab8900be8165cb4b8854901b01ef","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-11510f-kqjkn62l.tgz","fileCount":309,"integrity":"sha512-Y8xd8iNmOnWsJ8dvwzu3q/q+NasYh2ZEUPcN7poCbOW2tYHRDnydMwoT8UMspS12bQsyTCEAtuM/Gky3dxhmQQ==","signatures":[{"sig":"MEYCIQC3xTEy3feKNYJzQszyFA4HhnERr1mJy0+43iqMMi3rzQIhAPPlcwhsUic+iBAOCM8oPXJzNZTJBOMtJxk7vQSUvO3T","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1566937,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3H8JCRA9TVsSAnZWagAAsUgP/3vDuUbO7m3wzEf22xsO\nJC7vlEIrfCfYIeYhB2BkU1kJWLMnynpUl0Ca1FhvCgJMRJHzFRb555UxaBlv\n3oiHVrtNncPay41yaha2c0ZCAlBJYHcxQxjSycrV0/aWRsBJrQeRbHX4H+2c\nz4Oi1GDklZwzrm822/7DFlnh8nR1xcVpaCPrHqt0qzqNod9UjTrSbfVd9FKI\nFWDnbw5LEsESLpzIoki+xVVxiDKt638SPzoSmoLsqd8wGVARrp/zQQ63eori\n4+5m8mLWLVjY362K6vVVWI7GfSsEcCMVvZVJ/tSOGDV37KFz+FzW88jdSu+2\nH7rLcja0Y8htUwpSVTopQSt6gVfQaBhNp4wXqe8GLil4PEzXyKFjtooL3W3C\nKM+nu28wJ2AW67ATlGmD7zFqKwE6EVyq25/QCL0wIJi881P/0yPWoIyNW1SK\npLVf1OTYuUN5oTfBEXibYQmhmyV1pl6UkpQ3O4XskiqOHKhv217zSSW6YAnO\n1rUeQUPdNLmsjE10KJDSQBYOZ6+fLO4twhHgHL6u3RXMjLPK75f0IZX5V361\n9Xh8f7ORTVVlUyhM4AElWlf5SKQp9ajKhMKLbsOiPD61iWse5O0Qf6bGlp+k\nxdgOjjOVaIoXkNKzUQ2gkgsRTjz67b9vedXynFme/z3uwvuy18IIcwdWwecz\nS+TZ\r\n=OiIX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-11510f-kqjkn62l_1625063176553_0.11202809079579001","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-88d942-kqjl72r2":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-88d942-kqjl72r2","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-88d942-kqjl72r2","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a27343e528708606a140b06daf49f3cb96a9041f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-88d942-kqjl72r2.tgz","fileCount":309,"integrity":"sha512-0Air8TJqZmeb2r09FrX9Kz+s9uMDAZprSU62cphKR69e77hmAXOONERJhyxHb/C0caUxpZHkLtjngJ+S3+vb2Q==","signatures":[{"sig":"MEYCIQD54LEW904QK4k7VFvj3nHdWsevLAjYKt65l13UMvIF7AIhAJu32muYtLbDJBkR/O+oUu9/O5Vbh5CO7MOuX5vFBJUw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1567061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3IKnCRA9TVsSAnZWagAAwVoP/2ER1b1GEa9eTxEe5/R3\nEqGyYacMcr00rYR2Vz9n9R3jp2zfZwtBhJDFPnnLPjOENQNOH2/mXGqWYanO\nINaEmL54D5ElkYG9piV07Nyu/zx+goFYi3rYd2PRxbGajWyS/ucQS8R50Imk\nflegjgmDZbKbeDnhQ5er7TBb0320yvBJE+WEogk/4mLU2l5S/NkTQZqi2egX\ndHGnLum9mnDgidS96x5ZcCJRzebJIquYu1KQb9+bMJxwgNutOgD5hMtoDrkz\n90Ge7YZEATLI0Vpbaz74bu0s+fYgFgq10dSH/1l2EmkfGHQyKHoXVLDAkKlf\nYSUlFaZZsaah23fSlSmJ4iKFtT0XWlVzcOzZ/D3AB6hgRyn8/G/oKM8PYZw6\nWTAEZ6kfQz2fexZRppXO4drRw4SIHIkqnYiQQx8a6aRpqIut6f1eyWVH7ze5\neeQIw6xKQ39gXnQ7Jm0MdunZv2LsnK3nCG7AtpjMWwtPMNGEUZ8rXFuTBqVd\nciKG0QmHRzKdna2lEmbk5bII29ZFf3hltGrD4ZM9fwqr9cv5BvqAJGMddYuW\npDdb3n/LGU3sXvehTPQJ2IunNR0zb4G301FKFVq0ft81ngi7/Boy/Pqhrxur\nNCefZBt/Bb48ysp99LKAcedEPL+j2k2IYmEJu3hmRB/lEU0cFWqkH/gFv3GK\ncuEc\r\n=FI9f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-88d942-kqjl72r2_1625064102533_0.579646037288323","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-93312c-kqjl7aho":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-93312c-kqjl7aho","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-93312c-kqjl7aho","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5c7dd9e4bb4dbd61a8ea1670a79daad65885128a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-93312c-kqjl7aho.tgz","fileCount":309,"integrity":"sha512-0YzU5WA5Z3YzdtKk6CK//gq++GThOXL+5d6vhMhD9Gi+qyATCJmHGa7nIn4bOyVFj6hzO+4oRiPYlP/bafH5tQ==","signatures":[{"sig":"MEUCIAKEwA2W1x3TYpuuGYbbnx0OraMNWB0XQiQ+rc2JYmvcAiEAo9oeRioXnW4x6xs3k/8Owmj5tHZ4PcEPAA0sOxgWONU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1567413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3IK0CRA9TVsSAnZWagAAQpYP/3OZFc1AGLoMMjzPqCg1\nDLVhdkkiPofp+BPvmFH8CxiMaBgkWEeA2QooluP40Y3s+3qv6OcDxp4vPB+r\nvSoOsrX2W+BDFiCt5yCkNablKdj9CdLz5iw1OYbUgiF5jJ9Dy53irApZRrxF\n4EOQWXPKY6der7D2+x6pBUeZZe2V4sljnlyBXBFmRqbFuB4QRCQTNKJuevWF\nIk0xOqCSvYbqtLIjNGu6mARc9/GbojQy0bXJFvJEggeGX6FqX5mxfC1rhZQA\nAE9XViZpf+8kUr/1c7ScUK7O9XnwG0n23Yo2mP+kbNIy/f2ZBs2wj1uCaJwI\nK2GPqr+EholFV68QYgCXmIaVjEos41yX/sRZRn2TXJRGWnoxreGby4h/0DPn\nox3p0ljCsMPn1wALc2HBhDW1F4FJaVi0X2xkrdymD0/BCwprsYyKTdGq8+Zw\na6ARXnJuTjMbdQq2ISwrzq2FaaIFy6z4KdHPmkuh/TTlvcyGgaAdJz1p6h/Z\nal1U4J8xg0bkRk+Pr4x6D7bJlrIaJYbb34JgbB6clrjZCRmHeVdsoA303xPe\nIdkDf9AII4j90Qi8PTxNQSauIo686KLza8hpE9ItcN4d5PxiJ/ixbr5Y2tgU\n2SdHtqn+t0aDzK5RJ3TMSelD7RcwtucDF0ooNKvXD0IpRfu39DkhxPD/IKXF\nCGJc\r\n=U1T8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-93312c-kqjl7aho_1625064116053_0.5943551607888631","host":"s3://npm-registry-packages"}},"2.3.12-hotfix-93312c-kqjpsm3j":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfix-93312c-kqjpsm3j","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfix-93312c-kqjpsm3j","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"8261fe296d368989b84ab1781d503b8227d9e81c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfix-93312c-kqjpsm3j.tgz","fileCount":309,"integrity":"sha512-BqykOL9bh785eZq7AE0/QKNQ6lYZr50Uvzg/N7wZ8xsmGHoJze76IeMiDd6L3458d2b7QoBSDPxKRpbtaUphyw==","signatures":[{"sig":"MEYCIQC6Hxt99KhZTwnROj5wb+m5EwETjCfZcHEPTDbVG8SK/AIhAIq1a8OJgo2rqcg+Gu0Q0IGia3FoQdKrlYendhw1Afa0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1567413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3KDVCRA9TVsSAnZWagAArboQAJ2byh82AEpA9VKbPeOV\n+x/msqdUSQ5i+2gPSGM5Bae/ChNfVAQk7Z0ZnxPPSP4fzdXGhUG/UgrxOjRl\nw/IWbfxZpEeI4h93QwUKzBQvO9//52hYiEI8H5o12Nt2j5g2KOjVvpIY0Ycb\nROqPWdTuQ9a8dZcVPHBKrSc8RFUg7n18lD3FOxp8OAZ9AHgdkUH6mH/Iwq06\nWSZSxYpvy7URn5JZF4/eZGqMZzae/y+y+LgDMtWOOHRBUS+iME1HVwzScvXU\nvtKWttOqR9xhIRoWlQm0+b3sQTnWaq8PajkzJ4z5abvQL2edUk6J+pEXjkDY\n5Xw8RGzjPzvjWBeRb+ISA/gO/o3NU7QupPX+wwiTbKbSz4zefblKpA7dQ2MX\nno4Hpbv9oSi/vsS4YSatIqm7BRUoG0Eaj3umLevshdkeg4Yk4XxMK91aUhVp\nQO8BtuB3uXuAVfktxbVSfKinIlFqUdI+iFzkwaewCDHgSYvkh19k97buElao\n25AbeJIMPa+iVEH1wwbY9o3Iqku7I4UFLML+ercsy0c40pqFcrDDEyT4wvvA\n7kGu1fZGFiZG6/nHxvJsRX1hDnWyiJMudpPxxRrsx4FB7hXpkP3RKExwBjmp\n/rPd1cM7vuWEb3B4akJ3LAPUd5w8y+oOXjTTVXiN2TppWK2dk3RC8TD0WTWh\niwcX\r\n=N3/3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfix-93312c-kqjpsm3j_1625071829504_0.3758332552310659","host":"s3://npm-registry-packages"}},"2.3.12-hotfixes-1a04a3-kqklxven":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.12-hotfixes-1a04a3-kqklxven","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.12-hotfixes-1a04a3-kqklxven","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"39beb4894b0d3b3dd4849e7f367cc48599cb7732","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.12-hotfixes-1a04a3-kqklxven.tgz","fileCount":309,"integrity":"sha512-4YnhbRBj+FR5d8k75YNXpFpwtsD3jSZdip1KImGVpzwHZTkDx4sTQ/xBTOO6oNdCopPg77Y5sCoKCLQ+SQkwYQ==","signatures":[{"sig":"MEUCIH34FRx8ykZY+w6XCSqWl86BnXU229ypfLti3NwnZUj2AiEA7H74Ds0SWAu1+Y8PUDH5m+QdoMe/smlbTfR0tqjUZyI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1567415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3XO9CRA9TVsSAnZWagAAC0UP/jD8hPODQYUo4NUqaWy1\nqgLdJAhX/tdhvzYpRFd+qHwWaRKMdVr7X7zutjl2068XeUg8rUvd6j5MtvHW\nF3TzijG8r2M1xw1WoSy0xdO5raCe1dj8n4RU+Ct2IZCO14tcjrqpfXUG8a+K\ngRicAVkAp0N8wlHvqDZlw2/MRXwkhbB/+zEUU+CaNyyZ+jWLiGH1G/KjZWRo\nwJM0L3CDlATty+LsaN6CeaBtW1DHx5obvYD72z75AKqR7BnpnEiRmeoZxNkh\n+sDs1aPRiSKkZGHZIa+R51OsFaB7+71zVctexh/i+Syb0N1vGfH0SzjSDNTS\n8Xyf6oYhPGmvkc291aOmHpIYhWjLDgC/JH5TmsZo1upehhD+CffSqUemiobZ\n8VFIPE8A3zw3mT6bNdU44o1I7sVPPQ9HyaDz56Uzs22NpKNGHzFYnMkwmQHQ\nqq0Zc1dDv0eRZsOVAixxbb5Hdra8Ydv/+Oq7vKQQmuzCH886jYwQP3BxKfP9\n6+WupD2R5WXADP+I3HP2wf76PkjDL3sKZpnrvMWzI/eLMbruDRclQdPkbHWk\nknsSYj+9TKIqhyhnxaJs9GBCWnveCdQJtfL0R3ml5KrATfCGJuNrYo+Uo0bO\nrCWLRZHbgfCDBI0n/VebDLIh2KXlpGlO+7BrOd0rf53CXknzO775HpSEbQZs\nkmyS\r\n=NKMn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"hotfixes","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^3.9.7","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.12-hotfixes-1a04a3-kqklxven_1625125821045_0.41592745476789417","host":"s3://npm-registry-packages"}},"2.3.13":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"cfbc9eefc0043f0fd5897c4920202f21484f540a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13.tgz","fileCount":309,"integrity":"sha512-XkhdXymV3NPaQoghvFQFs063SXFOmhn9P9Vzo1RA/zPquKDPIq6E1OBmsHxJ6KZGpovTdlXPFdqWimF43NPKwg==","signatures":[{"sig":"MEQCIEzR1LpzrHMEc2GBRthBoeTnSsYQKrnZ0KEySX2JuM5RAiAdVYlKj/loflhcWtltiw5vVrHhr3Gy9X8T7VD78jedhA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1568926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3awrCRA9TVsSAnZWagAA/BsP/jRelUPoX+16Flt5HqV6\nnCNsgSMYKJDvNDBDrVLsMoKlZHCzoAThAbpOEQEtL5jjyRii4+4NKHMVNBOU\nsghDj5qA1k2UYmw1kaRYzZrkpZyZo00O2FhjGKwLhE1rwKYQDSco5qvJ6Hlg\nGitJ6awmHzf2VSVy+tht5qHFgTSFp6zhr0ayBgjt03q8dq/1qSAiFdpdzY5N\ntPtWiFfk3mX3fWgg0s32Na2IMm0Fq0Y5OCjBiJVzbJY7K7GJlT4Uc3rgwhIw\noyhfkZFQG6eS0mf1u55EkS3T9vvDU2MS96ScN3kkwtGxtmr0Y2yY+RZwIinc\nluATXs0UM9HEZ3a+Ni6ShZ2vmTux2sBmkaaUzO0JhCvsayruzsO+GloHi85f\nmgJfiqKTzoSF071D6w43K1668GjJZl2nyWeaJvrLGb3pAjcGzDTUft0YC0B9\npaaSMqmYQd9z8D6QjZSTwfqQGg/oCy7QE4daeoKEGJ+KD+KHaqmLvOXbRtz6\nez7pP4307vL/CVqYNLYX/7dTL8sQsszFI3KziDz0DKzdDfaVeasMrlLmT6Ki\nAxGEE7t5oLW4mHfYU5iwLdjt38AKewUYy6P7SHsejZHj/na12Mcex5sD6k1b\nHKUutiEPlB4/wGnJFq7PGapwXplXRF35Rx9qUxBQka/EslEaLZhQ8vceeI9n\nm595\r\n=iWln\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13_1625140266896_0.24808429501266205","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-2fc3f7-kqqdjqxf":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-2fc3f7-kqqdjqxf","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-2fc3f7-kqqdjqxf","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0d4fcbd864d69f0ad69ebf1c64f70da71d3f72b9","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-2fc3f7-kqqdjqxf.tgz","fileCount":309,"integrity":"sha512-8iALIZhIDHtBjPbkae+CBitr6KBhjT4PGuCRDVK37E64O3hRAGM6V+mzdXUKT/1ZqKojT0X/OsXHKhphmpW3RQ==","signatures":[{"sig":"MEUCIHCXRTbbW6H9uYH93H+IjL7dBDxpTr3gfbFaY7TlN1VTAiEA2zsj6gWUEUy4aPMeffiitzK0tZTVM3sPmKdj8884hAU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4sXdCRA9TVsSAnZWagAAa60P/j9llIr/bbdhECXjhM4K\nRhhEZd6Qbsmx5izBla6RCfPeqYtr7DsHIOXvmFTzeQeVV2dlQyksMXAqBLk9\naAbTd28T/A+z0iMunTXJxG4d1ulMtjnGM2QPQMMJMLmSmvMzeSCrHGMjoQsQ\n8cbXyH5IzlBG+/xlTMaXmcASz14KzxrMhUP1TaFlKAikBiZ7fiZoLoyGRlwl\nQXLrfNnNdy/aR1D//fz8SLjvFi7DXQklaq6/0WQ8O/IPNAsk2uAYaKA1R7+B\nsNF4n3R7HzLwdoN783PRxrBY8DQnSNI5h+JO0WDxGQ+6R/THz1WDrgCnEASH\nzHWKZVohkesBscAsvMEXo1cqZWAQI7nGZQxrIUzaalDij0zBFwlfNxFuL8r9\nMZC712aMtLbBbzXtvFMI0qSGYVLU6rr31WM40jtV8ymBoj/OAnarJIS1SPlM\niV9vtZQ1igRC8vVET9G/CZDdlC8YWf5i54t6A2yRKAmvwpuI970biGrqjrN2\noSwfbWEJtdq7l6qyC4/HLdpUf7iheeN4STfPJfWXyHdlnzwsHjASqtqUtGFJ\nojnpfZX71M+Hha31Hc3QJldEuuJfA8z+lq8P3sNLQwydd84xngHPxNhMNqPl\nE7CeLWiRg2b7tVkBZ+HBXrewc2LQzBCrqeLAD5eLzNQlSkRaGorEmcvKJ61O\n6oYK\r\n=ahJK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-2fc3f7-kqqdjqxf_1625474525393_0.6009737730157556","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-5a385c-kqrtmhus":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-5a385c-kqrtmhus","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-5a385c-kqrtmhus","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"99feda05c1d4d6be19969172df7d876cfb7957cc","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-5a385c-kqrtmhus.tgz","fileCount":309,"integrity":"sha512-p9Am/Yav+AEgPO1CSnJH0pe07os/K6i0Kb9yoLzO/9LlhJI/c1P3gB2peM3v9TRndZT9HI+vxznmGOAEmv7Hhg==","signatures":[{"sig":"MEYCIQCUHsOhYtAjzgQoANgqKSk6GEplR1mHMr3RKLiRiEdp/AIhAPfPlP3C/HAkw0TeTTSniQRK57WJSo+XVnJ/R9sUuFOt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569949,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5BuKCRA9TVsSAnZWagAAJZwQAJMV+d0e15ROifCAQNI/\n7NzXivxSJSA6l0T3+xIqkqjBPBt3oTUbrN5W4Ntsjaa5CVcGveoTGynABEp6\n7H4+WiZk+fuiy0DhtR/hYHULPzyyz2vK2voMpwcRgUywozQGaHgQL0vYTtT0\n+WELOcLSrdbDpnLWB1Sattam6LvSqeljRCawZvPFi64cwfApYHsTkxtnCq7f\nzw9luMipbzbXjCXTrnxN5IVztu7db+C/YkyD15nIZYWHQQQny25snpDyfmr/\nVPpIO+brn/PUOeJZU2Qa3R8ZXAGnJ3Mzxb2jVSoylWssLJPLZocMkLSKPVKw\nTTnvlPasB+6SDNeehfbluRhCeP+ExT8/rmRhjPK0nerys/Qik2+rl+Ot+36L\nee35QxoIHe8cLrjhzO3Gl8IbLfdzfoxpjuoZVEVKmLN0jsy+M+xMkIFb7yw3\nMjKhYCr8/KhqpacdvgvQtiN9LvhckVvuZR8fxnadmENlwnLVYgoBJcFLHZVB\n7p98u0oWwUyT4WQGLrpSEdd87Py3ohAo3RN8qjX0m6xO8EGbuojjV8WAixwg\n127zhjmnchiihK82ERFIpRJHSFLTqpy3J9O+b9bJOTqTHxmFw9eOWe34XGdv\nKUfn3hUQjaOtVVnAdvvg/hAL9gTZoPUIi276dFYWYRunF9fmGEcB9j8KBN65\nMv/4\r\n=CpmB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming_for_outversioned_definitions"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-5a385c-kqrtmhus_1625561993709_0.8515280248223449","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-ecfb9b-kqrtsc6h":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-ecfb9b-kqrtsc6h","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-ecfb9b-kqrtsc6h","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4650160cdfc79a7b635408ebc48a2e7a4526df61","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-ecfb9b-kqrtsc6h.tgz","fileCount":309,"integrity":"sha512-dh0m4llgBtTcNsZG0yA+ucEWDo3jUE/ZDAUUOIVhFm/u0E90Jm5yjGgLSxwdO2s/9vtZerNuNKczxiaJXDF0Qg==","signatures":[{"sig":"MEUCIQDHj9gjfbkoTabErAOr6ws/SMaw0zk26dgtePAWgqRn8AIgcj48tq/BQdkmXSu1okNpboudYHDY7FmserpLKwsTl4Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5BydCRA9TVsSAnZWagAAUNMP/2rtp+WW0XJR1FVttdGf\nezINlinoOBhQ3A6bX+SAdNDgiWvzifGcug6vPNThZdo1tug8n4GDJd4vrLVj\nBO5Rj2MUbSGbpBTEXX81Ie7zgacISvyn8GUfZgnfoh/7T2IzzubxbOlklOxE\nn6WY1EYT0DOS64XbuRCe4fAxB3RIPHxHveYnNfGILGlQP54TviqKf5eaSjDG\nSm3LKMbamZA5tpgmc6xFn4f9O0yMyyzAELrry3GjiCJjDOxr/DIFh26rdVzp\nPUnuyGuMQyEZI4Bm55Uo6XEV8yGbAxEF80CHb35+wt21/Exe5+Kpyzef9zLX\nLBb5GvQ0raYQFequzwRNVCTPrEnKx+k7Tw3oN8iWb1uU4MQ9Wh+P1PlLn5OH\nf1+hQNmSCVD5q3qz8DRmRcnxhLXLhSmToI/JCblVccHJZEl9G2hRjTzUVKxc\nYAjuR5Mcw6zaZ5gEKCT9cPfEg4Lxpx56gUVMjJZTQBa/YIdNLbLs5r9pT8po\nbB50CbOWTl3O5KB+mJKDvtkEGPxzVjsc4Nks44B8Ln6ljiZwPWhR88jkyUGq\nUN/p2Ign0DEFDht0y1819wa6pDRx4yxApTR+LyYHtyKG6OAeNPpCg2OjoVHO\nUyYsdBlE6f3zApVS4l5+AxKwyp6DnELkhQPSxldCQ/pOXfczkfnq0W1q+9oW\nIKw+\r\n=D+ex\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming_for_outversioned_definitions"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-ecfb9b-kqrtsc6h_1625562268840_0.5157844902704964","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-dd97b0-kqrxc623":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-dd97b0-kqrxc623","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-dd97b0-kqrxc623","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"bf73b969144be7e4d3f9f69e7625430859597afe","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-dd97b0-kqrxc623.tgz","fileCount":309,"integrity":"sha512-m0SCs14QgywBary0vBRrHgLR9I5FJiY2MIUob5VbaPpk788cFLKTQRieV2gjLs23tEqm8w/eBqVzUECeBwsW3w==","signatures":[{"sig":"MEQCIH9yp5cmOT8eEZhlEvhoXUTU0V4G5TRm2lt68bVst+cVAiB/A5DvBFhXCK+4XET/sAUYYmqx+7506s++/ZedhV4AwA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5DPlCRA9TVsSAnZWagAA+hIP/3K26kDSTbAxf6p/te4M\nN5RHx98ROr5nDl66NxfSlw/Af9VN2Nx0Ntv+s0LoyXmvhHRzEREiSDibYxsT\nbkxmtXOXkJjDiSwdQABQHGMCDZAUvG+ASYUoR36cCIRudyl7vXinADHEThC0\nNdOehhwdHfqQCUQef90V7Bhq6EUJNwoZ3Z46Wd6iKijz5iTdwcQaPA1DDfJN\n4oiGnCTnGEYJL3M6NqL9DHpTbYqAFmAQylLsyMXFs8HJhzV4PYgRODkT+l+o\nEFnmj2Liogd35Elo8Utj2Eo6SJhe+EJ9r7oHDO1eFRELCE121n1DZeo2W9C4\nhkUSbN419aMZil/MBz3f57YM8mHaHZlMc9JKC4fpq9/DwafuV96JVAPMDGsv\nzy/bZR+x1d8rfxH9t1bRJbZNPUKDls3m3MkqAzuTAM9uVJEi1uk5VlmNwZt2\nkV+O4ZZ0paZpzLGxR+q/r1RHxhP2kYEyQ8yjlgY6xJaJEA+1wAlvMBqXl9mB\nZylv5l8mgUFDZIlX/H5DiZd7CtX/b/TZocbJlfPiltczBef7fNHd9aAGoCiX\n9niTHPvzqG+knfbm8jyDu9ay4dZ280EXLFAyA7CUk++j0D3V+7IjDh2wsDus\n+9Vhofg4mDGOW+pkxGL5Gv67LjhEG1yWzlw6xB4uZzZAowesZeARyM1n0qVm\nfSdr\r\n=YtzN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfix~fix_parsing_of_environment_variables","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-dd97b0-kqrxc623_1625568229206_0.35206573045087675","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-102a4a-kqrykw0d":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-102a4a-kqrykw0d","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-102a4a-kqrykw0d","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"82705d451ed981df1cf0aaa94e55a7666b464a8d","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-102a4a-kqrykw0d.tgz","fileCount":309,"integrity":"sha512-lCF5i4M6g9Bzd/zr4Nglquz/bREk9BBl7G9nsDbKincWHHEeGBA3IGSLzQKavhi7mDN4Wedtz9TTl0qYRXF3BA==","signatures":[{"sig":"MEUCIQDFFgFYksBHLnnJLroJRtvFJWTx2b3ecijxt2IYiX0A5wIgGEtkwxXkgDYe+kSK3n1W1tVHnUuaIx0F4x2xekFoM2s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5DwNCRA9TVsSAnZWagAAIXYP/2dlpdWjkmYjC/Y1YTS/\nVJpolnzG9JKz8jq4QxsNue7V6Qlxo3VuN+UkI0wQw/XBwqNmtcnaFc6SNSQC\nK8RyxsVKvx3BxwPgaMpk6viDMESesx2p9W26dNgC4CffYxjcl6+72x2MFf7F\nFdqkmjyfmtFJ0os3Cf3XhbByxli46iVBSWEwfUsld+E4czgyQJsptx57trcw\nzS652Flq3pDun8AoM5XiFmGlKh2E4g+gKxbTXxPAUbGIGvvLzQ821npUReVK\nhpdkdlks28hjcgx2tyF1qHGIP/kDZ3l7bSYFN5UWEJUea0lJ28OTWNfeADTA\ni6Rz3f9JI/bRI7Yu/xfnXCxEkfS9xjgquPQ6CTeV3h6yzs820faE99nUO/OS\n6CcOgSTrhdf5kK1aXFmAgENZnKxeGs0SkGoa8T5bkrZMnhZrKrTW4jM4Zkjd\nuAKYHKbRWIKEUxq+3PYx1iCZD3w02c66dV+B9BRahku28UFN/cCzvCYKh/mE\ng8EY2Pl9X8iLSFnHPtsvYQE+lO9Z9m9G+jxKrlonqSpPnlWs4jPHoPADxKyE\nF9Q7ROYjil6sM0WpDGwGWFZLBAeDRWTZaVsSx0XgKOErVlRFX7rGnRG5CRxN\nOiNgc6H8zUU4biReWizVAuwY8o0p4YXcpdG0l8ixiUlpyngQrf8g2h+gQC/7\n0+qh\r\n=DBbA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfix~fix_parsing_of_environment_variables","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-102a4a-kqrykw0d_1625570317134_0.6735551718327535","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-ecfb9b-kqs088m7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-ecfb9b-kqs088m7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-ecfb9b-kqs088m7","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c5a34be98274421a33396cfa9aeaf91c3ba51d6f","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-ecfb9b-kqs088m7.tgz","fileCount":309,"integrity":"sha512-JMYs2xOaqS/m7nVltG45U7UsA26s5mZIEEOY2iuLH4DROVRXZ5HMHXCgcloA1P9epwEYMqGpPCbDoAPN4RPZXg==","signatures":[{"sig":"MEUCIQCIflKdh4eBhRlrYJQHjQBc+rKDyxJrkfkQps7xottI8wIgF0aSNYPaQ878GhFlVxkWRLGFjzH8wCgjm2W+JY/4PM8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5EbdCRA9TVsSAnZWagAAs04P/iSyfF/Cg0ZG7GmibLz7\n+8nMA9RWwTBK+eAr/9gR4DE5GJfKhBmEAL/OzwmoRVIUZYUbAUZ4nxNetCfC\nWP5w4vEfxagoNSqFocq5ZKBtoEyp3a8gd0QjhXtgQkC3bQqxYq+tb9R4HPAh\nz1/p/Z3oRVYxGmY2xyo02qIZ87pw4fL8QiPDXgGHxtTJ4YovU54lID6Mt9tJ\nBXC7xvdsKiTFWv/7K74euZSYHWdo6aAI9tFjrhmg89HCxqp0JMhoHoAE/zI0\nB0lTLgobHk/wV+rEf9553jb6y+bnsvpKnKbFcwSyk4VJ0MqJnsBP91VrflxO\nSstXLJFH+aIuLrDpD7THrrMTiV0gkGaMLcK77SDoNwctZaVyclaiyO2ll8wA\nc6R4ugW7W04Lks+1drQ6kx/sm2A0B7DP498j9G+NqTWih8EIsyV7eyeT9s70\nm10CbbaQ/AeQMU1C7iqtAESxgGpUQawakLD/K/Kzj2Jf/JOD7ylHwvn8E6a3\nESg7qbHgvhwAD8My1qcseeNfuI9bfpkChsOyafrCvYkxrX9ls6DclA89xuRb\nsOl4S1JKg5HjU09mEz2YomQS8skA7whGHum54408LRjiVKzNIaL0RTHmBXTb\n4gOEE6j6ultDLF0VMTD/BAiHxUhe6+B5gyTOgI5lo3GE9BVduDcs7q8N/FcB\nsh3T\r\n=c4sO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming_for_outversioned_definitions"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-ecfb9b-kqs088m7_1625573085220_0.679419511516663","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-674af0-kqs1a6gy":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-674af0-kqs1a6gy","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-674af0-kqs1a6gy","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"719f9d29b8e1d9f718dfea472d82edbc89de9af4","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-674af0-kqs1a6gy.tgz","fileCount":309,"integrity":"sha512-FGN7IBgc1fHqQWreS/SnN1Km8rsngVrKyX0rDz/mgKFKrbvaDBNGHyv2Lxnbv4plq2P6YfyicsJIdMeaymBzCw==","signatures":[{"sig":"MEUCIEM0OPS5d/DlJ1GFZWGJuX1PaiuxYPAAwDp9Dca6S7eNAiEAiKHbbkyatxNyReCO6tSAr2uW3yT/A20S2YVvqOOKMa4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569980,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5E3FCRA9TVsSAnZWagAALlQP/RYif2E43dRo520LmLdq\njFT4nEcCxCWu+Jla+h2rIq2czQvEpxW8+9tmhNcXO9MqShUKdAmuNg2L95/2\nmm8eKolz2tmm9a7K5MG+qS4qtRjKAlTCy9BRwCyVVSGQh+Hcw4783GHyWD0P\nvCOdHUa6aswsuTOcqXr2sK9zFgrDmgRNDuPRy5IbSXfbBAb7TOnNGjP0+mOH\n9UcDACuB3zNBJlvaITf+hCbR738DOQ+yf9/8Xlc7nTI0MeoqolxCZY83o8m4\nLQ1jlUJ6douRcMMb6x1Jq4b+H7EGGpwcf4V7iqzltMCE8RxFrJed/HQmfLea\n2cOpDT6f8Jv2xuXdEa2qZs0D2cY5aQmwsjko7saMzdSzMjHhv4BfRnvJFlSK\nciiAAT2yG4sc8ArB+lh47jeAvwE4unKbcZp8a8aMfhKA3RT2SxA+xaOg1flg\n79ZWSyEuxftS9z52lEWHCJnoOvUbva1lwwi7LC8av85xWvB/T/1dyHPctlEj\nJBDLFe9tY6IdXy1JFSYDEWrR9dGKD8DxnQPiCNkBQYTvxcNohseB4QaU0Cvg\nwapPfOa9xpRZybdnJPCW2WTtXywunLV0exLphYmT4PfLK2cqf80IscCVQIpJ\n1b17XRq7VxY5cEAkfO/GA65oC6y06RqoZwVBlMapasDHUdMzE61DbrBV2z1B\nuU3R\r\n=x2GC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming_for_outversioned_definitions"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-674af0-kqs1a6gy_1625574853459_0.40708540634707724","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-55d3e0-kqs2rc7w":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-55d3e0-kqs2rc7w","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-55d3e0-kqs2rc7w","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"0f3db353b5b01eaf5dfa2f93df796f9769f673e5","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-55d3e0-kqs2rc7w.tgz","fileCount":309,"integrity":"sha512-us7+ufrjSmniAsaw7idyZW+mX7cGNdiERIy12i9+APIRQzhoSrvvMffBCLY+NeJ+YLJAtwZLU0KxH2olNpfAnQ==","signatures":[{"sig":"MEQCIFlEjURlhiE1imE7FTqGqE6hq0HFk8U31418M2WqFVeJAiB5FMXpfMrKhUi/IMrVZ+8i87m1aDBXhQSJPT6gUbmUuQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5Fd2CRA9TVsSAnZWagAAb7IP/1+aLl3v0lV13XNSDalJ\n4R8La4wqQXH50Lh5ApssTWkrsn2Vzm1qp/Gwx/hQ/b40ejS+b4RYQSeYJdxJ\nCJCZ5vcXVyEyWUNolhnLlXGu7/kR6II0NGsUluT2GYUIs0g+T1smGWDzZnWX\nrKS2kzl8vEg0ccgeJxvxe7+6Mu/Ik2fYUofkz3y1oGtrnDzpdNrMVPN9pNC4\nTtyqmyT7h7opIxMBCjE7WjkMEerP/FppIs3qIjUPP9iArK+47pECWmxJ4Qwx\nadE5e0T7FS9onvcncw9r2ZORZHFveO1mc8PPXEJ6q2g+zCA0TkCi5LcMOV8J\n3fY0aVfHj2Vz0Cl30dBAeixvII+23RYS0Gz2qpDTF+wGxC6pxs94ioDLGH68\nU1AwuE4KLv0b46/3bHqGNPFibysF9Yq+YPsshpCtIph4EQ62pxjeuayR4jTp\nHl5uYFBinUtS1yRTCsQQ02srD+cvlMAfNU40XKRCH7UyhSdPTX2Vxol9+CHF\nmZH2uw1nZcOLi8UutuXYyiE+AF9+Sskb+FAI3YjWVcC8brja5J1OvvcJuyJE\n0ioOQxsPJWkVefre+RK9Yy9PbPe0n2rNwCbWrFj+Q9c94OtkJ43xjskWk3A3\nqGSvuQ++RbROWbBxyQNiAp8RLz+OwO7KmwOD0x2pIdUlixV7wnItH7mSbwNz\nJjuv\r\n=YS1l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfix~change_default_port_for_docker","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-55d3e0-kqs2rc7w_1625577333698_0.9554964802764196","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-2a983a-kr0gspj6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-2a983a-kr0gspj6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-2a983a-kr0gspj6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ae811d4622b7b343d2a0314e70209d1211cfc51b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-2a983a-kr0gspj6.tgz","fileCount":309,"integrity":"sha512-+w8CYA2OxUAyT2ZSdfPaPPqNCFvNcrOXpQMq775jWmQkKGvttMpVZ3NbVKvIsymnfrE3x/ZUbGKrjAhj9Hz8ew==","signatures":[{"sig":"MEQCIFRecgbkE3IoafU2pDkpPT64XuT+oI+Etjh2EO0huQYjAiAg4Is0JfQTTl9RLV4+c4y5soDuoH6MaMOPD8qkHuPKOw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7BUhCRA9TVsSAnZWagAA7wQP/jk5Mjd1sCVZJNVS43XH\ntJT+8xvhc9n43S4FGxbrpnOt65/Rf3RG6IEmopOjdLcaH/PsHZwi2jJNoFma\n7G19+BvxInKJugJwB0bJ5M0VMhMgM8ygJDTed7d8lvzTLAIISDteriiXN1ix\nmnFdOQrQpBo/dM2g/6HWfJ/+IspUXTZc+ROYcSmU/qNSwOUPE38y55Vwt7xI\nHQg1v0B8GjUjapevLDDUETUtukPxP8YKRboS1ulqEtTg9ExzTu2ZE9sSN5cR\ntz1dlSujHiWSNsTNhd0pW64h461WFFVYYvHoyO+EaCXJMM9MulTyXVrkEQ4g\nHfV3P+BtIB13Zuv7UQINSguG+WPn7jCchmeaiKDmozm6OFBSGOz/gbXozomq\nbsbvit3UnreBlnHV/YUlX0FX7kr9/lcw4s8G6dOr8G4zV6axlCOt7Lwryhmw\n3VI0GXbzcJMwAkr8dw3kF0mdIFGIIn2L1OLABte3smUXlXNrKLcs4KwPUgJv\n8Ez0LFqV6BYbA0rpf92gBgpFypAhhh55Tj6On0Zt0n9RV4LtsBxtO8o2BtGl\nB0K2LQX2E8ScXgWg4apacPmRFhkaRyglw/bnXT61omqxHRuIfgd1w40mGqgj\nqORle5FrVCWHDoINY6PEKDLZfDhZiWSF1CTzWs9NulVTLJCo99kxEdqFDje3\n4irv\r\n=j/4t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"^3.0.1","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-2a983a-kr0gspj6_1626084641222_0.8161091223514738","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-f29ec4-kr1tzktu":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-f29ec4-kr1tzktu","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-f29ec4-kr1tzktu","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"4f23fd74aaa57021738f4b4081466a7dd43ea25c","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-f29ec4-kr1tzktu.tgz","fileCount":309,"integrity":"sha512-+PhqcB55LqW13bQGzNZRwmXxFkROVsvGP4v7TmrreGwxBWWQA/42mbU5fnIs1UzhGrwIj2I/8f5Ay7Ko03DefA==","signatures":[{"sig":"MEYCIQD2nMTBLzyZmIKkorYEL/pW/IPTWqjTCo6d0S6dJnnFHwIhAN5sX42UjKIJV8fXvSY+XeDWs1jwQ6yI774LigJK6KbO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1568983,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7VfkCRA9TVsSAnZWagAAxbgQAJyk11QWqdGd2y5oCR/a\nZwFKM+wtXt1LBOMq39CmjQKT9YYsr4VRiCtPth0wQQ6fAgKMxtCOBuBGb8YB\nrW01WNrnwCKQzFzkBCm340Zmv0fZXcwRiWeBwpC9VHiYgYAglIYeAIg0RDNC\na8XVTzIk0d5TKLuFBYDp2MxfJID92t9KgvYl0xyfMg9SEB4Mmmv57G113Gnx\n1EJ69i1lLE1ZFtmDOIOQ32VLV8zuTaacuDDPW9ec91xzqmPbkQ46z8epEgvy\nvsPeAnAJiFCihuRgI/oB/b8UeekX+r+PxhARtUmEXUQOJ6Ij/GyINU5y97YI\nixojoe8O0QRNWQugF9QT8JsUCsflL6UxsEXb9UBji2xdfhuUBmJCH7s6yxWH\nhh1gDSp9CphAxuPjyKp1eBpeJhvhuRiKiDfN9nxSH+qVUsAvi5Tma/cXxq8H\nmtzrUrqeXeWqaHMRWOFWMx8bUdcfZF3n1mhACp9oXZkTlw+CrSsXiotV91Xd\n6J+uRAS25jkGVlkp4eotbq4ehSCoi5R7gkjOsSMw3rxajHyUpsDnpuxLin/i\nUlcIeia6sFj/2IRaHxdJpDvx+/rQxQcnk7WOo/LvhHfcH59ksQdS0wyLPCPZ\n7B6iBhs7JdueJ/+pTXL1hlHCoNs/ir0CyVt15cemGp4KeeFab6zaZFSvCpT8\nVJuF\r\n=yYDQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-f29ec4-kr1tzktu_1626167267763_0.8801783908916245","host":"s3://npm-registry-packages"}},"2.3.13-hotfixes-c5926c-kr1uiktg":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfixes-c5926c-kr1uiktg","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfixes-c5926c-kr1uiktg","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"2eb192c028892d6cc63d35b992ef2ad97dc98f0b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfixes-c5926c-kr1uiktg.tgz","fileCount":309,"integrity":"sha512-/9lLwO7/OYPFy79Owdjnl83T8SXaTIcbUew9iFGqUToRw9XuTnqrjz1wW91MjQiHzz18yWAh/O7xene7ww1l1A==","signatures":[{"sig":"MEUCIQDjgxMCB/tqKknkwBVyGrmeKxv2JpAqXgHbjBR9pa8v5gIgYjcGJYiYx9BkAbgkBLUcIRKBQu5i+0cLEdbBnHleRRE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1568985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7VtaCRA9TVsSAnZWagAAf9oP/3hiL2P5yYt+cPS8f8Ba\ne3HTjZf+O6WWxR+pE5pevr7qZCtdxioOlI/xN5pDRLsG7UaHuY632sytO2b5\nSZYqBUDFCZSGCLCAxAqLoYSsMm9l/XI8sDrVsekApJx8qif3kiuC1hP07GSY\nSFT+raXIUNKUnA91YH9gHtFaNA7XSdmsqXvn1iQhNt0sEawVYIvn5H4VGzY0\ntZN6iizzGOZm/2x2LKhNbEmeP599Kuvcmslb4DrfPwk9hLUOWLZGfCWF440j\ntaCJ0HF/QaY+vRJZ3L1ZngMPjyfFe3JBFxwpfynmEw9CzNEh/5nwksTR0lnT\n/mNjdr7IauGRKVM28qI5YH6Sxf/gY+7+LaEGCMBqpd5e46pVlNShZKzr4+R+\nvDZ+0xIMy1CjoLzqpXnFI7WCr6fMwGIbzoZy7vNraORAcbhY7vUKf+7KQyIR\nNxZNA73ZuX987BiouMD8KTjQBMNjAT0w20KQ78Ur5k+j7ee+koRYFMxDn24V\nko4uD0hX76Q++O+tEM8DHO3fXaGlt53KNw+48HxEoc2B0+t4u52uukh5eK8U\nV4YN5qMDVMnDlqteF+XW8qoOsSo60SQ4RqmDkL5GAnoRMZIROkEsn6RSW2Q1\nQwMNl+fDsvP1jPpnIAeI1Ib5aiJysEoIkE9YGuUJNMmdI34GptHD3TZV9N/B\niUox\r\n=5ha0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.12","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.1","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfixes-c5926c-kr1uiktg_1626168153874_0.7586842731033381","host":"s3://npm-registry-packages"}},"2.3.13-hotfixes-79a854-kr3aohej":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfixes-79a854-kr3aohej","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfixes-79a854-kr3aohej","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7b12c979d3486c540fce2da86d50e4f05ff884fa","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfixes-79a854-kr3aohej.tgz","fileCount":309,"integrity":"sha512-McsvwH+Y9qD9OIYCU67jNeyTZrey+2Jp965UHKM9Fq4WilDtGdCPdXk7Fz9/SfAm8ueTtH0C+nNnlH1uIWtlfA==","signatures":[{"sig":"MEUCIQDiLXxtXRboudDcSZ5H+4EHWQJ9DRPKFYCChTFp4aa7nAIgD0NV7CaQB4vehkRb0Cg0hhisIOGF15tGdWChfPsiyYI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7rGTCRA9TVsSAnZWagAASmAP/2tXshkXxbuK9I2el1ic\njo17DnMh0prJIdl4ZfR8cF4P8QFtWPKc8znv/gqDyUVRy2rGXbxYK9pDG+re\neymG3WUZytsr3wpTdnu00ACYKX8qsaRnY+yYln/wJvddHA2TZsq21HXuUOkt\nizLN7Zwbmfx19OIWRZjlwhJ5mVy2JV7YY2ruPRVf2TgqJGd9WFKYJgUfKBTm\n+sNR9o84uqgpbhryQAnZ9rEJj6AWzFf6ClWvaX1BcYBBGIG67tfaqR296a0z\ng115wwUN2QxljKiHq26lqccuaFXhDbYwaZKzsExIiBe1KzainxwCYeWm+jPd\nxdyIo7UuleDZGUN1tqRq3S3aQJRKOuNWqrIO1cRLQixtuwhSdZsFUv1NosL7\nyqZons1kVj6yuemt7+sg2po8YKiOFie9k5Fdb67kdVH1Iqapz4A99q1gtZhk\n5KDGMLugCSYJyKKiy6oQUqRHna3rEch1ExNncluNTejbhqNVUvRoS1R2uo1I\nlzTTu9IdXLF+d3VPTU186XhDKIB1P2xJu9W5TNxrH9vyAQycd78YbMSBaqic\nC8kaYNojn2WAcOfCo8glWW9FIadQ7h51GeMdUT5zPQBLxZwfQ+++YiLgRsLJ\nIRo20KS2mBygOAymKywat75C55dGDc6WN8zFwz4p5HI+98Ye66hwOnbEm3p6\n8qwp\r\n=nRQ/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfixes-79a854-kr3aohej_1626255763378_0.1819353598395108","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-357e67-krbq04rq":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-357e67-krbq04rq","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-357e67-krbq04rq","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"52bbeca0aedeff9e3e3310fc41c352cbf837f3e7","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-357e67-krbq04rq.tgz","fileCount":309,"integrity":"sha512-nG84XSdUdINd17HtRjjFzAT4/y+VQsL5uOlDR1/vEjk7q4b7NKZqTFAnEd3HDhMuSMDy9tY2G0imbnwgoDEYLw==","signatures":[{"sig":"MEUCIEZPj2MTGhL2TAFRoDPRvk0IdCL46jIgbF0XGt24Lx+hAiEA6vZAz6zbi8aW8rThb4L9TUfDI3eCDUUtzZT6Rxx6Zkg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569718,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9nexCRA9TVsSAnZWagAA89sP/2cIeqwZeDIl/taXeYBX\n6lIL/JsYN6iSuHSJAx2dn9pqYvHqN7Pml5SyRKv/nFiS5DuQwE9rvS/Nyrbn\nmQmOGtxD1ZEpww/dnHbLT7vl5ElLbu+MJuHzijIXXRwBQK1Tm3FtUrhRBZmm\nPdIL2nKcbQEdHsHJgGlJjgIIXEB+PIn/iotMaIXeFZ01Duaz6vPsmu/mQmaN\nXtqG9DMDFoAh+dJGlLjIshAbCOWk5GdOMWZCuWbRQoRN2L1nOC1UIqc69fTS\nXpmuXwbM51udrm1EACbSsnf5kHOYmF671EwYA90JSmGxlZVAV8CUBVLczSuY\nGMC8UktOfL9xJNE+OWjoFEtE/OwNzfReFn1HEo5r0nbP8OM7mmLMug4y1GxI\nPujBpGCSLEiCDuyWaA1ahmgCLRLxxIgfuO2YVS9lZvZ03gfBkPf5w5WufS16\nSHZZGwspDGVOvKU9MaQZ0iMn2DrirlNAeM3+ua/hug2X2qbJscNRDg24CZyb\n/0khhVdi7lRsyf4qeMKvt9gvjEYGZFENir1iPPiIB/8ODC7eM92EdVD2pUC7\nSRNQnOwQj3FWsrnieKYfmtVybJkdReuBH44VevRMTRIeerDWxf54BNosnbDH\nN4WX8csTKyRR3/j2C0ma0VBK8UqsVGQlKfV2w9WoaBlkwUaxZjjQOUayFpx3\nC1Lm\r\n=hP5p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-357e67-krbq04rq_1626765233692_0.34177748373067995","host":"s3://npm-registry-packages"}},"2.3.13-hotfixes-384f43-krbw28ux":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfixes-384f43-krbw28ux","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfixes-384f43-krbw28ux","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"d858ff22079959f3d44e3a145e67d116ad002c99","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfixes-384f43-krbw28ux.tgz","fileCount":309,"integrity":"sha512-0rVjOXGY3KUIwYG1Dw4vN9GvEz7AXD4JAJW0r+w5/tOTV3+4hYzf6+ujVUABExe+ZHfKp1KLlg5J5sAjnkADiA==","signatures":[{"sig":"MEUCIAFDPJcTK91+uF/Hf78kQtf1oK/dfft339y3lKmnkE/fAiEAj4SGXsqJv9YDPPKerdjiz4wMACMY32G/KkFAE7RCe9I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1569720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9p92CRA9TVsSAnZWagAA5NkP/j46rD3Ct0YEW8afIzEd\nRUApM+uSvv9ng5/jkho/0BP+JaO7/F8MiixlVnvYDPZl3J1YL6s0Z1Iu9/nQ\ncVLrqWKEdHycg4BH58sk7FlVuQeiRzK3nzAQUCei7bUZ89SXMBi4eJveviEh\nrsG4dtBwb/9+u+Blo1HLWwt7EtroFj6hB2buBkkY1GzFJf4jIlPe2Qnq7RGY\n2WHVQbO+racXOdBEKAmc5OZbbgRHmPazyYfzsY78fut8U3fT6rGqyoiTwIVi\nvNhyz5cUIQs1Al21q4oSsmtYud1wSlf5SDC/FvwiKlf36POOS+xkSRwmKqjP\nTUwf1F00i1uammCe4WuERU1Ktvstgc64ZmjZBIqtbBheDR78lb6arVlZAN6M\nIz5UOnMKVd0QxSVD6e0RM+FiKZDmLJgMbd0DoMk/0J0tDTUDOXmTRtSP9q8x\nLQDi6qoKCSoJNWlLrkpMCg9YfqUQh0N8ipHL2dWXt8GE19IjbJJpDZxRmoKc\nkRxgHbTswQs2jjesOaiezBxinLgWbBCSC0z2r6ZFRI4MuPZQVoTH0Ux8doOn\naXx8RA7IQlF8fySIo4DiA7TOfIes8HA7v3NvbjTsmz5FEedI3UcM4z9UkCZ8\ns6YwWZ3azLPpkSJ8xykiBGnT0UmzYnTZgtG1hl3YSlYs9BHsafkKd4vwQ7CQ\nnhm7\r\n=uwpW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfixes-384f43-krbw28ux_1626775414046_0.39931078088902305","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-67a6d5-krc0rvd6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-67a6d5-krc0rvd6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-67a6d5-krc0rvd6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"00e9903f29529551b75ea6130116681ecba38a29","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-67a6d5-krc0rvd6.tgz","fileCount":309,"integrity":"sha512-xJ0LW3zR0N82HQw1Pv/nDzO0sL+Kh9T8usFhJpE7NHywZr587B5WTMdoHTA2VW2rHG1RfufPDVcstvkApuoKmQ==","signatures":[{"sig":"MEUCIQC8JBE/YQIYGJYCmZ310QfxnYcPeOQJQ0zssUvjD/P54gIgBRqPwDk7VobyMCVE9Xn5wi8OPVXF0yaWg//BxUi2bEU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1570749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9r5gCRA9TVsSAnZWagAAKkkP/RIdbfW5wt4ydJEHx4F9\nzAndFnmuF0ipy273rmT2rs7rAaL2Y3LAsG0DaeSrq+v9FXI9RNI0ORjR9haJ\nOZq9YeOe3t+XzqlYTOIUEDFMpoBG7lgRF5doXwpxJbSxtVyvscCGqYIL93/g\n1B2unNSMyq2eKw6lqQ+13tdnSqm4l2Ds8w2fPPKtm1SsVEgZwwE86zn4o18F\nZnY6gjIc4sI+Hr6yRu0QUctjHQIVbwHpuBpoY12/hDDNYa1o+hAvpC6Tlnqv\nDvfdv9oxSXwFnXR7JgSDOHF+GCFAc0VxASSK14TUiQVjJaXr5xqlIpmhv1zL\nWetuXRybY1kn1JIVb+HUm937XbJGHmOPR8yi4g61x7P++zTqXqCe7bZbZvB9\nGFc2i3yg5+sVlzGUc2p/usEZDPZwMMkTbfQyYuLnVGsdu9ILE+J8gZzLqfEi\ntpV1qm7uwMclC2uagU6e9iV3a1/Wa4Z/bav613GDzKKnVn/c9LMlWs7jHtGl\nursVh47rLRwhH85ia7XW/KPXhcgCW+pKNDqgeD3/0GGiZ3+EGHL7tOHGstgQ\npbFP3VRDTzwOBYdE5DqDG10O52Gy9noImhLlb6QGxT9WFKYViAX8z069hmK3\nHCCoCcJnHL18Lu1B45PiEuR/yoPiSD5Nuo2bnhHzvvzJD+D0ahJFRcb+//K0\nldVM\r\n=Dp+9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"hotfix~fix_resuming_for_outversioned_definitions"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-67a6d5-krc0rvd6_1626783328494_0.888281310607304","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-477e29-kreziko7":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-477e29-kreziko7","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-477e29-kreziko7","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"276c908f4248b9fcd73278578e230c688c66fffd","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-477e29-kreziko7.tgz","fileCount":309,"integrity":"sha512-E4D0jlIAXk/Z1F9MI/spjnVlhoVz372QBVu8g5DojmP9XpvY0zrxf8OxUSLUoX9ibx9KjMbSgieqmc7qMQ0IoQ==","signatures":[{"sig":"MEQCICews616YEJqGq1VkXXq0uCIFLqJgkf1xzUCpB+VVFyrAiAqhFk92WiiKazXIGML3er7miNWsNNqMIpqkFb1JIcUVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+XqvCRA9TVsSAnZWagAAQBkP/1jf3BN/Q1Sf4T+r14YN\nfRSWw5mDjWhfXUxt6Ck8dBYm3sUMhKQaz1pzeUhu618g52RbqNKg1p+o0vtp\nG8xpgD07UfSKF5FyTso8OD+2mtQ1MRl/LNBBEWyHuK3whELOiu/S4/6kFsS6\n1Q5f4Ix0K9ArYiLAevr867FhvpcQmWNLwHn36FCkyf170j60Y9HLqPcdiHVb\n8jooDqPCeLaIoWB6n8t+nnueZWuCvagNM9sateZ41cEQvxZBy0unXbAH/lSE\n4YTcRac8GssGMiT7H2YNy5NLq0/1x5ssjOZRSSuiZ1CXreJspTKtLef8nYsL\nLrUpcrGconann8Sh3GLRaHQ7pRJZrCAyDSIb0yVwPg6EmQXFCexp1dxVn9b1\nUlcZV1xytEQ7oU8d0loY43ah4SXFtUwm0Lzh92liwszZkB2+KmTC/tRJSupu\nfHrrs/rbdR7xw3B1nSdZqlxyV2d2cBiJDHLDrJyWt5eutMxbcdOYVIVCWypg\n9zIhpHO8WxRLZmQuljUprF9M5y+EI/PEdmWVgBcVqf+t10J7cx50WNVG4h0J\nP2DKCMD1STZZlROWFB8Zp+NFNAxUWx4ub1eoH7NZpSuJQnyfkc59Z2WxkSvk\nOYn+kVTLnPH3CzDxnHGzCEBrLUe7jv43beY8kRbZJ41M+2fOqvqsA+DU4ATx\niNfk\r\n=875V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-477e29-kreziko7_1626962607574_0.046922963695277486","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-290644-krezqdw6":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-290644-krezqdw6","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-290644-krezqdw6","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"5a9dcf8befbe5e6b0ca0f159b09aa814b3f16ebe","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-290644-krezqdw6.tgz","fileCount":309,"integrity":"sha512-0BIObB6kO7E8CtmJ0iKK9xxAoz+UczUOoRHqBhDFnC7YPv/BVwzQuK038qnf7NWLpFK5faEW61WpfAFO0cDFFQ==","signatures":[{"sig":"MEUCIQCrJ6kXfVBBp7Vugujk/CY7cH6s/xNG9v5XUCM1fAdFmgIgPVLZVoPUSuHfI+desOPMt+2kn4akIbyC+KyNVJquZBg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+XwlCRA9TVsSAnZWagAAOM8P/1c5geY5Ww27jLJrilRy\nb5jnExM3yFGxvo9tSgRxmCW34ABvp8R/Z0yfgREeFeKimHZ0R0oGFphg7sRm\nMHtywKROhIhv/0eN50P9uiMeYfv4OSR6giKryy+LuzvNNSNDn93zuuYhqSf7\n++8bFAH/o89htU3b4XY+3kB6t/ao5kWqRMRQtNHfaqeR8Vt2RpmLSR845HwM\nWuoSwfYv3eU69uJzNOlvffzaB63M6VbSq0ko8+ni12q3MiCBo55/YuosUk1D\niMZDXxgwxgvJfGU8sagFLCfXnRt8ZgT2lIfy+XRF0j150MeseEDRUZ6eC4FV\nkMAS7RwT0kKLPqtKR8bokLD8Q9et6Z9hNVWnjq651oY967IYZBvGfX4OhJxG\nKGZFgFyCHo46S//5SFf48fSLPH/VFVrdZLocpPqR1w7bVpfr1sjRdYDN7Ueb\nUga/9FA6XggyaoC0Ioi7gQIfuSIm9yOvWLved5A8901BzKcNTHiWWeVZPmXl\n9T08BbKzHkJvAnkAf6r4PS17eosjGPg0D0K8Ucgs7N/mE5QDxJ9iuYzRuKec\nwSSaEZA8i+CYUoS9S9FVSiHR8x0mMMUtwOb6ldnIm9NBhZJB/89w06/iTg34\nUJck0HX03JUqesdK9a9rDdIQU90fiAMqDYJ8KDebf8vlYLDxMsCkaaN5Ri+8\nwXcT\r\n=dmJu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-290644-krezqdw6_1626962981723_0.0835945099511537","host":"s3://npm-registry-packages"}},"2.3.13-hotfixes-914ef8-krf0etua":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfixes-914ef8-krf0etua","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfixes-914ef8-krf0etua","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ba065cbb091a9c532a236fd374ed096873a52dac","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfixes-914ef8-krf0etua.tgz","fileCount":309,"integrity":"sha512-l05E90nqXM0qqbMT7b1UasbYzhE9yeVm8yThmpu8dvLeyCuK/S4vlzTLVeJE20SxA6zloLiFCg765PSqMaQbnA==","signatures":[{"sig":"MEUCIBYLqWSs5FsDNohWn6Z+e0rfhZ9TsOaLthtyiNXrIZlnAiEAz7I/+CmRSIs7MAihvpFnIM7JOxDY5Urd0ixt6RWQTgs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+YCUCRA9TVsSAnZWagAA4ocP/RJwhyF7mkRK8GVozt/L\n909wY8axVCS7rhLi+ShXKa4XKIPSvr8MiFzkUhWH2QLcAgE7zmdyj/z6zPox\nWY/591fbUzJa4vaM6cB6qg3MbSni0D7f0KjN8hxAi9rfaguPssagYK93IaM0\nkWni5OnjD1rw+UwzPMuGpiQpmtmqZoz+EnEBsVBD7fuloMUwtumk5V1Oy3Ex\n40MTNRJ7klNTEaa0SLApiOcKg4xD97TGBJ3NJwCbyq5wJukxFhNdQO4huw06\n2GXzG8pAvpB7P+GZitk6jq2mSYyRVnKX8Rykngar4jnympSNNRf2mrOlH25t\nukTXDDK7+iKKeg5cd7DUXnm+S/N8It//sqgBntaMToeKt33XU13SDpxH1hqR\nmcrT6M88DD5OP9lSp58k5SiuLzd1eYYFRmkRzJkH4XqObSqROsroqIbzsoro\ncjKFLjsRDlDqgpj5FIvg2o1aG71BLHsgskayIQYiSPMmoI1B3AaJnIX2FItR\nR5Cm9ARWLCGEIsyHGGaHumt7J0XocGZZhxPpX2vDn5iYsu41XdphmBhVxWJb\n0ptxB+RiwXCyA2XCim2zwkVR8hNy6oQsXXDOkCf2ok8e8vf//+RvQfbFZMZ3\nTV87le085WYgAIkjufU5MJwOS9gAgwe0faCXsEQXEF7bFIJTtw+q8JutVWJm\njuhR\r\n=EtS4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"^3.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfixes-914ef8-krf0etua_1626964116429_0.6083081283304008","host":"s3://npm-registry-packages"}},"2.3.13-hotfix-0961d4-krfzau70":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfix-0961d4-krfzau70","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfix-0961d4-krfzau70","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"51c39b8ee589b82b546bf9127b98e6956f4d92be","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfix-0961d4-krfzau70.tgz","fileCount":309,"integrity":"sha512-7tmG08LsjLFTSIH7gqedv8t7tHCI0y8vRS6KhZ40a0uOSGawsN0CXnIaxMHFSafASqblt/djpEXoxn8IJQz6cg==","signatures":[{"sig":"MEUCIH/WJmibEiqx1J6Z0Nle/8KFlseD2t0TN31Ty0BCD+qBAiEAgiiDONB1ypheiut7f+KMy12AWHMAKO1AJZ8T506o6qU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+mV8CRA9TVsSAnZWagAAFKUP+wUR4Xf7nGFdVotpi0jm\nxhBxpGTvvvZNkg8Q5uZ3hDHnCpQRZkUyohgoF1WDzrDuET71fR2+g17G18L2\nDEuJ/8sly4DfqszxqwNS37/b93j32Rqzl9aUeZOFqqztis/e46rddKaVOEXJ\ndeu4iSDdDA5j7kf3uQcqrJBCtqe4CYGhwJ3e+5SXsln4rz1r35pVmd3b8RUX\nj0gZYRq2eg3h0NLjGbJUlKuQnDJDT2+85xHmry1P5B5IQUbnaRVvDtdmPKvj\nGBqg1bFq2lCgA/wNFO5YKmvJWgwzygZuYDhObWHJFRWVkyx7piTY91gFowx7\n3I4VsBm4yb5ERq9zakBR4sVu570/d6ptowVUI3yfCwrQ3u//A69Sc4YGRVrB\nBSb5BeSi7gzCJQqPiJGkJwK60/6LY/96fqdloldchzT3xdoZo5KSPMHD9QhD\nmHbAhdP5VUQ6oWPbhaRJrGknPm/MYju+1ycW+CWIhOZq0y0aj9gKvfvVpF1H\nvnFOGIQ+yCmQs7f9WyDtlFuORiflLB+EAFLC8aMzucPcYrfYOoDYWc9UugYd\n0RbbLI9tXmqgjA/UWQYWYTWfsVe48ptudqLmwq/X1hP8avTr+rCnxrfmIrj0\nDyyX40zQ3ggzMJvbGpOPj1iuWD3YcNrcyfTagkw/P0m+xlPf8HCC6wYBp2V/\nswZs\r\n=YLVU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfix-0961d4-krfzau70_1627022716474_0.31095526023403175","host":"s3://npm-registry-packages"}},"2.3.13-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"938f4be358f858f5b17fc008bdbc52a419642a5e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-beta.1.tgz","fileCount":309,"integrity":"sha512-kRrK/hSyjXh4vF4UENK7lknWluUJSNp9mKDUcxvElBDvyOxIRsTZUUwmvwma6ExbuM8+IFi9abeirRmzir8d9Q==","signatures":[{"sig":"MEUCIAq83q5L9/gQ6Lhrc7rpTT0EotX5rlAMaRrgY08D5rSyAiEAyK0TV/wWZsTRSb7uJVz/pUmlQYcQicBodmAd9BAWzk4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+mkxCRA9TVsSAnZWagAA9XcP/iWwFLzaBMsgjR3o75za\nHNsOoaqzMny+Qh9hkjRnxI1Fd7B4TeRO6lD9Hy76xc4Bx78FJW23uEIp/LI6\nUCdNHkIg4i/OdBNfsBrSN2olT5F3rOEM2KmVD5Y/ABrzve5AUr97R1VpIz4o\nvj4UMJcWnCZ1wA6D11OVv9VEMWk4xLocvM9YJZ8CmF7rS+XOwNkJB5BDjTVA\noeh6PBSeJieklMs1zouzsy1IhziM4hVVjxBV5w/Y9SVIo02qJZr9krN4mPk4\nyej2Q7tY4SCQhqM9YrUt74MQ25IgPxsE8FBOGbc3AovtD9sgSLAmXAeJG6hX\nvRbRC9VWDouRMXX79gS63LUkPvFZQo8e3ZUiXLSb8WF7N8u1nepvnIGehwpZ\neN1tEpuRRKtf4K8soQAFYBKozxFznG30Xg6Ahrn8hMGGZJspzYsTmKYQIAe8\n9b9fiMyo618TZ+ksWq5f9PX72Gs0HJFzSSkBInTmF0woG4DNV+8sdlO9ICdh\nFAuuQ/d9BqmkTm+KjT4Q9ELUmZcYzLyTSa/osv++nWUwoKFrnY5/wrMzGKft\njT1ykPSkyVEi41HQtMeaYUv7ZefEKDk9fMVMmCsAGyPM4GLzjxPjEC21mOFv\n65f42v9bocJarXrVgAvOYdbnMYbKEgR5jhz4iCto1QrocXyryhTNtgfXCmeD\nBci2\r\n=0G65\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-beta.1_1627023665351_0.6135082554958002","host":"s3://npm-registry-packages"}},"2.3.13-hotfixes-afb5d0-krfzy05t":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfixes-afb5d0-krfzy05t","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfixes-afb5d0-krfzy05t","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"f0e03c1532c7de7da38a67dbd5baa21e1f0d338a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfixes-afb5d0-krfzy05t.tgz","fileCount":309,"integrity":"sha512-OXP00tgqqnNLp9pVSvEHA+Gxk+zyeYR70kfe0Yd8LP6IfSnQWTnYg3uY02u36kjxCjki2aDdn7x2Dz/Z300RyA==","signatures":[{"sig":"MEUCIQDDSWAsWBWkRRcwHmSfK9ophVr95XvhxBa0niegejBjfQIgMLQtwlmbcBEekQ6FOY2R+QC9Rb9ZG40wRe5bW1OespA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+mm5CRA9TVsSAnZWagAAeb0P/0Dnahqen5RqabX7N1tJ\nMdQp6VXSVOXf6lH6dSdQ+AXkXogKmQtQUwP82hyk8zT8D4vdYz/us2vbtKIX\nnaYG8P7f6/nd+ZUxvl+Uceb20H/I2cKAu6VlV3FayK+oCWAqLZDsShU3XIab\nHCXZYvNWLNhF0lumAhQXrUf0xLjc4JbsUFF+DA+hLUfvIOZcODsbkgBrdEa9\nctd5VxjnA6QNhm+V8Qd6FxB8UE/iwgBfiYAnzxWrph6CR8RVu5MGWDSzYITD\nlxSAOnrUry/SVVkC6cT0hQ8rsXdZkeYgbqgHVdwlkBN4b57B3znSDFYugdeP\n3m94o/x2pwupZ6GDzra5dcQSZmj+23SltlAH+VW3PrwUWPcW6jvcAwkz4iq+\ngL9ZAP6jd9hJiDgLCFTnWAsopP//rODec0Mv9ltOy44y7crWWIZsPzKty1Lj\nWvBS5pEza+MZ5ds5tPMHly+XTsK+fjAoT+wDq2R6tTzXQ1/Ll1M78HjhZPMe\n/fFxS7Q5JT0kIQzlwCtculBM6pZKvqecLpYhRKnSSEborBkCEdDnBSE38xN8\nKAKjFtuote366XroH3OAPaAf/C+Dz38VQCS1tAnzJSKkH3w1Y3VHXCCQJMGf\nEZcEOWGuORyKDyI407x3NrdI6ARkh+Pys7LXUVUJkRW+2z9cM9smRoQG9It5\nx4bl\r\n=UBZN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfixes-afb5d0-krfzy05t_1627023800757_0.8013813679365744","host":"s3://npm-registry-packages"}},"2.3.13-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"a282e1fa30706f8c89888e12ee81abd1000b45b1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-alpha.1.tgz","fileCount":309,"integrity":"sha512-6Uc6ne8BvE0XVYeD8LLrdELYUFMG50L1Unc8wSWp27dFue+fvalMXjRCOvvPsGG63aq/XV6Sla65BIRhNLtASA==","signatures":[{"sig":"MEQCIEbMnsnlApH4AfPk6BswaodLmXEmMHnR2R5PTFJe0he7AiAWkAvUWzcd5BpGUb5Kbk6j/vurDbn3b6EumbfDihILLQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+mo3CRA9TVsSAnZWagAAfJ4P/0JM9OEx5vPKGU0x7iGI\npMLN2rQmJQSGcJBlnHrRzihmnr/Vj/U+xvV8WxbDfkY7nqTK7/+xbDAp8WqC\na/Klvzv7G43bUlmFlkIrbKc47LtvsVrqgY5rpzCSnFk9TtRWA9Rf8d88z8El\nGu7dGOI4S9m0S3uaoUKAmvWC2qavqdC9IC5beSp6GyVK5qGigDbUtTwxgfjH\na7+tvcMfQg0yDdZPFZgVMauRs6xAFdDMakrDjMvgo8G8qGhaIQRR/Kzg8skC\nDT/PKx6Ag15Xg4GkXU6KOKkREm2DAKZw3cmGXfPZew644YUIsmIwJfuAEJZ5\nMu7s1XgM02pbSlovhw2iZYPzqzGQImqbCQpz/uQXlyVj2Q9uIrHhtkj2Uufp\nPnBBMN4f0p8aoIPo6AKofYioevuMyvLxKKif3+HoYzQLev7v4BceF31PH2Vw\nW7DzZyfZ4pDWAV+lZ+NeXc2vD/sViobUmpp+BRQ/RRwGVTGykdX5XIVicT8t\no7anBzWYG2r60TBR54cG81tMdhphqzcFDBOXqy4yYrKBKXGptf7blHJtYFor\n5k2MeRZNp2+b1JxcjX5vKNvpIq9FerRyyiQSY6BhSqdwS92cP6gPdF8GTEs6\nmQUwVTi7eoPCUv7pSO7tQ5rhChQPjsDc+tsDQ/PHNUAYBL7RIpJJLxri0tXr\nxK8M\r\n=/91H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-alpha.1_1627023926947_0.40181234548512834","host":"s3://npm-registry-packages"}},"2.3.13-hotfixes-afb5d0-krg43ler":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.13-hotfixes-afb5d0-krg43ler","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.13-hotfixes-afb5d0-krg43ler","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"273a3e3f9c77003df0fda726d774e3d82db89a1a","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.13-hotfixes-afb5d0-krg43ler.tgz","fileCount":309,"integrity":"sha512-/qBNci2gP7EXMVXa+MOSRsZPvPBBfbpQlH6KLGKzc9yUjZ0nEnzI+1tyR8RvXIM+kkYPHMBpryBkyT/pY2hhEA==","signatures":[{"sig":"MEYCIQDF1wAbbgr9yEeq/ENzKCnhWfAl/kIvXzAC9/0eLlhtJwIhAOv9GhM9DOVTzc8895HDAogpctFf/nBmyX3p3zk3OjAK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+oT6CRA9TVsSAnZWagAA+5MP/1mVLYOxQSmJUcewiqH2\ner/SS25xzt6dif8QUlYR59cJ5pBar7jsddeJTmXGO+L1SsdqmjuK9/fT1hRQ\nn7orcITRmTP5PPFGeGi9tWcQNzA6VmAOdjg45Z5lZd9zLO8IsK1Bd1AsCBC5\nMar1PIGjPJ3nPuEdoHXoKKuXoxRrus1tLICAY4FtwSYHVxH1imo7haaOc0JO\n7pNqbngfFXA+FAiyrflGh5xDtNyPjSsFTbjOxjp7+IAvvsOVPI3OiasoOjYT\nFDp2kpSa0i0r5GcrVO6SPgpNzf3tHLrHxih6XoVbqzEO5+vAw9EZACOQg/0q\nXaYNBAAHy/jQE6DwlH7gOwrXB9eF1g8vWdlth5xzD2cm4Iwn6K753Xixuu8r\nyFJRJN2JisloyMV7GHt2+3hOtR+v6Ycy+5ydFD2bqiOHeSzBg3FFP6mCaMCN\nV4SCm8K1VSK61NsYrttK7fY/r20I02E6sSJEDJqBxjfSWDfdaobNJbLrA2sc\nYbwERkkvlMUaS9NfUolmvYe4L9Fy2BcqZcpQtur1UZUDAU0c14AQudkWrM+p\nOuZqwxup2u9wmimKv9FmKADFJ/QePzjuGEXPToFvZv+1niLiRxIrQDJKF4VT\n/ddWrNpijIzmFkYs0JF9ajsJnEdw50dZNxjMrbXs39DuQpYmLBlM2KUz3+5K\nGIA0\r\n=bAEc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"hotfixes","@atlas-engine/core_domain.contracts":"hotfixes"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.13-hotfixes-afb5d0-krg43ler_1627030778020_0.3289923286606595","host":"s3://npm-registry-packages"}},"2.3.14":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.14","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.14","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"136fcd1c714dd61f41bc34667331b3c502af581e","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.14.tgz","fileCount":309,"integrity":"sha512-NhJ+VSmpWX420VuZFyK019wbo98nttT9uhYdD6lt4M0pPbOovaPj2/5CjFxbVgYU4UIEpbD3WPHh8TlmsWe5ow==","signatures":[{"sig":"MEYCIQCwA2PfaXAhd3AEKrr6vVCuC+0LdUNltWYpI3/QILK2wgIhANattzFSiliSpUgiQx0XTiaDydeVakXETDc+6TtA3XOZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+p53CRA9TVsSAnZWagAAS2oQAJMDIF1NKggAkaazdqCL\naXybnVAKEw/1muCCFh+48eLTwE6EIVvsug6Z6GAP+t/fGDMX+UcLzIg95ymp\nxvmZWzy/iCzyXLmedKMtslelu2JmUq3AE2QgtJIa0BzcnJFezX6J24/wNjF7\n+O7qv5KDHn85fHb4NtKRBuXTWbNk8pocwdPCBy7JiACxPvQV0OuOqNjrJf80\nDdwUWAtFxFHkRe7kSbKnPuv9M20MNa6PckC/l0lW412PjyNqz+uA5lL4p2ht\nu0glvCbq0sPXjMEbX8uHg7yE8tboPt3sSKfd/lcB+Lr+Cf47P+In+Ns+yWz8\nBIBHD+uv1SQ70Wr1C5PVyvjsd66Tj8jAUwYMYRhacD5eUzLDkpTzCJ8y8vDM\newcCOhHxuEyCXXOwDdDVD7z0RVd90I/kynNQMYYgXslh4UpPMhdSz++j5qsE\nl46VOnR9WKGQNNAauLYkWuMB18sMpEU5DBM6rJwU6dnZHPeVJvN1Ry9UE30r\nquA8JMi11o6Iqn4m+8Oe/cyx8HWnLvYhjZQF0bQt2P5uw709WGs4shN3WKEv\nKm+ZCviTSdvnh0YNYmPFJTugqADdVKuewGdP9AvlL3qscoCFpm+5oufAWaIL\ny2ofFnCNsyosVpqV2L9FaZHG/Ifs6aLiblVax3DPqbquGdbT2XZ9lYVuStHH\nN60G\r\n=eOi5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"3.0.2","@atlas-engine/core_domain.contracts":"3.0.12"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.14_1627037303400_0.8923539908138958","host":"s3://npm-registry-packages"}},"2.3.14-beta.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.14-beta.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.14-beta.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"c5d32eb4b30278032b34a36645bbd923bc1588a1","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.14-beta.1.tgz","fileCount":309,"integrity":"sha512-LCzCq9rWyuh+PFfQ/uM1ysmZkSTbAVuJYct+gyF2WlaynIbymQj+M3078iaAnLcOU8ereNW7wKMsMYXi7V/rmw==","signatures":[{"sig":"MEYCIQDBN8ol2S4+U9shT1/LadR3ILHx3ghIFwWH3R248+6Q1gIhAM6jWaoBmF13vC8/i5kWW/YUI+SpLVKCI2VTjfV8TGhZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572037,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+p6VCRA9TVsSAnZWagAAP3kP/0ZYnLcftzIjDfNMw6d+\nxSjPg/DhpgBuArIpY0P8/ZGsNB5ZGRCbxVe9NlBOWcfNdA+Y0VzZQqJYPCz2\nfBoPVj2cCMmONDdPmH121tG2X8TZBQm1FnsdqQ6kXGw0rHpzM4CiaqaVqvC8\nZti2l04kPc+TQ80KPK9qy3N5lAuBW51Vn52VDYaQboqa92y6F13IJokIVXv6\ndmbaCZDT0pUrQCzTfhstDfF0B0mheTqZ5Iz1GbBrZw+LaSmqu8ZBq1nTNv/Y\nT7nAbWuu70EienPBvzqpyn5Aw3KR968WsNMLEnVIcpHF5ZR2JuWRQ9Q1oZ/x\ndrplddoXzNAJIeaBs1k7jWnJTPmJXK0cfovj0NahjYIuS0LRgRU/28ObIeSn\n5JC8I5PvCjcqpK67st3yUVpIEnX2TdtBWKjD+tenic1+XFGAHGgEoeTBfmHQ\njecDtCa9noQ4FjiT/STEkCrGGEaBzd6ko5VGLH7YFyTiRRDUL2ocVGhWh8X0\nhx0MJpGINfkKlG7mqTf9tA4mElTxP9UvlHNgIPfCbjNkkw+NUROpoFlqvwB2\nn2sz/+7ZlIW3fvOv1+xwh73zSbIT1heVUY7PI3BNMYmA45kR7AabAmfACstf\nC7CfxwKsSLrkxYlLc7FxRawORnf/3CrI77qbKH3NioJfRZJ+xb7BkPjBkZla\nzz0+\r\n=wQxa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"3.0.2","@atlas-engine/core_domain.contracts":"3.0.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.14-beta.1_1627037333012_0.17063434641282038","host":"s3://npm-registry-packages"}},"2.3.14-hotfixes-feb1af-krg80kg8":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.14-hotfixes-feb1af-krg80kg8","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.14-hotfixes-feb1af-krg80kg8","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"7b34e162f4e69ef8c245f62021c3f33b309d0e0b","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.14-hotfixes-feb1af-krg80kg8.tgz","fileCount":309,"integrity":"sha512-/uFRAq/DweYpHCxfBiOTAwi+f2ZokGhKUncDz0ElACl+8BZsA4DyUYuYjQLJWBk4pM8rDWHbGQ9tirdxrrOkyg==","signatures":[{"sig":"MEUCIQDH6oETNfNSN7NdIVyHkjCCZqx21Yn/gui9uokT9sYOLwIgWEXrnFu7g8iYWQRCzXOttClKkByDS5ycFeOqO5hJnYw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+p6lCRA9TVsSAnZWagAAppkP/336KBlqy5ygwfebmXBU\nK9ySpalgj+F3B3KqTPgSsRvGRDQoXnP+LUO7RG+X47ComWg33LDnMGUrwC26\nBDBUYM0FC8LGs6gM1xNyZ2REKmizkFM53VbmDFHTvsyFH/Xl0gVZ6qnftMlN\nwgzv/genKuvRGeumvwNB6CwRT43nxYfYL7IepVot/nnfRxy85cVrqqi68o9c\nc7CxeGsVcdadIQb/BtXJH/EigIbrDn0UUga26F4jMoxZ47HX2bWOX64UAXwx\n+apzSFdYJ+FMIxgL6o2qwwXTlY1NCopevyHC2hq4Z99cOVTCATWocPklWK2q\nN35p0E5Hq8drOAnCkCZNPoCJh96VKlr5u7sRrvVAruUVMDJl2ise54qHRH95\n/eBNisv9lktORvx+/j1sdl1xybM1nX2vQz7NwHmEMbII+gUP3AGATmxkzsnx\nGYqSsql2Ny8858Utnywro+ihwYCfmoeD7lq4NKpgNn6HWBtpXJAPlyiZvrOn\nXzdDmsoqCyy/D/tq18ro/jtxTidXMgWuyG4+3VpLRzoAzX3jLTlu2Pj3zMvM\nAPLndnulDQ90VzydRydMpOJGcCu7x2BalAd4B+mbLajPTeZvWXvTUX8q3xwK\nh1N5+68AGoyfc/uK3+GvdTOY5F7FQB4yw8V8HNGR4kkTBxR1VUMelXnJbFt7\nznAG\r\n=cjlp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"3.0.2","@atlas-engine/core_domain.contracts":"3.0.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.14-hotfixes-feb1af-krg80kg8_1627037349510_0.09782548358850685","host":"s3://npm-registry-packages"}},"2.3.14-alpha.1":{"name":"@atlas-engine/core_domain.process_model_execution","version":"2.3.14-alpha.1","author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","_id":"@atlas-engine/core_domain.process_model_execution@2.3.14-alpha.1","maintainers":[{"name":"moellenbeck","email":"martin.moellenbeck@5minds.de"},{"name":"obivarg","email":"christian.werner@5minds.de"},{"name":"alexanderkasten","email":"alexander.kasten@5minds.de"},{"name":"rrrene","email":"rf@bamaru.de"},{"name":"steffen982","email":"Steffenknaup@hotmail.de"},{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},{"name":"fvanbraak","email":"frank.vanbraak@5minds.de"},{"name":"lukas.huerter","email":"lukas.huerter@5minds.de"},{"name":"s3bastiangriesa5minds","email":"sebastian.griesa@5minds.de"}],"homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"dist":{"shasum":"ffc0190e6c41867b63e04271dae78170a5923e63","tarball":"https://registry.npmjs.org/@atlas-engine/core_domain.process_model_execution/-/core_domain.process_model_execution-2.3.14-alpha.1.tgz","fileCount":309,"integrity":"sha512-9uphAcS65ZhikofOMWkRPpr97UysULIgIf6qMg/MBv3MX0Xq+k+RIFz/xV3rRVwAArw8M8Vcx4W8mMGGzSJZIg==","signatures":[{"sig":"MEUCIQDoqJ5TKYUQF2ozhseVI5NHltBHXLpi9LwguOOH6Exg0AIgaarT86TGyLDQ5AkC5jM749ZnZSbj7qAZFNtENubBp5Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1572038,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+p8iCRA9TVsSAnZWagAA41kP/Rrizl2pLdkk75BVXbiS\ndO4/uMV/lT3ufDtI5tnZ5JDQN3JJ1J3qZNzi2tuvYdofdu1mVtRLGzglzLGk\nysWh/u4DftsDrEYLBz+mYNLygMMdl9BvT2blTOhg7uGdXmPKssAR9Gawhl32\nKp9lUjOc9RKXygCADOC3JzmzYn4IkjsyJyTq+6gbNmu1UnZNaAeRUrvZ3DH1\n1ukVj0EvzZYeeq5mTYb6laKYXLB2tmWIhc98XthTHnnO1+sHWNu2Td6ivVni\nDdzy4VG4BuOrQ0cXfm/NqoPDC2/Fi7RAYQXiWhOPaclGp2HNY7XnV2T3Gxz9\nzwWWcFo2JWVncP/ZvqKzRTQTwcWgw/OOa3++LxaUVzro1mio9uiXUIX8g7Hp\nF/QM01Zm2901c22L3xtHo4r1O1y5ICE4KUZDul/UU7Aq3Rkf5j3eah+0vl9A\nYcT113ZN89jONESnWuXeB05IUk4JJjtNpoDbUHZTM+GamTLc00MZr6xJb5Q7\ne2gGuAHFxSnOREFMnY0PJLMl8CnsQ7b0LMKtf92TVEg64Z/B/IZqb0Zwhq51\nKJ5H66vjf9o8IGl9O1t9Of7OBOrYnx7M2g2Mg9xaVkcNW4B0+G+wXuZvmw3N\nqgQxzCI3SWciqc5zENXIhbc+7ztaGb4FaQiyHj2dcwkqvOcr3Ka4m/5x2V/A\np9fa\r\n=1ZfG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/commonjs/index.js","readme":"# AtlasEngine Core - ProcessModel execution\n\nThe `core.process_model_execution` package handles the execution of `ProcessModels`.\n\nIt contains numerous services, handlers and facades to accomplish this task.\nThe most important ones are explained below.\n\n## ExecuteProcessService\n\nWhenever you want to start a new instance for a `ProcessModel`, this is the service you will need.\n\nIt contains the entire operative necessary for handling a ProcessModels' execution.\n\nYou can start a Process instance by simply calling its `start` method.\nIf you want to wait until the Process has finished, call the `startAndAwaitEndEvent` method instead.\nIf you want to wait until a specific EndEvent is reached, call the `startAndAwaitSpecificEndEvent` method.\n\n## ResumeProcessService\n\nThis service will retrieve all running ProcessInstances from the `ProcessInstance` repository and restart\ntheir execution.\n\nThis service is designed to be run only once, when you first startup the AtlasEngine.\n\n**It is not recommended, to use this service after the initial start!**\n\n## FlowNodeHandler\n\nThe `FlowNodeHandler` is the base class for all handlers; it provides an\nabstract `executeInternally` method where the logic of the derived handlers is\nimplemented.\n\nThe base class also offers a private hook named `afterExecute`, which is\nexecuted after each `FlowNode` instance has finished.\n\nThe `ProcessTokenFacade` contains all methods which implements common Tasks for\n`FlowNode` instances.\n\nAn example would be to store the current state of a process or exporting\nmetrics.\n\n## FlowNodeHandlers\n\nEach BPMN type has its own handler; these handlers are named after the\nrespective type they are supposed to handle and are derived from the\n`FlowNodeHandler` base class.\n\nThe `ExecuteProcessService` will delegate the execution of each `FlowNode`\ninstance to a matching `FlowNodeHandler`.\n\nFor example, a `ScriptTask` will be run by the `ScriptTaskHandler`,\na `ServiceTask` by the `ServiceTaskHandler`, etc.\n\nMapping each BPMN type to a handler is done by the `FlowNodeHandlerFactory`.\n\n## FlowNodeHandlerFactory\n\nThe factory maps the various BPMN types to their respective handlers; it also\ncreates handlers for any `BoundaryEvent` that may be attached to the\n`FlowNode`.\n\nThese additional handlers are attached to their parent handler by decorators.\n\n**Example:**\n\nAssuming we have a `ScriptTask` with two `BoundaryEvents` attached to it:\n\n* a `TimerBoundaryEvent` and\n* an `ErrorBoundaryEvent`.\n\nIn this scenario, three handlers will be created; calling `execute` on the\nreturned handler will produce the following call stack:\n\n* TimerBoundaryEventHandler.execute\n  * ErrorBoundaryEventHandler.execute\n    * ScriptTaskHandler.execute\n\nThe order in which the `BoundaryEvent` handlers are chained to the original\nhandler is also important.\n\nIn this case, the `TimerBoundaryEventHandler` has to start its timers as fast\nas possible.\n\nIf the `ScriptTask` encounters an error, the `ErrorBoundaryEventHandler` must\nhave the ability to handle it and decide which `FlowNode` to execute next.\n\nOn the other hand, the `ErrorBoundaryEventHandler` would not want to handle an\nerror that is related to the `TimerBoundaryEvent`.\n\nThe factory is build to prevent such conflicts. It does this, by making sure\nthat each decorator is run *before* the actual `FlowNode` is executed.\n\n## ProcessTokenFacade\n\nThe `ProcessTokenFacade` manages the `ProcessToken` for the process that is\ncurrently being run. It allows each FlowNodeInstance to query information from\nthe `ProcessToken` that is relevant for its specific UseCase.\n\nThis guarantees that each `FlowNode` instance only gets the information that it\nactually needs, instead of the entire `ProcessToken` history.\n\nIt performs the following tasks:\n\n* Store each `FlowNode` instance result, using the `addResultForFlowNode`\n  method.\n* Split `ProcessTokens`, using `getProcessTokenFacadeForParallelBranch`.\n* Merge several `ProcessTokens` together, using `mergeTokenHistory`.\n\n* For backwards compatibility:\n\n   * get a `ProcessToken` in the old format, using `getOldTokenFormat`.\n\n      This will provide you with a structure that resembles the old\n      `token.current`/`token.history` structure.\n\n## ProcessModelFacade\n\nThe `ProcessModelFacade` provides access to the elements of a given\nProcessModel.  These elements can be `FlowNodes`, SequenceFlows or any other\nobject that is contained within the ProcessModel.\n\nA `FlowNode` instance, for example, can use this Facade to determine the\n`FlowNode` that is to be executed next.\n\nOr a Split-Gateway` can use it to find its corresponding `Join-Gateway`.\n\n## SubProcessModelFacade\n\nThe `SubProcessModelFacade` provides access to the elements of a given\n`SubProcess`.\n\nIt is created, using the parent process' `ProcessModelFacade`.\nThis allows the `SubProcess` to access its parent ProcessModel as well.\n\nThe `SubProcessModelFacade` implements the same `IProcessModelFacade` interface\nas the `ProcessModelFacade`.\n\nThis allows for the `SubProcessModelFacade` to be be passed through to the\nhandlers, without them knowing they're executed inside a `SubProcess`.\n\nBecause of this, the `SubProcesssModelFacade` can be passed to the individual\nhandlers, without them knowing that their are executed inside a `SubProcess`.\n","scripts":{"lint":"eslint \"src/**/*.ts\" \"test/**/*.ts\"","test":"c8 ts-mocha -p ./tsconfig.json ./test/**/**/*.spec.ts --exit","build":"npm run clean && npm run build-commonjs && npm run build-amd","clean":"rm -rf dist","prepare":"npm run build && npm run lint-fix && npm run test","lint-fix":"eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"","build-amd":"tsc --module amd --outDir ./dist/amd","build-commonjs":"tsc","check-test-coverage":"c8 check-coverage --lines 35 --functions 20 --branches 50","report-test-coverage":"c8 report"},"typings":"dist/index.d.ts","_npmUser":{"name":"process-engine-ci","email":"ci+npm@process-engine.io"},"deprecated":"This package is no longer maintained. Consider upgrading your engine to v13, which no longer uses this package.","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"_npmVersion":"6.14.13","description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","directories":{},"_nodeVersion":"12.22.3","dependencies":{"uuid":"^8.3.0","clone":"2.1.2","moment":"^2.29.0","bluebird":"3.7.2","inversify":"5.0.1","async-lock":"1.2.4","cron-parser":"2.16.3","loggerhythm":"3.0.4","node-schedule":"1.3.2","@atlas-engine/http_client":"^1.1.3","@atlas-engine/iam.contracts":"^2.0.0","@atlas-engine/process_model":"^2.2.6","@atlas-engine/error_provider":"^1.0.5","@atlas-engine/event_aggregator":"^2.0.1","@atlas-engine/configuration_service":"3.0.2","@atlas-engine/core_domain.contracts":"3.0.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^7.4.0","mocha":"^8.2.1","eslint":"^7.24.0","should":"^13.2.3","ts-mocha":"^8.0.0","typescript":"^4.3.5","@types/node":"^14.14.10","@types/mocha":"^8.2.0","reflect-metadata":"^0.1.13","@process-engine/ci_tools":"^3.2.0","@atlas-engine/eslint-config":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_domain.process_model_execution_2.3.14-alpha.1_1627037474052_0.16634894088777297","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-02-17T09:42:52.278Z","modified":"2026-05-20T11:36:47.749Z","0.4.0":"2020-02-17T09:42:52.658Z","0.4.1":"2020-02-18T14:07:39.424Z","0.4.2":"2020-02-19T10:35:06.986Z","0.4.3":"2020-02-20T13:42:00.691Z","0.4.4":"2020-02-24T14:35:37.833Z","0.4.5":"2020-02-27T12:48:07.250Z","0.4.6":"2020-02-27T12:59:40.146Z","0.4.7":"2020-02-27T14:55:41.854Z","0.4.8":"2020-02-27T15:12:51.528Z","0.4.9":"2020-02-27T19:06:08.831Z","0.4.10":"2020-03-02T12:25:06.565Z","0.4.11":"2020-03-05T08:53:17.827Z","0.4.11-alpha.1":"2020-03-06T11:42:46.376Z","0.4.12":"2020-03-09T15:58:16.156Z","0.4.13":"2020-03-10T15:43:23.670Z","0.4.14":"2020-03-11T08:38:29.568Z","0.4.14-feature-898b40-k7ndl2t5":"2020-03-11T13:45:20.806Z","0.4.14-feature-8a7854-k7ndzcan":"2020-03-11T13:56:29.213Z","0.4.14-feature-ab2d88-k7ne7mws":"2020-03-11T14:02:50.870Z","0.4.14-feature-2c6c4a-k7nfz0u7":"2020-03-11T14:52:11.160Z","0.4.14-feature-c72e09-k7ngptms":"2020-03-11T15:13:04.255Z","0.4.14-feature-77f1f9-k7nh9yf3":"2020-03-11T15:28:39.775Z","0.4.14-feature-0f2cfa-k7ni0qfq":"2020-03-11T15:49:32.523Z","0.4.14-feature-16daf0-k7nif527":"2020-03-11T16:00:42.954Z","0.4.14-feature-9af596-k7nkk9rw":"2020-03-11T17:00:40.554Z","0.4.14-feature-60630b-k7np0spz":"2020-03-11T19:05:30.620Z","0.4.14-feature-a8bf47-k7ohzcem":"2020-03-12T08:36:11.248Z","0.4.14-feature-362237-k7oimzg5":"2020-03-12T08:54:31.052Z","0.4.14-feature-480b3e-k7ol7cyt":"2020-03-12T10:06:24.121Z","0.4.14-feature-e65624-k7om4h5w":"2020-03-12T10:32:12.825Z","0.4.14-feature-671dd4-k7opa6av":"2020-03-12T12:00:34.588Z","0.4.14-feature-c61865-k7oqqsen":"2020-03-12T12:41:31.315Z","0.4.15":"2020-03-12T12:53:37.547Z","0.4.14-feature-2cc8cc-k7or6iew":"2020-03-12T12:53:43.578Z","0.4.14-feature-dda244-k7orqov0":"2020-03-12T13:09:25.486Z","0.4.16":"2020-03-12T13:19:14.540Z","0.4.16-feature-858f68-k7oshyi8":"2020-03-12T13:30:40.723Z","0.4.17":"2020-03-12T13:35:30.605Z","0.4.16-feature-e44157-k7otdc0a":"2020-03-12T13:55:02.870Z","0.4.17-feature-ce82e0-k7ox3qcu":"2020-03-12T15:39:32.607Z","0.4.17-feature-8e7511-k7oxi7fn":"2020-03-12T15:50:44.451Z","0.4.17-feature-3a3a71-k7pyvccn":"2020-03-13T09:16:44.036Z","0.4.17-feature-db08b6-k7pz5deo":"2020-03-13T09:24:32.197Z","0.4.17-feature-33e441-k7pzu44w":"2020-03-13T09:43:47.897Z","0.4.17-feature-3bf491-k7qdzrf1":"2020-03-13T16:20:10.358Z","0.4.17-feature-9b879b-k7ua2uaj":"2020-03-16T09:41:35.916Z","0.4.18":"2020-03-16T10:43:11.049Z","0.4.18-feature-6779e8-k7uhr71e":"2020-03-16T13:16:32.116Z","0.4.17-feature-c025f5-k7vlj1kt":"2020-03-17T07:49:53.445Z","0.4.17-feature-e98146-k7vpr4sl":"2020-03-17T09:48:09.731Z","0.4.17-feature-2d7bdb-k7vq5jkb":"2020-03-17T09:59:21.093Z","0.4.17-feature-bfb7f7-k7vqe1bv":"2020-03-17T10:05:52.512Z","0.4.17-feature-c981ac-k7vqvn4u":"2020-03-17T10:19:35.873Z","0.4.17-feature-44dd85-k7vs8t0a":"2020-03-17T10:57:52.081Z","0.4.17-feature-d2b16a-k7vs9bfh":"2020-03-17T10:58:11.524Z","0.4.17-feature-a23853-k7vs9lgg":"2020-03-17T10:58:26.947Z","0.4.17-feature-ee0970-k7vs9t0b":"2020-03-17T10:58:39.919Z","0.4.17-feature-08ac24-k7vscnpg":"2020-03-17T11:00:54.158Z","0.4.17-feature-f4b0a8-k7vu3pp3":"2020-03-17T11:49:54.486Z","0.4.17-feature-944dd9-k7vv3tf0":"2020-03-17T12:17:57.308Z","0.4.17-feature-f324cc-k7vwoh8i":"2020-03-17T13:01:59.006Z","0.4.17-feature-cfdd65-k7x1g0dl":"2020-03-18T08:03:14.179Z","0.4.18-alpha.1":"2020-03-18T08:57:27.387Z","0.4.17-feature-fe6436-k7x5v580":"2020-03-18T10:06:58.257Z","0.4.19":"2020-03-18T15:32:09.477Z","0.4.17-feature-efc50a-k7xih4z6":"2020-03-18T16:00:00.852Z","0.4.20-feature-16db9a-k7xjd94l":"2020-03-18T16:24:55.159Z","0.4.20-feature-9a0bc9-k7xk9akr":"2020-03-18T16:49:51.051Z","0.4.20-alpha.1":"2020-03-18T17:01:53.454Z","0.4.21-alpha.1":"2020-03-18T17:13:30.444Z","0.4.20-feature-48ac71-k7ygarc8":"2020-03-19T07:46:49.192Z","0.4.21-feature-9e1421-k7ykewyi":"2020-03-19T09:41:59.957Z","0.4.21-feature-30afa9-k7ym7jx4":"2020-03-19T10:32:13.286Z","0.4.21-feature-1f7a57-k7ypif51":"2020-03-19T12:04:40.368Z","0.4.21-feature-5c65b9-k7yrebmf":"2020-03-19T12:57:27.856Z","0.4.22-alpha.1":"2020-03-19T14:19:48.757Z","0.4.22-beta.1":"2020-03-19T18:41:14.876Z","1.0.0-alpha.8":"2020-03-23T09:47:04.915Z","1.0.0-alpha.9":"2020-03-26T09:04:41.671Z","1.0.0-alpha.10":"2020-03-26T15:39:49.750Z","1.0.0-alpha.11":"2020-03-27T16:33:38.629Z","1.0.0-beta.2":"2020-03-30T13:11:42.690Z","1.0.0-alpha.12":"2020-03-31T08:45:09.799Z","1.0.0-alpha.13":"2020-03-31T09:17:58.149Z","1.0.0-alpha.14":"2020-04-03T07:08:35.979Z","1.0.0-alpha.15":"2020-04-08T14:22:04.892Z","1.0.0-beta.3":"2020-04-08T14:25:22.585Z","1.0.0-feature-d221d5-k92u6uyc":"2020-04-16T14:06:28.759Z","1.0.0-feature-d221d5-k940b408":"2020-04-17T09:45:25.536Z","1.0.0-feature-9887ed-k949ajx6":"2020-04-17T13:57:02.093Z","1.0.0-feature-7eaab4-k94ah0x9":"2020-04-17T14:30:03.082Z","1.0.0-feature-69c1f7-k94anj5x":"2020-04-17T14:35:02.118Z","1.0.0-feature-97a8d9-k94bqlb3":"2020-04-17T15:05:28.714Z","1.0.0-feature-e13bc3-k94c9h2b":"2020-04-17T15:20:10.329Z","1.0.0-feature-317514-k94ct984":"2020-04-17T15:35:31.960Z","1.0.0-feature-2d4fd4-k94dd8dr":"2020-04-17T15:51:02.651Z","1.0.0-feature-452d30-k94duyvx":"2020-04-17T16:04:52.095Z","1.0.0-feature-d667d3-k94dxbt4":"2020-04-17T16:06:44.779Z","1.0.0-feature-9fe6a1-k94evmll":"2020-04-17T16:33:20.215Z","1.0.0-feature-ce4697-k988kx54":"2020-04-20T08:48:08.900Z","1.0.0-feature-cc2b87-k989byum":"2020-04-20T09:09:10.618Z","1.0.0-feature-24b9d6-k989mayu":"2020-04-20T09:17:16.565Z","1.0.0-feature-d4dc3b-k98awtzc":"2020-04-20T09:53:22.945Z","1.0.0-feature-a8832b-k98cufey":"2020-04-20T10:47:29.602Z","1.0.0-feature-7c678f-k98l86vl":"2020-04-20T14:42:08.177Z","1.0.0-feature-789b53-k98mtumr":"2020-04-20T15:27:02.266Z","1.0.0-feature-966c2b-k9901i39":"2020-04-20T21:36:59.687Z","1.0.0-feature-26d3d3-k99ivsbq":"2020-04-21T06:24:19.047Z","1.0.0-feature-3c76e9-k99kjxkq":"2020-04-21T07:11:03.906Z","1.0.0-feature-15454d-k99ozj3i":"2020-04-21T09:15:10.661Z","1.0.0-feature-a01bb3-k99p9dtm":"2020-04-21T09:22:50.187Z","1.0.0-feature-9f7611-k99sz3w0":"2020-04-21T11:06:52.317Z","1.0.0-alpha.16":"2020-04-21T11:26:58.730Z","1.0.0-feature-159ffb-k99wj4z4":"2020-04-21T12:46:22.742Z","1.0.0-feature-bc0bf2-k99y52yk":"2020-04-21T13:31:27.844Z","1.0.0-feature-3b046a-k99y5in5":"2020-04-21T13:31:48.104Z","1.0.0-alpha.17":"2020-04-21T13:36:26.392Z","1.0.0-feature-21267f-k99z3hsl":"2020-04-21T13:58:12.039Z","1.0.0-alpha.18":"2020-04-21T14:03:19.572Z","1.0.0-beta.4":"2020-04-21T16:42:12.660Z","1.0.0-alpha.19":"2020-04-22T07:06:35.067Z","1.0.0-alpha.20":"2020-04-22T09:59:35.247Z","1.0.0-beta.5":"2020-04-22T10:06:31.578Z","1.0.0-feature-0fa662-k9duxlip":"2020-04-24T07:12:46.985Z","1.0.0-feature-ababe2-k9dwkzid":"2020-04-24T07:58:54.354Z","1.0.0-feature-b7b933-k9e738xr":"2020-04-24T12:53:02.183Z","1.0.0-feature-1a59cd-k9e78vds":"2020-04-24T12:57:22.220Z","1.0.0-alpha.21":"2020-04-24T13:01:58.096Z","1.0.0-feature-d36f9c-k9ieevv8":"2020-04-27T11:29:07.907Z","1.0.0-feature-a7c5c3-k9iekidb":"2020-04-27T11:33:31.013Z","1.0.0-alpha.22":"2020-04-27T12:24:17.869Z","1.0.0-feature-8aa921-k9igojqa":"2020-04-27T12:32:39.400Z","1.0.0-alpha.23":"2020-04-28T08:02:42.272Z","1.0.0-beta.6":"2020-04-29T11:02:52.963Z","1.0.0-alpha.24":"2020-04-29T11:06:51.500Z","1.0.0-alpha.25":"2020-04-30T12:59:54.246Z","1.0.0-feature-d488f1-k9s7br9p":"2020-05-04T08:08:31.117Z","1.0.0-feature-5f9c13-k9s7rikh":"2020-05-04T08:20:40.845Z","1.0.0-feature-a6ae20-k9s8g4hy":"2020-05-04T08:39:47.612Z","1.0.0-feature-59719d-k9sgwbzf":"2020-05-04T12:36:23.707Z","1.0.0-feature-ac1add-k9sigujq":"2020-05-04T13:20:16.612Z","1.0.0-alpha.26":"2020-05-04T13:24:51.751Z","1.0.0-beta.7":"2020-05-06T06:52:55.821Z","1.0.0-alpha.27":"2020-05-06T06:57:27.013Z","1.0.0-beta.8":"2020-05-06T07:51:11.969Z","1.0.0-feature-81268a-k9ve35eo":"2020-05-06T13:40:59.225Z","1.0.0-feature-2837be-k9vf0v50":"2020-05-06T14:07:12.905Z","1.0.0-feature-b460ce-k9wjyova":"2020-05-07T09:13:18.586Z","1.0.0-feature-ecb352-k9wmcfw6":"2020-05-07T10:19:59.717Z","1.0.0-feature-69f04c-k9wnn0vd":"2020-05-07T10:56:11.558Z","1.0.0-feature-444932-k9wnskbx":"2020-05-07T11:00:30.773Z","1.0.0-feature-567fe8-k9wqy6u0":"2020-05-07T12:28:48.087Z","1.0.0-alpha.28":"2020-05-07T12:33:08.048Z","1.0.0-feature-180813-k9wr8dp2":"2020-05-07T12:36:45.341Z","1.0.0-alpha.29":"2020-05-07T13:10:51.706Z","1.0.0-feature-0c6236-k9wsrbu9":"2020-05-07T13:19:26.720Z","1.0.0-feature-284025-ka2do2fe":"2020-05-11T11:03:39.018Z","1.0.0-feature-9ea99f-ka3k5ze0":"2020-05-12T06:53:17.087Z","1.0.0-alpha.30":"2020-05-12T07:02:00.662Z","1.0.0-beta.9":"2020-05-13T07:18:45.673Z","1.0.0-alpha.31":"2020-05-13T07:19:07.192Z","1.0.0-feature-8e7284-ka82spyc":"2020-05-15T10:45:58.303Z","1.0.0-feature-614702-ka86pbgc":"2020-05-15T12:35:18.065Z","1.0.0-feature-f34000-ka87p8fh":"2020-05-15T13:03:12.517Z","1.0.0-feature-ddfa17-kac4xg1j":"2020-05-18T06:56:46.891Z","1.0.0-feature-e8735d-kac6vzg0":"2020-05-18T07:51:36.100Z","1.0.0-feature-04a553-kac85y89":"2020-05-18T08:27:16.488Z","1.0.0-feature-a1ce23-kac8ztvs":"2020-05-18T08:50:34.574Z","1.0.0-feature-7e6850-kaca7cna":"2020-05-18T09:24:25.810Z","1.0.0-feature-a92ce8-kacbw55b":"2020-05-18T10:11:40.251Z","1.0.0-feature-7e6850-kacc9xie":"2020-05-18T10:22:19.574Z","1.0.0-feature-1dcbce-kacd58ki":"2020-05-18T10:46:45.538Z","1.0.0-feature-7e6850-kaclpvoy":"2020-05-18T14:46:45.336Z","1.0.0-feature-0219c2-kacmlct1":"2020-05-18T15:11:15.219Z","1.0.0-feature-daab90-kadk8guf":"2020-05-19T06:52:55.829Z","1.0.0-feature-66b5e3-kadmwf2m":"2020-05-19T08:07:38.674Z","1.0.0-feature-3a1dcf-kadnc26c":"2020-05-19T08:19:49.971Z","1.0.0-feature-5fa9de-kado2n7b":"2020-05-19T08:40:25.656Z","1.0.0-feature-a42bfe-kadojp3p":"2020-05-19T08:53:39.492Z","1.0.0-feature-952a19-kadpz9ej":"2020-05-19T09:33:42.729Z","1.0.0-feature-97e4bf-kadqc8nd":"2020-05-19T09:43:51.719Z","1.0.0-feature-67ab3a-kadthwdk":"2020-05-19T11:12:15.866Z","1.0.0-feature-f07641-kaduhf3k":"2020-05-19T11:40:00.000Z","1.0.0-feature-fe3774-kadvf1tw":"2020-05-19T12:06:00.616Z","1.0.0-feature-43acde-kadxhm1n":"2020-05-19T13:03:58.246Z","1.0.0-feature-306014-kae2ulhj":"2020-05-19T15:34:01.809Z","1.0.0-feature-306014-kae2zt4y":"2020-05-19T15:38:09.040Z","1.0.0-feature-319d3d-kae75p4q":"2020-05-19T17:34:41.099Z","1.0.0-feature-6890a3-kaez0nnn":"2020-05-20T06:34:32.047Z","1.0.0-feature-189984-kaez1m3c":"2020-05-20T06:35:19.535Z","1.0.0-alpha.32":"2020-05-20T06:38:30.333Z","1.0.0-feature-690aed-kaezbb4d":"2020-05-20T06:42:52.503Z","1.0.0-feature-9c9b40-kaezp5pq":"2020-05-20T06:53:37.067Z","1.0.0-feature-314393-kaf007bk":"2020-05-20T07:02:13.562Z","1.0.0-feature-1949e9-kaf26faq":"2020-05-20T08:03:04.363Z","1.0.0-feature-314393-kaf2y6nh":"2020-05-20T08:24:37.852Z","1.0.0-feature-bc4d55-kaf3etyw":"2020-05-20T08:37:35.068Z","1.0.0-beta.10":"2020-05-20T08:44:04.503Z","1.0.0-alpha.33":"2020-05-20T08:49:25.015Z","1.0.0-feature-3d0ab0-kaf3w30z":"2020-05-20T08:51:01.693Z","1.0.0-feature-9e2d42-kaf4n8mb":"2020-05-20T09:12:07.736Z","1.0.0-feature-3db6e3-kaf5clos":"2020-05-20T09:31:47.763Z","1.0.0-feature-92179d-kaf5xm7d":"2020-05-20T09:48:05.343Z","1.0.0-feature-0aa06a-kaf6dm46":"2020-05-20T10:00:43.774Z","1.0.0-feature-c62987-kaf6f781":"2020-05-20T10:01:54.451Z","1.0.0-feature-8c4222-kafaxk6e":"2020-05-20T12:08:03.195Z","1.0.0-feature-7c130b-kafd35z6":"2020-05-20T13:08:24.683Z","1.0.0-feature-bbe6ea-kam4a7n3":"2020-05-25T06:36:22.757Z","1.0.0-feature-f62a89-kam4dw9z":"2020-05-25T06:39:16.665Z","1.0.0-feature-55e7e8-kam8mt9l":"2020-05-25T08:38:06.786Z","1.0.0-feature-ae4f62-kam9bi2g":"2020-05-25T08:57:22.482Z","1.0.0-feature-306915-kamaanvs":"2020-05-25T09:24:44.183Z","1.0.0-feature-de37dd-kamae79g":"2020-05-25T09:27:27.595Z","1.0.0-feature-192c81-kambdkjj":"2020-05-25T09:54:57.908Z","1.0.0-feature-38d76f-kamc9h3u":"2020-05-25T10:19:44.020Z","1.0.0-feature-9aa217-kamdzo6v":"2020-05-25T11:08:04.867Z","1.0.0-feature-14a080-kamffx5k":"2020-05-25T11:48:46.774Z","1.0.0-feature-9181d3-kamg9jrt":"2020-05-25T12:11:43.904Z","1.0.0-feature-46d0cb-kamhdg8m":"2020-05-25T12:42:47.461Z","1.0.0-feature-ad2f1b-kamii6nu":"2020-05-25T13:14:31.380Z","1.0.0-feature-251c7f-kammlgsq":"2020-05-25T15:08:58.561Z","1.0.0-alpha.34":"2020-05-25T15:13:01.599Z","1.0.0-alpha.35":"2020-05-26T08:36:32.765Z","1.0.0-feature-b70ead-kanuegaz":"2020-05-26T11:35:23.469Z","1.0.0-feature-2f512e-kanwni09":"2020-05-26T12:38:16.915Z","1.0.0-feature-8698ab-kanzy7w1":"2020-05-26T14:10:36.830Z","1.0.0-beta.11":"2020-05-27T06:47:01.588Z","1.0.0-feature-328af5-kap20tmg":"2020-05-27T07:56:21.303Z","1.0.0-feature-fd3972-kap3rgro":"2020-05-27T08:45:08.632Z","1.0.0-feature-e0c187-kaqjra6l":"2020-05-28T09:00:37.428Z","1.0.0-feature-d5305f-karw7qew":"2020-05-29T07:37:00.828Z","1.0.0-feature-ff064c-karyt2xo":"2020-05-29T08:49:42.182Z","1.0.0-alpha.36":"2020-05-29T08:53:32.180Z","1.0.0-alpha.37":"2020-06-02T08:40:58.512Z","1.0.0-feature-924632-kaxxghgu":"2020-06-02T12:58:31.275Z","1.0.0-feature-7c3c5d-kaxxk81q":"2020-06-02T13:01:26.973Z","1.0.0-feature-e9761b-kaxxzigv":"2020-06-02T13:13:20.085Z","1.0.0-feature-83d68a-kaxyc82w":"2020-06-02T13:23:13.492Z","1.0.0-alpha.38":"2020-06-02T13:36:06.923Z","1.0.0-alpha.39":"2020-06-02T16:10:05.086Z","1.0.0-feature-b8e5a7-kaz1xozu":"2020-06-03T07:51:42.742Z","1.0.0-beta.12":"2020-06-03T08:38:34.861Z","1.0.0-alpha.40":"2020-06-03T08:42:21.066Z","1.0.0-feature-29c70e-kaz67ssl":"2020-06-03T09:51:30.433Z","1.0.0-feature-24afdf-kaz6r3re":"2020-06-03T10:06:29.587Z","1.0.0-feature-4d06a2-kaz7hi4p":"2020-06-03T10:27:04.338Z","1.0.0-feature-50e9dc-kaz8pokc":"2020-06-03T11:01:26.772Z","1.0.0-feature-2b66f2-kazdjrnp":"2020-06-03T13:16:45.648Z","1.0.0-feature-51c3bb-kazdxtz4":"2020-06-03T13:27:42.126Z","1.0.0-alpha.41":"2020-06-03T13:34:35.727Z","1.0.0-feature-955dd4-kb0lgnur":"2020-06-04T09:46:02.142Z","1.0.0-feature-785b5c-kb0nv9zl":"2020-06-04T10:53:32.451Z","1.0.0-feature-b8ca28-kb0t38c6":"2020-06-04T13:19:38.163Z","1.0.0-feature-eeb34b-kb24zk9t":"2020-06-05T11:40:32.299Z","1.0.0-feature-270f6f-kb253pct":"2020-06-05T11:43:41.269Z","1.0.0-alpha.42":"2020-06-05T12:27:33.359Z","1.0.0-alpha.43":"2020-06-08T08:43:10.618Z","1.0.0-feature-e4e989-kb6j3cdy":"2020-06-08T13:26:26.809Z","1.0.0-alpha.44":"2020-06-08T13:46:41.835Z","1.0.0-beta.13":"2020-06-09T07:51:43.140Z","1.0.0-alpha.45":"2020-06-09T07:59:58.602Z","1.0.0-feature-77c8fb-kb7ya9to":"2020-06-09T13:19:27.211Z","1.0.0-feature-2715aa-kb80y2kf":"2020-06-09T14:33:51.219Z","1.0.0-feature-18917b-kb8ztkzn":"2020-06-10T06:50:12.668Z","1.0.0-feature-c0951d-kb90tj9x":"2020-06-10T07:18:06.762Z","1.0.0-feature-d9a584-kb97v9jm":"2020-06-10T10:35:30.155Z","1.0.0-feature-743b3e-kb997f8c":"2020-06-10T11:12:51.082Z","1.0.0-feature-4fe961-kb9euupn":"2020-06-10T13:51:05.118Z","1.0.0-feature-84f3bf-kb9evhny":"2020-06-10T13:51:39.605Z","1.0.0-alpha.46":"2020-06-10T13:54:58.953Z","1.0.0-alpha.47":"2020-06-15T06:30:01.770Z","1.0.0-beta.14":"2020-06-16T06:37:50.847Z","1.0.0-alpha.48":"2020-06-16T06:42:15.749Z","1.0.0-feature-bfb9dd-kbjbqhbi":"2020-06-17T12:21:22.296Z","1.0.0-feature-999a0a-kbjdjbfa":"2020-06-17T13:11:46.251Z","1.0.0-feature-1d1562-kbjgvhrc":"2020-06-17T14:45:23.370Z","1.0.0-feature-eb829d-kbkp7gia":"2020-06-18T11:26:16.255Z","1.0.0-feature-7fc3e1-kbkpqmdl":"2020-06-18T11:41:18.496Z","1.0.0-feature-e41905-kbktdfne":"2020-06-18T13:22:51.449Z","1.0.0-feature-52d2fb-kbkvx6po":"2020-06-18T14:34:18.266Z","1.0.0-feature-2b4d6a-kblz9864":"2020-06-19T08:55:24.098Z","1.0.0-feature-d3911f-kbq5xmwt":"2020-06-22T07:13:25.088Z","1.0.0-feature-14e9c9-kbq5z6hg":"2020-06-22T07:14:32.755Z","1.0.0-feature-aaa302-kbq6ik4f":"2020-06-22T07:29:35.578Z","1.0.0-alpha.49":"2020-06-22T10:44:48.930Z","1.0.0-beta.15":"2020-06-23T06:51:19.569Z","1.0.0-feature-902f6c-kbtckiwe":"2020-06-24T12:42:21.687Z","1.0.0-feature-e6431c-kbtd2vux":"2020-06-24T12:56:40.444Z","1.0.0-feature-5ec0fa-kbtf53qu":"2020-06-24T13:54:24.825Z","1.0.0-feature-1335e8-kbtg44dj":"2020-06-24T14:21:36.937Z","1.0.0-feature-a795ee-kbtgfn4o":"2020-06-24T14:30:36.545Z","1.0.0-feature-4c83d4-kbtgu5m5":"2020-06-24T14:41:51.875Z","1.0.0-feature-197307-kbtjjja5":"2020-06-24T15:57:33.230Z","1.0.0-feature-a5aea7-kbtjntju":"2020-06-24T16:00:55.748Z","1.0.0-feature-cd6c2c-kbtk87gt":"2020-06-24T16:16:53.592Z","1.0.0-feature-172dcc-kc07lrmp":"2020-06-29T07:57:47.302Z","1.0.0-feature-3de560-kc0846gt":"2020-06-29T08:12:03.981Z","1.0.0-feature-cfbf73-kc09wgt4":"2020-06-29T09:02:06.315Z","1.0.0-feature-776601-kc0gz6kb":"2020-06-29T12:20:09.624Z","1.0.0-feature-b591f3-kc0k57fv":"2020-06-29T13:48:50.564Z","1.0.0-feature-606513-kc0laf6o":"2020-06-29T14:20:56.784Z","1.0.0-feature-85846f-kc0lm092":"2020-06-29T14:29:53.134Z","1.0.0-feature-078632-kc1lz0o6":"2020-06-30T07:27:51.346Z","1.0.0-feature-bed27e-kc1nri4r":"2020-06-30T08:17:59.225Z","1.0.0-feature-b322a3-kc1rl992":"2020-06-30T10:05:04.131Z","1.0.0-feature-b89996-kc1xs4f2":"2020-06-30T12:58:17.308Z","1.0.0-feature-d17735-kc1zyyus":"2020-06-30T13:59:45.029Z","1.0.0-feature-d17735-kc20b90i":"2020-06-30T14:09:14.830Z","1.0.0-feature-4d8fa2-kc233fzx":"2020-06-30T15:27:06.991Z","1.0.0-feature-4d8fa2-kc23ahn8":"2020-06-30T15:32:37.987Z","1.0.0-feature-4d8fa2-kc23mfr4":"2020-06-30T15:41:54.974Z","1.0.0-feature-4d8fa2-kc23ui4e":"2020-06-30T15:48:04.957Z","1.0.0-feature-4d8fa2-kc240z7t":"2020-06-30T15:53:11.303Z","1.0.0-feature-4d8fa2-kc247mkc":"2020-06-30T15:58:20.440Z","1.0.0-feature-4d8fa2-kc33ro9i":"2020-07-01T08:33:48.888Z","1.0.0-feature-b89e88-kc34lmhz":"2020-07-01T08:57:02.262Z","1.0.0-feature-f79fc2-kc370jv4":"2020-07-01T10:04:37.364Z","1.0.0-feature-e0776c-kc3a2m4d":"2020-07-01T11:30:13.470Z","1.0.0-feature-e4b9ed-kc3ckudl":"2020-07-01T12:40:23.200Z","1.0.0-feature-79a4f9-kc3dc3wr":"2020-07-01T13:01:39.401Z","1.0.0-feature-111695-kc4hw2zq":"2020-07-02T07:56:53.383Z","1.0.0-feature-1e68a8-kc4im7fe":"2020-07-02T08:17:09.101Z","1.0.0-feature-818b70-kc4ljkkp":"2020-07-02T09:39:14.507Z","1.0.0-feature-bf530c-kc4obyay":"2020-07-02T10:57:07.604Z","1.0.0-alpha.50":"2020-07-02T11:02:21.888Z","1.0.0-feature-9d8d15-kc4p1jfd":"2020-07-02T11:17:04.040Z","1.0.0-feature-d2f9dc-kc4qv51f":"2020-07-02T12:08:06.366Z","1.0.0-feature-3c1f35-kc4u8eyk":"2020-07-02T13:42:17.580Z","1.0.0-feature-e1f786-kc5wacpr":"2020-07-03T07:27:38.480Z","1.0.0-alpha.51":"2020-07-03T07:32:04.555Z","1.0.0-feature-e3f0d7-kc5wowsu":"2020-07-03T07:38:57.370Z","1.0.0-feature-a3e2b5-kc5zemf6":"2020-07-03T08:54:57.507Z","1.0.0-feature-5b2c50-kc685bps":"2020-07-03T12:59:39.115Z","1.0.0-feature-0fbb60-kc69ol14":"2020-07-03T13:42:34.892Z","1.0.0-feature-5c88d1-kc6oml8s":"2020-07-03T20:40:57.811Z","1.0.0-feature-64cef1-kcac00tp":"2020-07-06T09:58:33.318Z","1.0.0-alpha.52":"2020-07-06T10:26:15.119Z","1.0.0-beta.16":"2020-07-08T07:53:48.740Z","1.0.0-alpha.53":"2020-07-08T07:57:13.251Z","1.0.0-feature-72ac9a-kcd3bd2a":"2020-07-08T08:18:43.536Z","1.0.0-feature-79c625-kcd468h6":"2020-07-08T08:42:46.100Z","1.0.0-feature-076f56-kcd8y8rz":"2020-07-08T10:56:28.963Z","1.0.0-feature-695eac-kcdgpp99":"2020-07-08T14:33:48.998Z","1.0.0-alpha.54":"2020-07-08T14:38:36.327Z","1.0.0-feature-fb15af-kcefn8ou":"2020-07-09T06:51:38.769Z","1.0.0-feature-b79128-kcfv8w3e":"2020-07-10T06:56:03.853Z","1.0.0-alpha.55":"2020-07-10T06:59:44.766Z","1.0.0-alpha.56":"2020-07-13T11:52:44.781Z","1.0.0-alpha.57":"2020-07-14T15:37:50.455Z","1.0.0-beta.17":"2020-07-15T07:21:12.611Z","1.0.0-alpha.58":"2020-07-15T07:25:04.880Z","1.0.0-feature-d1b538-kdg0waxk":"2020-08-04T14:14:01.210Z","1.0.0-feature-0eec92-kdh0uwvf":"2020-08-05T07:00:46.583Z","1.0.0-feature-1ecfc0-kdh1qwqt":"2020-08-05T07:25:44.043Z","1.0.0-feature-83b6e9-kdh2dl2u":"2020-08-05T07:43:11.638Z","1.0.0-feature-5e64a8-kdh30x33":"2020-08-05T08:01:25.412Z","1.0.0":"2020-08-05T08:39:47.768Z","1.0.0-feature-5936f6-kdhf6rn5":"2020-08-05T13:41:54.127Z","1.0.0-feature-a421c6-kdiqk9y6":"2020-08-06T11:48:09.665Z","1.0.0-feature-366f5a-kdir6xgt":"2020-08-06T12:05:44.834Z","1.0.0-feature-0d900b-kdivdmis":"2020-08-06T14:02:55.332Z","1.0.0-feature-302555-kdivya14":"2020-08-06T14:18:58.001Z","1.0.0-feature-8d5c43-kdiwec3z":"2020-08-06T14:31:24.629Z","1.1.0-feature-d6ab8a-kdjwnvea":"2020-08-07T07:26:43.371Z","1.1.0-alpha.1":"2020-08-07T07:37:05.172Z","1.1.0-feature-0ff095-kdoequmz":"2020-08-10T11:03:52.976Z","1.1.0-feature-cbce2b-kdof4sro":"2020-08-10T11:14:42.747Z","1.1.0-feature-897e20-kdojlqcd":"2020-08-10T13:19:52.810Z","1.1.0-feature-31c1bf-kdoneqwa":"2020-08-10T15:06:24.658Z","1.1.0-feature-f849a3-kdppvl29":"2020-08-11T09:03:22.792Z","1.1.0-feature-412c39-kdpr8d3o":"2020-08-11T09:41:07.884Z","1.1.0-feature-76221c-kdq1u3n1":"2020-08-11T14:38:02.988Z","1.1.0-feature-0bcffa-kdq6e7pd":"2020-08-11T16:45:43.148Z","1.1.0-beta.1":"2020-08-12T06:57:15.940Z","1.1.0-alpha.2":"2020-08-12T07:02:50.406Z","1.1.0-feature-5d7341-kdr1qx3v":"2020-08-12T07:23:22.385Z","1.1.0-feature-251f56-kdrci4qt":"2020-08-12T12:24:25.653Z","1.1.0-feature-cd8078-kdrdbmd3":"2020-08-12T12:47:27.660Z","1.1.0-feature-8323d2-kdrdl5p4":"2020-08-12T12:54:48.685Z","1.1.0-feature-bbf534-kdrk6x3h":"2020-08-12T15:59:38.729Z","1.1.0-feature-050ced-kdsszsdn":"2020-08-13T12:53:51.298Z","1.1.0-feature-ef4df0-kdst04vo":"2020-08-13T12:54:14.325Z","1.1.0-feature-581ef3-kdst1i7z":"2020-08-13T12:55:09.764Z","1.1.0-alpha.3":"2020-08-13T13:11:05.494Z","1.1.0-feature-56a94d-kdsu12xv":"2020-08-13T13:22:51.178Z","1.1.0-feature-649145-kdswdkwx":"2020-08-13T14:28:34.169Z","1.1.0-feature-23a361-kdsxmu3l":"2020-08-13T15:03:41.732Z","1.1.0-feature-3b5639-kdsz02ki":"2020-08-13T15:41:59.369Z","1.1.0-feature-16c6d8-kdt1zqva":"2020-08-13T17:05:58.707Z","1.1.0-feature-36cf35-kdt69g4y":"2020-08-13T19:05:18.239Z","1.1.0-feature-8cc2b0-kdt6e1x6":"2020-08-13T19:08:55.858Z","1.1.0-feature-74706f-kdt7vgeq":"2020-08-13T19:50:34.024Z","1.1.0-alpha.4":"2020-08-14T08:03:04.184Z","1.1.0-feature-0bb891-kdtyfybq":"2020-08-14T08:14:08.024Z","1.1.0-feature-9ab8b2-kdy5kfa2":"2020-08-17T06:44:42.369Z","1.1.0-feature-d9390a-kdy7fhgs":"2020-08-17T07:36:49.557Z","1.1.0-feature-6046e8-kdy8kbfn":"2020-08-17T08:08:31.832Z","1.1.0-feature-fa4e92-kdy93glh":"2020-08-17T08:23:25.288Z","1.1.0-feature-b2d5d2-kdy9u17n":"2020-08-17T08:44:05.671Z","1.1.0-feature-689566-kdya12by":"2020-08-17T08:49:36.383Z","1.1.0-feature-b87cd6-kdya70sq":"2020-08-17T08:54:09.464Z","1.1.0-feature-f6336d-kdyar4lj":"2020-08-17T09:09:49.190Z","1.1.0-feature-54977f-kdyaug3w":"2020-08-17T09:12:25.392Z","1.1.0-feature-99a7e6-kdycs06a":"2020-08-17T10:06:30.684Z","1.1.0-feature-f162bd-kdyerabr":"2020-08-17T11:01:54.916Z","1.1.0-feature-8c95ce-kdyf81iz":"2020-08-17T11:14:54.352Z","1.1.0-feature-f85ed8-kdyggfat":"2020-08-17T11:49:26.661Z","1.1.0-feature-17199b-kdzmihr2":"2020-08-18T07:26:54.852Z","1.1.0-feature-163c2d-kdztpfqu":"2020-08-18T10:48:09.305Z","1.1.0-feature-8f99f3-kdzu6jug":"2020-08-18T11:01:28.016Z","1.1.0-feature-3989e7-kdzvdu2z":"2020-08-18T11:35:06.967Z","1.1.0-feature-9da6ba-kdzw51iw":"2020-08-18T11:56:20.233Z","1.1.0-feature-64b0ce-kdzxko09":"2020-08-18T12:36:22.405Z","1.1.0-feature-0bdc2b-kdzxz5vj":"2020-08-18T12:47:42.413Z","1.1.0-feature-8571b7-ke01fu34":"2020-08-18T14:24:41.323Z","1.1.0-feature-73cae6-ke02c5kb":"2020-08-18T14:49:44.318Z","1.1.0-feature-e4a0e3-ke13r6gm":"2020-08-19T08:17:15.575Z","1.1.0-feature-41f66c-ke141eg4":"2020-08-19T08:25:11.575Z","1.1.0-alpha.5":"2020-08-19T08:31:01.856Z","1.1.0-feature-0758fa-ke15xfel":"2020-08-19T09:18:02.637Z","1.1.0-beta.2":"2020-08-19T09:26:42.182Z","1.1.0-alpha.6":"2020-08-19T09:32:20.183Z","1.1.0-feature-79a323-ke2hn8fr":"2020-08-20T07:33:52.218Z","1.1.0-feature-aca9ca-ke4ce0im":"2020-08-21T14:42:11.795Z","1.1.0-feature-1c9c47-ke86pvzq":"2020-08-24T07:14:29.824Z","1.1.0-alpha.7":"2020-08-24T07:19:03.637Z","1.1.0-feature-4293c8-ke8bcmm9":"2020-08-24T09:24:15.066Z","1.1.0-feature-b2fc18-ke8ehsbq":"2020-08-24T10:52:12.197Z","1.1.0-alpha.8":"2020-08-25T12:23:48.756Z","1.1.0-beta.3":"2020-08-26T07:11:52.987Z","1.1.0-alpha.9":"2020-08-26T07:24:21.511Z","1.1.0-feature-93229e-kedzd2bo":"2020-08-28T08:35:21.681Z","1.1.0-feature-d3e579-keifnlkw":"2020-08-31T11:22:27.923Z","1.1.0-feature-64b06e-keijj98a":"2020-08-31T13:11:03.668Z","1.1.0-feature-a613e6-keijxcos":"2020-08-31T13:21:58.840Z","1.1.0-feature-f96289-kejo3qb9":"2020-09-01T08:06:41.723Z","1.1.0-feature-de78db-kel3k77j":"2020-09-02T08:07:09.220Z","1.1.0":"2020-09-02T08:29:42.843Z","1.1.0-feature-67e027-kel6erea":"2020-09-02T09:26:57.386Z","1.1.0-feature-2371f6-kes6tikp":"2020-09-07T07:12:47.468Z","1.1.0-feature-77de2b-kes6uxwd":"2020-09-07T07:13:55.311Z","1.1.0-feature-7917b4-kes9ojgq":"2020-09-07T08:32:49.930Z","1.2.0-alpha.1":"2020-09-07T08:34:30.223Z","1.1.0-feature-d0791f-kescaswv":"2020-09-07T09:46:12.756Z","1.1.0-feature-5775c0-ketl0do8":"2020-09-08T06:37:51.037Z","1.1.0-feature-8b8bbf-ketl1prw":"2020-09-08T06:38:49.833Z","1.2.0-feature-2e1c42-kets064k":"2020-09-08T09:53:41.065Z","1.2.0-feature-6f4a42-ketyxeq8":"2020-09-08T13:07:21.564Z","1.2.0-alpha.2":"2020-09-08T13:10:05.920Z","1.2.0-feature-a175e9-keu2bwio":"2020-09-08T14:42:39.255Z","1.2.0-feature-34998a-kev0yaj7":"2020-09-09T06:51:48.773Z","1.2.0-feature-fd2b8c-kev86946":"2020-09-09T10:13:59.973Z","1.2.0-feature-53e65d-kevaukvs":"2020-09-09T11:28:53.021Z","1.2.0-feature-6e1c59-kevbohes":"2020-09-09T11:52:08.374Z","1.2.0-alpha.3":"2020-09-09T12:06:49.523Z","1.2.0-feature-e0e244-kevdh5cb":"2020-09-09T12:42:24.016Z","1.2.0-alpha.4":"2020-09-09T12:43:35.636Z","1.2.0-beta.1":"2020-09-09T14:06:57.166Z","1.2.0-alpha.5":"2020-09-09T14:07:11.594Z","1.2.0-feature-12d203-key0twn5":"2020-09-11T09:11:43.485Z","1.2.0-feature-c2019c-key0vmwq":"2020-09-11T09:13:04.172Z","1.2.0-feature-12d203-kf6vp26i":"2020-09-17T13:57:55.702Z","1.2.0-feature-d046f8-kf6vr552":"2020-09-17T13:59:34.932Z","1.2.0-feature-fc8c96-kf74tdlw":"2020-09-17T18:13:11.354Z","1.2.0-feature-35cf64-kf75w5z0":"2020-09-17T18:43:22.760Z","1.2.0-feature-35cf64-kf762pfd":"2020-09-17T18:48:31.058Z","1.2.0-feature-35cf64-kf76g0xi":"2020-09-17T18:58:48.538Z","1.2.0-feature-aefb9b-kf76zmaz":"2020-09-17T19:14:04.902Z","1.2.0-alpha.6":"2020-09-18T10:33:18.430Z","1.2.0-feature-93b007-kfcby693":"2020-09-21T09:31:45.817Z","1.2.0-feature-7efb76-kfcd9emj":"2020-09-21T10:08:32.184Z","1.2.0-feature-7efb76-kfcdfy3e":"2020-09-21T10:13:35.493Z","1.2.0-feature-849b5e-kfce0bnq":"2020-09-21T10:29:23.082Z","1.2.0-feature-b7df4e-kfcigvu3":"2020-09-21T12:34:15.032Z","1.2.0-feature-d8aaa4-kfcimuew":"2020-09-21T12:38:56.964Z","1.2.0-feature-9a6f5a-kfckt4i3":"2020-09-21T13:39:46.300Z","1.2.0-feature-2b5fa4-kfckwpkn":"2020-09-21T13:42:33.172Z","1.2.0-feature-9a6f5a-kfckzbfv":"2020-09-21T13:44:38.410Z","1.2.0-feature-9a6f5a-kfcl56pb":"2020-09-21T13:49:11.054Z","1.2.0-feature-2b5fa4-kfclm81n":"2020-09-21T14:02:26.285Z","1.2.0-feature-92c15b-kfe34q3i":"2020-09-22T15:00:27.790Z","1.2.0-feature-92c15b-kfe3chg6":"2020-09-22T15:06:31.003Z","1.2.0-feature-92c15b-kfeycnzs":"2020-09-23T05:34:28.130Z","1.2.0-feature-a74543-kff1i0eh":"2020-09-23T07:02:33.751Z","1.2.0-feature-808930-kff32r86":"2020-09-23T07:46:39.542Z","1.2.0-feature-5c6565-kff3or6r":"2020-09-23T08:03:49.799Z","1.2.0-feature-983620-kff8obru":"2020-09-23T10:23:25.822Z","1.2.0-feature-651911-kffl15qm":"2020-09-23T16:09:21.115Z","1.2.0-feature-c3c490-kffpd16x":"2020-09-23T18:10:31.353Z","1.2.0-feature-d14a84-kffsdx1g":"2020-09-23T19:35:16.507Z","1.2.0-feature-d14a84-kffsksxu":"2020-09-23T19:40:35.509Z","1.2.0-feature-faed71-kfgdmmuo":"2020-09-24T05:29:52.725Z","1.2.0-feature-e63def-kfgfe5ys":"2020-09-24T06:19:12.294Z","1.2.0-feature-e63def-kfgfl1ho":"2020-09-24T06:24:37.569Z","1.2.0-feature-25bb40-kfgl1icx":"2020-09-24T08:57:25.482Z","1.2.0-alpha.7":"2020-09-24T09:17:36.461Z","1.2.0-feature-994bf6-kfgo2vll":"2020-09-24T10:22:25.213Z","1.2.0-feature-52aa6c-kfgpnbsc":"2020-09-24T11:06:15.639Z","1.2.0-feature-2de0b6-kfgq37mh":"2020-09-24T11:18:44.992Z","1.2.0-feature-71a952-kfgsodne":"2020-09-24T12:31:06.067Z","1.2.0-alpha.8":"2020-09-24T13:26:46.423Z","1.2.0-feature-6724dd-kfguo9ot":"2020-09-24T13:27:24.935Z","1.2.0-beta.2":"2020-09-24T14:44:04.984Z","1.2.0-alpha.9":"2020-09-24T14:44:30.545Z","1.2.0-feature-2f7bd8-kfh1oqj8":"2020-09-24T16:43:18.070Z","1.2.0-feature-2f7bd8-kfh1v9m4":"2020-09-24T16:48:25.834Z","1.2.0-feature-2f7bd8-kfh2vl3h":"2020-09-24T17:16:37.401Z","1.2.0-feature-71a952-kfi09fzo":"2020-09-25T08:51:12.431Z","1.2.0-feature-71a952-kfi1hokm":"2020-09-25T09:25:36.374Z","1.2.0-feature-158471-kfi6dwsg":"2020-09-25T11:42:38.507Z","1.2.0-alpha.10":"2020-09-25T11:46:17.850Z","1.2.0-betafix-8d3f8a-kfo0t65y":"2020-09-29T13:53:12.199Z","1.2.0-betafix-200c9d-kfo14ab3":"2020-09-29T14:01:48.746Z","1.2.0-betafix-0b8bad-kfo16t4u":"2020-09-29T14:03:50.013Z","1.2.0-betafix-11a504-kfo1bv7u":"2020-09-29T14:07:42.907Z","1.2.0-feature-b6c044-kfo1dhse":"2020-09-29T14:08:57.234Z","1.2.0-alpha.11":"2020-09-29T14:12:53.850Z","1.2.0-feature-a33417-kfo1qy31":"2020-09-29T14:19:26.133Z","1.2.0-feature-b1a893-kfo1zqcz":"2020-09-29T14:26:14.683Z","1.2.0-beta.3":"2020-09-29T20:21:00.595Z","1.2.0-alpha.12":"2020-09-29T20:46:39.256Z","1.2.0-feature-34cea0-kfp1feti":"2020-09-30T06:58:12.645Z","1.2.0-feature-34cea0-kfp1kos8":"2020-09-30T07:02:19.700Z","1.2.0-feature-8a9af0-kfp1y4ah":"2020-09-30T07:12:46.365Z","1.3.0-feature-992e4c-kfp24wb9":"2020-09-30T07:17:58.774Z","1.3.0-alpha.1":"2020-09-30T07:22:00.194Z","1.3.0-feature-23c8ca-kfp44119":"2020-09-30T08:13:19.700Z","1.3.0-feature-837496-kfpf39l9":"2020-09-30T13:20:43.760Z","1.3.0-feature-a2d864-kfqjpzpg":"2020-10-01T08:18:13.647Z","1.3.0-alpha.2":"2020-10-01T09:09:15.651Z","1.3.0-feature-c46a66-kfqpabvh":"2020-10-01T10:53:55.700Z","1.3.0-feature-5471a4-kfqpv1k3":"2020-10-01T11:10:05.768Z","1.3.0-feature-37a4c0-kfqrtctu":"2020-10-01T12:04:43.557Z","1.3.0-feature-8ab30d-kfqvsyc0":"2020-10-01T13:56:23.753Z","1.3.0-feature-f3e1ac-kfr3eyx0":"2020-10-01T17:29:32.144Z","1.3.0-feature-d0560d-kfrykyzv":"2020-10-02T08:01:51.417Z","1.3.0-feature-37a4c0-kfs0mk5v":"2020-10-02T08:59:05.797Z","1.3.0-feature-a0cda1-kfs1sqwm":"2020-10-02T09:31:53.682Z","1.3.0-feature-f0ff39-kfs2j225":"2020-10-02T09:52:24.880Z","1.3.0-feature-c0f6b3-kfs3lawo":"2020-10-02T10:22:04.734Z","1.3.0-feature-b2fe8f-kfs5n7ve":"2020-10-02T11:19:36.625Z","1.3.0-feature-cb0dc6-kfs5nkdp":"2020-10-02T11:19:52.914Z","1.3.0-alpha.3":"2020-10-02T11:37:26.246Z","1.3.0-alpha.4":"2020-10-02T11:40:40.377Z","1.3.0-feature-dd8804-kfs6r40a":"2020-10-02T11:50:34.991Z","2.0.0-feature-174367-kfs9b83d":"2020-10-02T13:02:14.632Z","2.0.0-feature-2c71bf-kfsaef8d":"2020-10-02T13:32:43.414Z","2.0.0-feature-235482-kfsb04uz":"2020-10-02T13:49:34.274Z","2.0.0-alpha.1":"2020-10-02T13:55:10.772Z","2.0.0-feature-9ddb3b-kfscaysc":"2020-10-02T14:25:58.264Z","2.0.0-alpha.2":"2020-10-02T14:39:27.477Z","2.0.0-feature-3fa49e-kfw8wihq":"2020-10-05T08:01:54.995Z","2.0.0-alpha.3":"2020-10-05T08:12:37.809Z","2.0.0-feature-68835e-kfwbanq2":"2020-10-05T09:08:58.345Z","2.0.0-feature-5a1bf3-kfwbvg4c":"2020-10-05T09:24:59.693Z","2.0.0-feature-7a0185-kfwdyl9e":"2020-10-05T10:23:27.305Z","2.0.0-feature-acd313-kfwf46lc":"2020-10-05T10:55:47.319Z","2.0.0-feature-a3d3c9-kfwgdarw":"2020-10-05T11:30:53.297Z","2.0.0-feature-014eed-kfwli597":"2020-10-05T13:54:38.749Z","2.0.0-feature-52d78a-kfwmyy0r":"2020-10-05T14:35:45.934Z","2.0.0-feature-759040-kfwnqwty":"2020-10-05T14:57:25.504Z","2.0.0-feature-640292-kfwoke6f":"2020-10-05T15:20:20.973Z","2.0.0-feature-388846-kfxxuadw":"2020-10-06T12:27:45.869Z","2.0.0-feature-a8d98f-kfxyqcqr":"2020-10-06T12:52:39.099Z","2.0.0-feature-b2c1f0-kfxzzc6w":"2020-10-06T13:27:47.151Z","2.0.0-feature-15b001-kfy2j3xj":"2020-10-06T14:39:00.919Z","2.0.0-feature-5f4985-kfy6hjyw":"2020-10-06T16:29:55.312Z","2.0.0-feature-777d38-kfy9ak46":"2020-10-06T17:48:28.165Z","2.0.0-feature-4c9daa-kfy9uzzg":"2020-10-06T18:04:10.969Z","1.2.0-beta.4":"2020-10-07T10:33:40.524Z","1.2.0":"2020-10-07T10:33:54.486Z","2.0.0-alpha.4":"2020-10-07T10:38:08.394Z","2.0.0-feature-d9441e-kfz9zow5":"2020-10-07T10:55:42.721Z","2.0.0-feature-d9441e-kfzb8qwa":"2020-10-07T11:30:41.025Z","2.0.0-feature-4c4eeb-kfzfcdqy":"2020-10-07T13:25:29.236Z","2.0.0-beta.1":"2020-10-07T17:01:12.829Z","2.0.0-alpha.5":"2020-10-07T17:01:27.520Z","2.0.0-feature-4cc629-kg0li8kt":"2020-10-08T09:05:46.202Z","2.0.0-feature-d4d6f4-kg0p7i61":"2020-10-08T10:49:25.237Z","2.0.0-feature-a06933-kg0pf24m":"2020-10-08T10:55:16.729Z","2.0.0-feature-822758-kg0u8k0n":"2020-10-08T13:10:13.412Z","2.0.0-feature-1a6115-kg0x6nh7":"2020-10-08T14:32:39.954Z","2.0.0-feature-d06211-kg0xb2ra":"2020-10-08T14:36:08.369Z","2.0.0-feature-e61732-kg0xiqfq":"2020-10-08T14:42:08.910Z","2.0.0-feature-b38d4e-kg0ydvex":"2020-10-08T15:06:17.376Z","2.0.0-feature-38875b-kg0z8epo":"2020-10-08T15:29:59.186Z","2.0.0-alpha.6":"2020-10-08T15:36:46.178Z","2.0.0-alpha.7":"2020-10-08T17:08:00.206Z","2.0.0-alpha.8":"2020-10-09T07:37:15.343Z","2.0.0-feature-9ee11d-kg1yp4bz":"2020-10-09T08:02:50.509Z","2.0.0-feature-d4c18e-kg1yv637":"2020-10-09T08:07:30.786Z","2.0.0-feature-a1941a-kg1z2gu9":"2020-10-09T08:13:12.158Z","2.0.0-alpha.9":"2020-10-09T08:21:19.521Z","2.0.0-feature-273e61-kg238qt3":"2020-10-09T10:10:01.557Z","2.0.0-feature-89e09f-kg29oydy":"2020-10-09T13:10:31.731Z","2.0.0-feature-187706-kg2bg6r6":"2020-10-09T13:59:43.993Z","2.0.0-alpha.10":"2020-10-09T14:08:09.628Z","2.0.0-alpha.11":"2020-10-12T08:03:46.815Z","2.0.0-feature-5aa7c4-kg6sxi5a":"2020-10-12T17:20:13.483Z","2.0.0-feature-dc97e7-kg7phogy":"2020-10-13T08:31:41.485Z","2.0.0-feature-ffba49-kg8fzi9a":"2020-10-13T20:53:22.260Z","2.0.0-feature-b9242c-kg93nxuk":"2020-10-14T07:56:13.651Z","2.0.0-alpha.12":"2020-10-14T08:04:36.232Z","2.0.0-beta.2":"2020-10-14T11:26:26.915Z","2.0.0-alpha.14":"2020-10-14T11:26:43.903Z","2.0.0-feature-ac458a-kgewhj8q":"2020-10-18T09:21:54.271Z","2.0.0-feature-748871-kgf58wbd":"2020-10-18T13:27:06.368Z","2.0.0-feature-1390f5-kggeoygv":"2020-10-19T10:39:18.160Z","2.0.0-alpha.15":"2020-10-19T12:33:33.317Z","2.0.0-feature-147501-kggmplng":"2020-10-19T14:23:50.204Z","2.0.0-alpha.16":"2020-10-21T12:31:41.127Z","2.0.0-beta.3":"2020-10-21T12:31:48.349Z","2.0.0-feature-3f676f-kgksvqgq":"2020-10-22T12:27:35.867Z","2.0.0-feature-4399b8-kgkt4371":"2020-10-22T12:34:10.070Z","2.0.0-feature-ecd3c6-kgky0xk3":"2020-10-22T14:51:34.955Z","2.0.0-feature-27e920-kglxqnjz":"2020-10-23T07:31:22.298Z","2.0.0-feature-00515a-kgm0cxpi":"2020-10-23T08:44:41.257Z","2.0.0-feature-07ccae-kgm0w6pi":"2020-10-23T08:59:38.227Z","2.0.0-feature-5aa341-kgm1ffes":"2020-10-23T09:14:36.476Z","2.0.0-feature-51d11e-kgm1k3z4":"2020-10-23T09:18:16.791Z","2.0.0-alpha.17":"2020-10-23T09:29:40.096Z","2.0.0-alpha.18":"2020-10-23T13:49:14.465Z","2.0.0-alpha.19":"2020-10-23T14:19:11.820Z","2.0.0-feature-d35634-kgq9hqxh":"2020-10-26T08:11:25.936Z","2.0.0-feature-a3ba57-kgq9wkgp":"2020-10-26T08:22:55.001Z","2.0.0-feature-e1332a-kgqdav5g":"2020-10-26T09:58:05.359Z","2.0.0-feature-02eec2-kgqdsf9n":"2020-10-26T10:11:43.549Z","2.0.0-alpha.20":"2020-10-26T10:18:02.732Z","2.0.0-feature-7591ff-kgqemgig":"2020-10-26T10:35:05.428Z","2.0.0-feature-8b11d9-kgqesg31":"2020-10-26T10:39:44.536Z","2.0.0-feature-9f544c-kgqovqdt":"2020-10-26T15:22:13.713Z","2.0.0-feature-e8f5fa-kgqy5nt8":"2020-10-26T19:41:52.385Z","2.0.0-beta.4":"2020-10-28T09:14:24.509Z","2.0.0-alpha.21":"2020-10-28T09:18:50.938Z","2.0.0-feature-17a3b8-kgt7e7w1":"2020-10-28T09:36:08.321Z","2.0.0-feature-4d700f-kgt7n2ck":"2020-10-28T09:42:57.574Z","2.0.0-beta.5":"2020-10-28T09:58:51.030Z","2.0.0-alpha.22":"2020-10-28T10:03:27.342Z","2.0.0-feature-48daf2-kgt8pfka":"2020-10-28T10:12:46.231Z","2.0.0-feature-980694-kgt8pvsd":"2020-10-28T10:13:04.323Z","2.0.0-feature-e33b16-kguolqpw":"2020-10-29T10:25:31.241Z","2.0.0-feature-fac51c-kguux269":"2020-10-29T13:22:17.887Z","2.0.0-feature-317bd9-kgvbhnt7":"2020-10-29T21:06:14.376Z","2.0.0-feature-cbfde6-kgw0ltpj":"2020-10-30T08:49:22.089Z","2.0.0-feature-10b209-kgw2wj5g":"2020-10-30T09:53:35.450Z","2.0.0-feature-0166b3-kgzf7rq5":"2020-11-01T18:01:36.163Z","2.0.0-feature-8eed85-kh0b07am":"2020-11-02T08:51:41.406Z","2.0.0-alpha.23":"2020-11-02T08:55:28.144Z","2.0.0-feature-60feeb-kh0b7rsw":"2020-11-02T08:57:19.430Z","2.0.0-feature-ebcba6-kh0czu31":"2020-11-02T09:47:11.260Z","2.0.0-feature-4032d3-kh0i4qhr":"2020-11-02T12:10:57.961Z","2.0.0-feature-a0495c-kh0ivl7y":"2020-11-02T12:31:49.913Z","2.0.0-feature-d50d55-kh0j911t":"2020-11-02T12:42:17.726Z","2.0.0-feature-593dd6-kh0mrnuv":"2020-11-02T14:20:43.981Z","2.0.0-feature-76f8d8-kh1xvn1a":"2020-11-03T12:19:32.804Z","2.0.0-feature-1ed396-kh1y2ozt":"2020-11-03T12:25:06.380Z","2.0.0-feature-a53820-kh1ygnew":"2020-11-03T12:35:54.350Z","2.0.0-feature-35550b-kh1yxryr":"2020-11-03T12:49:16.895Z","2.0.0-feature-bd6dd9-kh1zpyzq":"2020-11-03T13:11:04.058Z","2.0.0-feature-c5bfc4-kh20p8zt":"2020-11-03T13:38:35.713Z","2.0.0-feature-885772-kh2110aw":"2020-11-03T13:47:44.414Z","2.0.0-feature-299f65-kh22w3co":"2020-11-03T14:39:57.730Z","2.0.0-alpha.24":"2020-11-03T14:46:18.762Z","2.0.0-feature-ade7c2-kh23rrqp":"2020-11-03T15:04:31.845Z","2.0.0-feature-231490-kh241vyt":"2020-11-03T15:12:22.237Z","2.0.0-feature-819a74-kh2427iy":"2020-11-03T15:12:47.134Z","2.0.0-feature-b2eddb-kh26woo5":"2020-11-03T16:32:19.174Z","2.0.0-feature-092ddd-kh2aqd8d":"2020-11-03T18:19:21.372Z","2.0.0-feature-56316e-kh2brewl":"2020-11-03T18:48:10.696Z","2.0.0-feature-1f419a-kh2d9kvs":"2020-11-03T19:30:17.981Z","2.0.0-feature-fa0fa3-kh2dcqzv":"2020-11-03T19:32:48.572Z","2.0.0-alpha.25":"2020-11-03T19:40:00.862Z","2.0.0-feature-c38be0-kh2enoqo":"2020-11-03T20:09:18.761Z","2.0.0-feature-8d30d9-kh2ev4jk":"2020-11-03T20:15:04.488Z","2.0.0-feature-a71877-kh2h7agg":"2020-11-03T21:20:29.466Z","2.0.0-feature-90b8b1-kh2hkpms":"2020-11-03T21:30:56.601Z","2.0.0-feature-560676-kh2jyfxs":"2020-11-03T22:37:35.329Z","2.0.0-feature-3228e2-kh2kxp37":"2020-11-03T23:05:00.333Z","2.0.0-feature-4aef2a-kh2lnmgf":"2020-11-03T23:25:07.004Z","2.0.0-feature-53a311-kh338q34":"2020-11-04T07:37:29.135Z","2.0.0-feature-6625d6-kh342s9b":"2020-11-04T08:00:51.151Z","2.0.0-feature-40c4eb-kh35mt62":"2020-11-04T08:44:22.162Z","2.0.0-feature-4687eb-kh3b7rli":"2020-11-04T11:20:39.842Z","2.0.0-feature-51675c-kh3g7th9":"2020-11-04T13:40:41.858Z","2.0.0-alpha.26":"2020-11-04T13:54:22.069Z","2.0.0-feature-7786f2-kh3h2xac":"2020-11-04T14:04:50.754Z","2.0.0-feature-3a98a2-kh3oo3oo":"2020-11-04T17:37:17.000Z","2.0.0-alpha.27":"2020-11-04T17:40:42.529Z","2.0.0-feature-bc6466-kh4m970i":"2020-11-05T09:17:29.617Z","2.0.0-feature-0b0511-kh4qbi2z":"2020-11-05T11:11:11.369Z","2.0.0-feature-34bf99-kh4vqom1":"2020-11-05T13:43:08.244Z","2.0.0-feature-60bd1a-kh4w6tx9":"2020-11-05T13:55:35.209Z","2.0.0-feature-61f303-kh4x9mz4":"2020-11-05T14:25:45.711Z","2.0.0-feature-5fe847-kh51xof7":"2020-11-05T16:36:26.133Z","2.0.0-alpha.28":"2020-11-05T16:43:18.647Z","2.0.0-feature-f6c857-kh55iwy0":"2020-11-05T18:16:54.737Z","2.0.0-feature-7e4a8b-kh55kgrz":"2020-11-05T18:18:10.348Z","2.0.0-alpha.29":"2020-11-06T07:18:11.256Z","2.0.0-beta.6":"2020-11-06T10:39:23.310Z","2.0.0-alpha.30":"2020-11-06T10:39:46.413Z","2.0.0-beta.7":"2020-11-06T12:12:14.378Z","2.0.0-alpha.31":"2020-11-06T12:16:58.748Z","2.0.0-feature-c26f2d-khaojjmm":"2020-11-09T15:08:07.240Z","2.0.0":"2020-11-11T10:28:06.492Z","2.0.0-alpha.32":"2020-11-11T10:28:43.926Z","2.0.1-beta.1":"2020-11-11T11:14:08.691Z","2.0.1-beta.2":"2020-11-11T11:21:45.585Z","2.0.1":"2020-11-11T11:21:51.715Z","2.0.1-alpha.1":"2020-11-11T11:22:07.058Z","2.0.2-beta.1":"2020-11-11T13:36:36.326Z","2.0.2":"2020-11-11T13:39:22.771Z","2.0.2-beta.2":"2020-11-11T13:44:25.283Z","2.0.2-alpha.1":"2020-11-11T13:45:20.992Z","2.0.2-feature-55dc94-khgcbhen":"2020-11-13T14:12:38.334Z","2.0.2-feature-eed40f-khkmevhr":"2020-11-16T14:06:12.586Z","2.0.2-feature-92e388-khkn0j42":"2020-11-16T14:23:04.265Z","2.0.2-feature-7e698c-khko172c":"2020-11-16T14:51:33.568Z","2.0.2-feature-131f56-khlsp90w":"2020-11-17T09:50:01.747Z","2.0.2-feature-35cb00-khlthn3w":"2020-11-17T10:12:05.870Z","2.0.2-feature-6bd21f-khlz0j8n":"2020-11-17T12:46:47.961Z","2.0.2-feature-e10344-khlz7a6b":"2020-11-17T12:52:00.489Z","2.0.2-feature-f57783-khn8p0ai":"2020-11-18T10:05:33.640Z","2.0.2-feature-3aa80f-khn8t5co":"2020-11-18T10:08:46.586Z","2.0.2-feature-b9c6ec-khub9e23":"2020-11-23T08:51:48.685Z","2.0.2-feature-2ca286-khudwhb0":"2020-11-23T10:05:41.734Z","2.0.2-feature-8520c8-khvpnv3l":"2020-11-24T08:22:39.612Z","2.0.2-feature-02c991-khw49qea":"2020-11-24T15:11:33.151Z","2.0.2-feature-d1a13c-khw72u1y":"2020-11-24T16:30:10.506Z","2.0.2-feature-685cf9-khwg262r":"2020-11-24T20:41:36.612Z","2.1.0-feature-a20699-khx629d3":"2020-11-25T08:49:29.822Z","2.1.0-alpha.1":"2020-11-25T08:54:08.394Z","2.1.0-feature-04fd4a-khx9ey7x":"2020-11-25T10:23:21.192Z","2.1.0-feature-3fe539-khxa1re7":"2020-11-25T10:41:06.035Z","2.1.0-beta.1":"2020-11-25T13:01:22.650Z","2.1.0-alpha.2":"2020-11-25T13:01:32.978Z","2.2.0-feature-4af71f-khyosimt":"2020-11-26T10:21:34.891Z","2.2.0-alpha.1":"2020-11-26T10:27:42.417Z","2.1.0-beta.2":"2020-11-26T11:00:12.379Z","2.1.0-feature-35ca37-khzy96uw":"2020-11-27T07:34:13.446Z","2.1.0-feature-fd1373-khzz8vnk":"2020-11-27T08:02:01.604Z","2.2.0-feature-ab3478-khzz93bq":"2020-11-27T08:02:08.626Z","2.2.0-feature-bdcf70-ki0147vf":"2020-11-27T08:54:22.761Z","2.2.0-feature-dfd73a-ki0280c5":"2020-11-27T09:25:17.571Z","2.2.0-feature-d9ba1d-ki4ani73":"2020-11-30T08:32:25.025Z","2.2.0-feature-42bce8-ki4dk0n7":"2020-11-30T09:53:38.901Z","2.2.0-feature-b05a93-ki4eicu3":"2020-11-30T10:20:21.490Z","2.2.0-feature-d6e5ef-ki4f7fs9":"2020-11-30T10:39:51.832Z","2.2.0-feature-60ad88-ki4l3k6d":"2020-11-30T13:24:57.439Z","2.2.0-feature-d04d5b-ki4ndx61":"2020-11-30T14:28:53.132Z","2.2.0-feature-205479-ki5q4twa":"2020-12-01T08:33:32.381Z","2.2.0-alpha.2":"2020-12-01T08:40:48.933Z","2.1.0":"2020-12-02T09:33:30.207Z","2.1.0-beta.3":"2020-12-02T09:38:54.097Z","2.2.0-alpha.3":"2020-12-02T09:46:43.033Z","2.2.0-feature-a9ca58-kieexwa1":"2020-12-07T10:30:05.383Z","2.2.0-beta.1":"2020-12-09T08:53:00.519Z","2.2.0-feature-759b1c-kih6xe0d":"2020-12-09T09:09:05.914Z","2.2.0-feature-c151c5-kih8e2h5":"2020-12-09T09:50:09.436Z","2.2.0-feature-7c6cd2-kih8km9j":"2020-12-09T09:55:11.000Z","2.2.0-feature-7e033e-kihbqlnq":"2020-12-09T11:23:43.250Z","2.2.0-feature-18f328-kiheffpo":"2020-12-09T12:39:07.934Z","2.2.0-feature-44d5c8-kihmniy0":"2020-12-09T16:29:21.637Z","2.2.0-feature-5ea88a-kij03abg":"2020-12-10T15:33:16.347Z","2.2.0-feature-65c5bd-kiobmyxk":"2020-12-14T08:55:22.667Z","2.2.0-feature-c5d580-kipl6x5z":"2020-12-15T06:10:33.240Z","2.2.0-feature-9a5bde-kiplrou9":"2020-12-15T06:26:43.628Z","2.2.0-feature-660800-kipqzkde":"2020-12-15T08:52:45.967Z","2.2.0-alpha.5":"2020-12-15T08:59:51.366Z","2.2.0-alpha.6":"2020-12-15T09:42:41.574Z","2.2.0-feature-e8f32b-kiq40c6g":"2020-12-15T14:57:24.119Z","2.2.0-feature-55f18f-kir60wfs":"2020-12-16T08:41:37.194Z","2.2.0-feature-8e0b5f-kir6w6kr":"2020-12-16T09:05:50.108Z","2.2.0-feature-1d823d-kir7e3xc":"2020-12-16T09:19:48.716Z","2.2.0-alpha.7":"2020-12-16T11:18:31.949Z","2.2.0-feature-eee963-kiri7chr":"2020-12-16T14:22:28.380Z","2.2.0-feature-b6077f-kirk5mkr":"2020-12-16T15:17:16.677Z","2.2.0-feature-33f873-kirspcrr":"2020-12-16T19:16:31.207Z","2.2.0-alpha.8":"2020-12-16T19:54:17.786Z","2.2.0-alpha.9":"2020-12-17T08:45:16.042Z","2.1.0-hotfix-a9f5c0-kisos47x":"2020-12-17T10:14:26.251Z","2.1.1":"2020-12-17T12:51:03.219Z","2.1.2":"2020-12-17T13:51:59.762Z","2.2.0-betafix-213ee6-kisx3ilf":"2020-12-17T14:07:08.298Z","2.2.0-alpha.10":"2020-12-17T14:21:51.212Z","2.2.0-beta.2":"2020-12-17T14:32:39.486Z","2.2.0-betafix-ec0ade-kisys07k":"2020-12-17T14:54:16.961Z","2.2.0-beta.3":"2020-12-17T15:56:30.474Z","2.2.0-alpha.11":"2020-12-17T16:08:22.958Z","2.2.0-feature-241ccc-kjik3nec":"2021-01-04T12:45:29.195Z","2.2.0-feature-3c1671-kjiou9ju":"2021-01-04T14:58:01.938Z","2.2.0-feature-508ed2-kjip1t04":"2021-01-04T15:03:58.782Z","2.2.0-feature-950c69-kjisbeky":"2021-01-04T16:35:24.831Z","2.2.0-feature-de6dbd-kjjpsmia":"2021-01-05T08:12:38.031Z","2.2.0-beta.4":"2021-01-05T08:45:26.836Z","2.2.0-alpha.12":"2021-01-05T08:45:53.910Z","2.2.0-beta.5":"2021-01-05T08:58:20.787Z","2.2.0":"2021-01-06T10:25:42.173Z","2.2.0-hotfix-f081ad-kjv9058e":"2021-01-13T09:55:43.602Z","2.2.0-hotfix-a7df53-kjvfpqf3":"2021-01-13T13:03:34.435Z","2.2.0-hotfix-ba0eda-kjvhlh18":"2021-01-13T13:56:25.525Z","2.2.0-hotfix-f3c53c-kjvi0mfx":"2021-01-13T14:08:09.446Z","2.2.0-hotfix-fdf983-kjvj2q47":"2021-01-13T14:37:41.836Z","2.2.0-hotfix-23d5b4-kjvlylbo":"2021-01-13T15:58:30.712Z","2.2.1-hotfix-f66a82-kjvqriqo":"2021-01-13T18:13:00.854Z","2.2.1-beta.1":"2021-01-13T18:24:42.805Z","2.2.1":"2021-01-13T18:35:17.210Z","2.2.1-feature-f096b7-kjx2wm7t":"2021-01-14T16:40:33.198Z","2.2.1-feature-9a9c4a-kjy27hor":"2021-01-15T09:08:49.408Z","2.2.1-feature-c2dec4-kk2rao5h":"2021-01-18T16:02:10.306Z","2.2.1-test-6ad9c8-kk3r5w5u":"2021-01-19T08:46:24.039Z","2.2.1-feature-c2dec4-kk3rrqn4":"2021-01-19T09:03:13.687Z","2.2.1-feature-c2dec4-kk3s5hrq":"2021-01-19T09:14:02.104Z","2.2.1-feature-c2dec4-kk3st928":"2021-01-19T09:32:39.122Z","2.2.1-feature-c2dec4-kk3vau1y":"2021-01-19T10:42:02.263Z","2.2.1-feature-64b84f-kk41b3t8":"2021-01-19T13:30:14.238Z","2.2.1-feature-38812a-kk42o9z3":"2021-01-19T14:08:31.027Z","2.2.1-feature-500c9f-kk579wye":"2021-01-20T09:05:02.980Z","2.2.2-feature-628f7f-kk5aavzl":"2021-01-20T10:29:57.302Z","2.2.2-alpha.1":"2021-01-20T10:54:33.574Z","2.2.2-feature-1498d9-kk5dxaxb":"2021-01-20T12:11:13.291Z","2.2.2-feature-c9f04e-kk5fuyji":"2021-01-20T13:05:20.254Z","2.2.2-beta.1":"2021-01-20T13:08:17.509Z","2.2.2-feature-c9f04e-kk5gazgt":"2021-01-20T13:17:54.681Z","2.2.2-feature-c9f04e-kk5gpzb5":"2021-01-20T13:29:31.437Z","2.2.2-feature-c9f04e-kk5hzpji":"2021-01-20T14:05:05.717Z","2.2.2-feature-c9f04e-kk5in1qj":"2021-01-20T14:23:15.666Z","2.2.2-feature-3a9f00-kk5iqtln":"2021-01-20T14:26:09.596Z","2.2.2-alpha.2":"2021-01-21T08:40:23.288Z","2.2.2-feature-219f53-kk6phfpt":"2021-01-21T10:22:31.954Z","2.3.0-feature-d4afbf-kk7c09fv":"2021-01-21T20:53:09.994Z","2.3.0-feature-1b3914-kk84h6b9":"2021-01-22T10:10:03.408Z","2.3.0-alpha.1":"2021-01-22T10:20:20.427Z","2.3.0-feature-1d2a95-kkciaese":"2021-01-25T11:47:47.529Z","2.3.0-feature-b70e61-kkco6kvt":"2021-01-25T14:32:48.434Z","2.3.0-feature-a08c7e-kkduwe5j":"2021-01-26T10:28:36.059Z","2.3.0-alpha.2":"2021-01-26T10:42:12.648Z","2.2.1-hotfix-20a616-kkfapvq2":"2021-01-27T10:39:21.746Z","2.3.0-feature-5f0bf0-kkmegzlk":"2021-02-01T09:58:37.724Z","2.3.0-feature-5e628a-kkmjqz7k":"2021-02-01T12:26:16.304Z","2.3.0-feature-04ea0b-kkmktfst":"2021-02-01T12:56:12.749Z","2.3.0-alpha.3":"2021-02-01T13:04:54.806Z","2.3.0-feature-243877-kkmm0etz":"2021-02-01T13:29:49.487Z","2.3.0-feature-79468e-kknqzce7":"2021-02-02T08:36:34.950Z","2.3.0-feature-e02de8-kknu8oi6":"2021-02-02T10:07:46.186Z","2.3.0-alpha.4":"2021-02-02T10:33:33.576Z","2.2.2-beta.2":"2021-02-02T13:17:56.454Z","2.2.2-beta.3":"2021-02-02T13:38:27.712Z","2.2.2-feature-fa3092-kks3da80":"2021-02-05T09:34:26.833Z","2.2.2-feature-39d7b0-kksamit9":"2021-02-05T12:57:33.518Z","2.2.2-feature-88f272-kktxbjpr":"2021-02-06T16:20:38.878Z","2.2.2-beta.4":"2021-02-06T16:36:51.439Z","2.3.0-alpha.5":"2021-02-06T16:49:48.611Z","2.3.0-feature-8c72a6-kkxrjdx9":"2021-02-09T08:49:47.621Z","2.3.0-feature-fa58ce-kky43uii":"2021-02-09T14:41:39.173Z","2.3.0-feature-1ca31a-kkzf7jp1":"2021-02-10T12:40:19.482Z","2.3.0-feature-d4a47d-kkzj9l3l":"2021-02-10T14:33:54.636Z","2.3.0-feature-6a4468-kkznm8h9":"2021-02-10T16:35:42.318Z","2.2.2":"2021-02-11T12:18:42.114Z","2.3.0-alpha.6":"2021-02-11T12:30:05.767Z","2.3.0-feature-ef065b-kl0vjvc5":"2021-02-11T13:05:39.988Z","2.3.0-feature-20d8f3-kl0xs14r":"2021-02-11T14:07:54.424Z","2.3.0-feature-73a579-kl10qcs2":"2021-02-11T15:30:34.045Z","2.3.0-alpha.7":"2021-02-11T15:41:44.456Z","2.3.0-feature-a7ebec-kl1bng55":"2021-02-11T20:36:10.516Z","2.3.0-feature-17a3c4-kl1bst3n":"2021-02-11T20:40:19.595Z","2.3.0-feature-26f711-kl2a2vbo":"2021-02-12T12:39:59.284Z","2.3.0-feature-e870fa-kl2du4dn":"2021-02-12T14:25:06.652Z","2.3.0-feature-b2c369-kl6d8si8":"2021-02-15T09:19:37.735Z","2.3.0-feature-da0582-kl6f9ekj":"2021-02-15T10:16:09.792Z","2.3.0-alpha.8":"2021-02-15T13:26:55.221Z","2.3.0-alpha.9":"2021-02-17T09:30:33.037Z","2.3.0-beta.1":"2021-02-17T09:30:41.908Z","2.3.0-feature-8172d7-kl9eynes":"2021-02-17T12:31:09.340Z","2.3.0-feature-bc789a-klapcruh":"2021-02-18T10:09:45.462Z","2.3.0-feature-36396a-klc51148":"2021-02-19T10:16:13.948Z","2.2.2-feature-dc27c2-klcbuigu":"2021-02-19T13:27:09.093Z","2.2.3-feature-102fe1-klccf6ic":"2021-02-19T13:43:15.392Z","2.3.0-feature-40cb9b-klce6pci":"2021-02-19T14:32:39.829Z","2.2.3-feature-8df4e0-klhopp9f":"2021-02-23T07:26:16.265Z","2.2.3-feature-8df4e0-klhtmn91":"2021-02-23T09:43:48.103Z","2.3.0-feature-89af8c-klhtob5z":"2021-02-23T09:45:06.372Z","2.2.3-feature-d2b9b2-klhujvp5":"2021-02-23T10:09:38.864Z","2.3.0-alpha.10":"2021-02-23T10:10:04.381Z","2.2.3-feature-ed764c-klhwlcn3":"2021-02-23T11:06:46.986Z","2.2.3-feature-6c8200-klkliel2":"2021-02-25T08:19:46.844Z","2.2.3":"2021-02-25T08:39:19.602Z","2.3.0-beta.2":"2021-02-25T09:23:59.735Z","2.3.0-alpha.11":"2021-02-25T12:31:31.275Z","2.3.0-alpha.12":"2021-02-25T16:19:40.782Z","2.3.0-beta.3":"2021-02-25T16:20:43.330Z","2.3.0-feature-e98ebe-kll2ozc2":"2021-02-25T16:20:56.032Z","2.3.0-feature-d60a6e-kll34d2e":"2021-02-25T16:32:48.052Z","2.3.0-feature-576c7d-klm3zieg":"2021-02-26T09:44:47.122Z","2.3.0-feature-04ead3-klm6gpvj":"2021-02-26T10:54:09.664Z","2.3.0-feature-4547fb-klmghu0q":"2021-02-26T15:34:56.169Z","2.3.0-feature-480eb6-klmi3w11":"2021-02-26T16:20:11.825Z","2.3.0-alpha.13":"2021-02-26T16:46:44.634Z","2.3.0-feature-b19c78-klt2woih":"2021-03-03T06:49:02.063Z","2.3.0-feature-49eb2a-klt3xtjw":"2021-03-03T07:17:48.824Z","2.3.0-feature-c1133a-klt4rzdq":"2021-03-03T07:41:21.245Z","2.3.0-alpha.14":"2021-03-03T10:46:42.262Z","2.3.0-feature-18210b-kltm4fpg":"2021-03-03T15:47:01.483Z","2.3.0-beta.4":"2021-03-04T08:40:39.977Z","2.3.0-alpha.15":"2021-03-04T08:49:30.165Z","2.3.0-feature-0870fa-klunh5fa":"2021-03-04T09:12:27.053Z","2.3.0-feature-270ebf-kluo0tj5":"2021-03-04T09:27:51.254Z","2.3.0-feature-3ba89c-klupwszd":"2021-03-04T10:20:48.395Z","2.3.0-feature-74a0fe-km1oa7ad":"2021-03-09T07:09:34.638Z","2.3.0-feature-d1f4a2-km1p5xsc":"2021-03-09T07:34:14.506Z","2.3.0-feature-7d2b5f-km1r0tj5":"2021-03-09T08:26:13.428Z","2.3.0-feature-511054-km29up3y":"2021-03-09T17:13:21.231Z","2.3.0-feature-05f553-km4noyhs":"2021-03-11T09:16:25.288Z","2.3.0-feature-99c927-km4w2hb4":"2021-03-11T13:10:49.029Z","2.3.0-feature-2b8e17-km521476":"2021-03-11T15:57:41.677Z","2.3.0-feature-99e6de-km53bhsb":"2021-03-11T16:33:45.606Z","2.3.0-feature-61a080-km53nno5":"2021-03-11T16:43:12.374Z","2.3.0-beta.5":"2021-03-11T16:53:09.629Z","2.3.0-alpha.16":"2021-03-11T17:06:15.877Z","2.3.0-beta.6":"2021-03-12T14:12:25.302Z","2.4.0-alpha.1":"2021-03-12T14:18:52.165Z","2.3.0":"2021-03-12T14:25:13.998Z","2.4.0-feature-af4107-kmasuvyi":"2021-03-15T16:27:32.728Z","2.3.0-hotfix-7751f9-kmc89w5d":"2021-03-16T16:26:55.922Z","2.3.0-hotfix-1e2327-kmd6qxgp":"2021-03-17T08:31:52.442Z","2.3.0-hotfix-eaf92f-kmd7zxv7":"2021-03-17T09:06:49.609Z","2.3.1-hotfix-4d058e-kmeoulvy":"2021-03-18T09:46:26.647Z","2.3.0-feature-2a9892-kmewbav0":"2021-03-18T13:15:20.966Z","2.3.0-feature-82bc0e-kmgbv7wg":"2021-03-19T13:18:29.544Z","2.3.0-feature-f07ccc-kmgcdqqa":"2021-03-19T13:32:54.617Z","2.3.1-hotfixes-a3ef68-kmgg0y5x":"2021-03-19T15:15:01.836Z","2.3.1-hotfix-cfe51b-kmgg1h79":"2021-03-19T15:15:22.205Z","2.3.1-hotfixes-31dbda-kmgida93":"2021-03-19T16:20:31.465Z","2.3.1-beta.1":"2021-03-19T16:20:59.006Z","2.3.1":"2021-03-19T16:30:57.858Z","2.4.0-feature-770417-kmkd9xph":"2021-03-22T09:09:08.333Z","2.4.0-feature-c631e4-kmkdo1gl":"2021-03-22T09:20:03.926Z","2.4.0-feature-ae0fb8-kmkkdafl":"2021-03-22T12:27:36.989Z","2.4.0-feature-e319e1-kmkmrqyz":"2021-03-22T13:34:49.827Z","2.3.1-feature-c2eb5d-kmkr96y5":"2021-03-22T15:40:21.094Z","2.3.1-hotfixes-759788-kmkrpht6":"2021-03-22T15:53:03.560Z","2.3.1-feature-fa99ed-kmltchiy":"2021-03-23T09:26:39.852Z","2.3.1-hotfixes-0f69f1-kmltxa2k":"2021-03-23T09:42:49.859Z","2.4.0-feature-36acd4-kmlux3wd":"2021-03-23T10:10:48.122Z","2.4.0-alpha.2":"2021-03-23T10:24:06.910Z","2.4.0-alpha.3":"2021-03-23T11:29:53.957Z","2.3.1-feature-f6b0b2-kmlytjga":"2021-03-23T11:59:58.359Z","2.3.1-feature-8e3447-kmm07kzf":"2021-03-23T12:38:50.960Z","2.3.1-hotfixes-090796-kmm1gx5f":"2021-03-23T13:14:03.776Z","2.4.0-feature-9b03ca-kmm4lpw0":"2021-03-23T14:41:56.195Z","2.4.0-feature-d9d5f3-kmm4zh49":"2021-03-23T14:52:34.088Z","2.3.1-hotfix-487b77-kmm5h2x9":"2021-03-23T15:06:10.719Z","2.3.1-hotfix-90f003-kmn9q79p":"2021-03-24T09:53:04.608Z","2.3.1-hotfix-5dd459-kmneo7ki":"2021-03-24T12:11:28.744Z","2.3.1-hotfix-367759-kmnk6e98":"2021-03-24T14:45:30.200Z","2.3.1-hotfix-80ad30-kmomi2zc":"2021-03-25T08:38:23.104Z","2.3.1-hotfixes-0b4ec6-kmomwpf5":"2021-03-25T08:49:48.662Z","2.3.1-hotfix-5acf00-kmopcsxp":"2021-03-25T09:58:21.705Z","2.3.1-hotfix-4cecf1-kmovqy9y":"2021-03-25T12:57:13.524Z","2.3.1-hotfix-186bb6-kmoyaujp":"2021-03-25T14:08:40.599Z","2.3.1-hotfix-10859b-kmpcpnlz":"2021-03-25T20:52:09.734Z","2.3.1-hotfix-79e478-kmq5ls5m":"2021-03-26T10:20:57.834Z","2.3.1-hotfix-843d8d-kmq7w4ji":"2021-03-26T11:25:00.581Z","2.3.1-hotfixes-dcf73e-kmqaccoe":"2021-03-26T12:33:33.578Z","2.3.1-hotfix-9bed67-kmqe3w98":"2021-03-26T14:18:59.737Z","2.3.1-hotfixes-325084-kmqeqxdo":"2021-03-26T14:36:53.663Z","2.4.0-feature-ad241c-kmw403zr":"2021-03-30T14:22:42.520Z","2.4.0-alpha.4":"2021-03-30T14:32:21.987Z","2.3.1-hotfix-a7c467-kmx8rap0":"2021-03-31T09:23:38.354Z","2.3.1-hotfix-49fde3-kmytabrr":"2021-04-01T11:46:00.742Z","2.3.1-hotfix-264426-kmz0coxb":"2021-04-01T15:03:48.537Z","2.3.1-hotfix-d4f08e-kmz134zq":"2021-04-01T15:24:24.886Z","2.3.1-hotfixes-c3d3a1-kmz2m70s":"2021-04-01T16:07:11.023Z","2.4.0-hotfixes-ffdba0-kmz517ma":"2021-04-01T17:14:55.430Z","2.3.2":"2021-04-01T18:46:20.578Z","2.3.2-hotfixes-d78237-kmz8mvp3":"2021-04-01T18:55:40.062Z","2.3.2-beta.1":"2021-04-01T19:01:48.282Z","2.3.2-alpha.1":"2021-04-01T19:11:08.359Z","2.3.3":"2021-04-06T07:46:19.920Z","2.3.3-beta.1":"2021-04-06T09:21:28.678Z","2.3.3-alpha.1":"2021-04-06T09:25:36.376Z","2.3.3-hotfix-3e8106-kn8v6vhw":"2021-04-08T12:36:58.374Z","2.3.3-hotfix-20ac53-kna3y4vq":"2021-04-09T09:29:53.318Z","2.3.3-feature-e3ca14-kng9uj1b":"2021-04-13T17:01:39.630Z","2.3.3-feature-d2fa41-kngat8l7":"2021-04-13T17:28:39.371Z","2.3.3-feature-53e62a-knhcwsyj":"2021-04-14T11:15:10.372Z","2.3.3-feature-ab1c49-knhikvyl":"2021-04-14T13:53:55.377Z","2.3.3-feature-cc08a0-knhq0eh6":"2021-04-14T17:21:49.535Z","2.3.3-feature-cf0f3c-knis0812":"2021-04-15T11:05:35.657Z","2.3.3-feature-552a81-kniw6zhb":"2021-04-15T13:02:43.979Z","2.3.3-feature-09c901-knj1ssrv":"2021-04-15T15:39:43.214Z","2.3.3-hotfix-b8e25c-knj83xld":"2021-04-15T18:36:21.124Z","2.3.3-hotfix-98f7f1-knjavkk3":"2021-04-15T19:53:51.157Z","2.3.3-feature-c12e38-knk0mxna":"2021-04-16T07:54:53.355Z","2.3.3-feature-a9ee53-knk2cc2m":"2021-04-16T08:42:39.280Z","2.3.3-feature-ba8392-knk7057a":"2021-04-16T10:53:04.829Z","2.3.3-feature-740c2a-knk7udnv":"2021-04-16T11:16:38.540Z","2.3.3-feature-f817af-knk9mr14":"2021-04-16T12:06:42.270Z","2.3.3-feature-5e9856-knkbqrjk":"2021-04-16T13:05:47.993Z","2.3.4-feature-b6965b-knkbwrxa":"2021-04-16T13:10:31.252Z","2.3.4-feature-29a2f7-knkcsejm":"2021-04-16T13:35:09.075Z","2.3.4-feature-698483-knkh6agz":"2021-04-16T15:37:52.311Z","2.3.3-hotfix-018145-knocd5m2":"2021-04-19T08:34:20.198Z","2.3.3-hotfix-b19ae2-knod4gil":"2021-04-19T08:55:34.863Z","2.3.3-hotfixes-c98abc-knodu15q":"2021-04-19T09:15:25.790Z","2.3.3-feature-5e9856-knoh1jhd":"2021-04-19T10:45:16.182Z","2.3.3-hotfix-3eaff9-knoptxgb":"2021-04-19T14:51:17.041Z","2.3.3-hotfixes-03887d-knoqbly6":"2021-04-19T15:04:58.989Z","2.3.4-feature-72d19d-knozhr0w":"2021-04-19T19:21:46.948Z","2.3.4-feature-957d70-knp587r0":"2021-04-19T22:02:16.991Z","2.3.3-feature-cbf35f-knptucie":"2021-04-20T09:31:20.698Z","2.3.3-feature-44b7e2-knpvtir9":"2021-04-20T10:26:40.264Z","2.3.4-feature-084fd4-knpxxngm":"2021-04-20T11:25:55.067Z","2.3.4-feature-66115a-knq2iefm":"2021-04-20T13:33:56.141Z","2.3.4-feature-3d554c-knq3pygp":"2021-04-20T14:07:54.538Z","2.3.4-hotfixes-2e21a1-knq44kf2":"2021-04-20T14:19:15.853Z","2.3.3-feature-f039c7-knq5edkj":"2021-04-20T14:54:52.748Z","2.3.4-hotfixes-34d701-knqb2mt3":"2021-04-20T17:33:40.496Z","2.3.4":"2021-04-20T19:32:47.390Z","2.3.4-beta.1":"2021-04-20T19:47:39.826Z","2.3.4-alpha.1":"2021-04-20T19:55:56.693Z","2.3.4-feature-5a8108-knr8szyy":"2021-04-21T09:17:59.712Z","2.3.4-feature-5541b0-knre5dus":"2021-04-21T11:47:33.425Z","2.3.4-feature-83fec3-knrebuqp":"2021-04-21T11:52:36.493Z","2.3.4-feature-8e3b88-knsx6xvd":"2021-04-22T13:28:26.245Z","2.3.4-feature-8ed7bc-knt2juqr":"2021-04-22T15:58:27.278Z","2.3.4-feature-f1a7cc-knu76i4p":"2021-04-23T10:55:46.335Z","2.3.4-feature-cf41dd-knu7dfws":"2021-04-23T11:01:09.745Z","2.3.4-feature-def294-knujh278":"2021-04-23T16:39:54.918Z","2.3.4-feature-37a23e-knukptk1":"2021-04-23T17:14:45.244Z","2.3.4-feature-8b6c84-knuob4o1":"2021-04-23T18:55:17.702Z","2.3.4-feature-64d4e2-knyd4zyl":"2021-04-26T08:53:39.291Z","2.3.4-feature-941dce-knydmrb9":"2021-04-26T09:07:31.693Z","2.3.4-feature-6c806e-knygsoxg":"2021-04-26T10:36:02.747Z","2.3.4-hotfixes-bd5123-knyhz2ot":"2021-04-26T11:09:04.192Z","2.3.4-feature-6342f8-knykwili":"2021-04-26T12:31:02.209Z","2.3.4-feature-fedc07-knyl9qsd":"2021-04-26T12:41:17.816Z","2.3.4-feature-55a3e7-knym2vby":"2021-04-26T13:03:57.236Z","2.3.4-hotfixes-388006-knymfi28":"2021-04-26T13:13:48.070Z","2.3.4-hotfix-ad40c7-knzsgn3s":"2021-04-27T08:50:21.576Z","2.3.4-hotfix-4d3bb6-knzy9130":"2021-04-27T11:32:26.871Z","2.3.4-feature-3c5805-ko067vwi":"2021-04-27T15:15:27.658Z","2.3.4-feature-7c4633-ko06pxss":"2021-04-27T15:29:33.342Z","2.3.4-feature-222dba-ko0b0jfl":"2021-04-27T17:29:42.480Z","2.3.4-hotfixes-91cbb1-ko0bfh1j":"2021-04-27T17:41:23.314Z","2.3.4-hotfix-1510b9-ko15k1wl":"2021-04-28T07:44:44.217Z","2.3.4-hotfix-89c9fe-ko16rdya":"2021-04-28T08:18:30.311Z","2.3.4-hotfixes-256b67-ko18xaj9":"2021-04-28T09:19:02.890Z","2.3.4-hotfix-290269-ko2mhmtl":"2021-04-29T08:26:30.555Z","2.3.4-hotfixes-1975ec-ko2oh5jy":"2021-04-29T09:22:02.630Z","2.3.4-hotfix-38c220-ko2wq54b":"2021-04-29T13:13:05.098Z","2.3.4-hotfixes-3c6e96-ko2zy2ur":"2021-04-29T14:43:08.888Z","2.3.4-hotfixes-3c6e96-ko30be39":"2021-04-29T14:53:30.105Z","2.3.5-beta.1":"2021-04-30T07:29:37.249Z","2.3.5-alpha.1":"2021-04-30T07:31:16.262Z","2.3.5-hotfixes-482330-ko407wg2":"2021-04-30T07:38:38.781Z","2.3.5":"2021-04-30T07:39:22.573Z","2.3.5-hotfix-981db3-ko9v2ztu":"2021-05-04T10:01:27.606Z","2.3.5-hotfix-743ed9-ko9xrig0":"2021-05-04T11:16:24.779Z","2.3.5-hotfix-fe9658-koa728a3":"2021-05-04T15:36:40.780Z","2.3.5-hotfix-eec2d2-kob5p0ji":"2021-05-05T07:46:19.976Z","2.3.5-hotfix-8b18ae-kob8gvo1":"2021-05-05T09:04:06.718Z","2.3.5-hotfix-3d6112-kob8m0ai":"2021-05-05T09:07:54.976Z","2.3.5-hotfix-f2706a-kob901jg":"2021-05-05T09:18:53.325Z","2.3.5-hotfixes-4ae375-kobbtkrb":"2021-05-05T10:37:50.068Z","2.3.5-hotfix-8e9553-kobgl9s4":"2021-05-05T12:51:20.363Z","2.3.5-hotfix-f31baa-kobk4el0":"2021-05-05T14:30:08.255Z","2.3.5-hotfix-0276a4-koblb1gh":"2021-05-05T15:03:20.291Z","2.3.5-hotfix-98cbb3-kobldrg9":"2021-05-05T15:05:28.481Z","2.3.5-hotfix-29a3cb-kobofyy1":"2021-05-05T16:31:09.166Z","2.3.5-hotfix-e29ce0-koclp8sa":"2021-05-06T08:02:11.747Z","2.3.5-hotfix-ee3573-kocmq1xt":"2021-05-06T08:30:46.597Z","2.3.5-hotfixes-9500e0-kocn7uly":"2021-05-06T08:44:36.897Z","2.3.5-hotfix-07a4ae-kocnofjc":"2021-05-06T08:57:28.373Z","2.3.5-hotfix-f6c9a6-kocs4wps":"2021-05-06T11:02:14.798Z","2.3.5-hotfix-ebbc72-kocv50y9":"2021-05-06T12:26:21.137Z","2.3.5-hotfix-269da2-kocy5ap5":"2021-05-06T13:50:33.333Z","2.3.5-hotfixes-fe6343-koczx13s":"2021-05-06T14:40:12.349Z","2.3.5-hotfix-668cb8-kod33so1":"2021-05-06T16:09:26.388Z","2.3.5-hotfix-944355-kod3w4qj":"2021-05-06T16:31:25.226Z","2.3.5-hotfixes-cf6478-kod55uhf":"2021-05-06T17:06:59.151Z","2.3.5-hotfix-6c3004-koe060o5":"2021-05-07T07:34:54.455Z","2.3.5-hotfix-6c3004-koe0a34u":"2021-05-07T07:38:05.900Z","2.3.5-hotfix-23b9eb-koe3dhbo":"2021-05-07T09:04:40.620Z","2.3.5-hotfix-1890a8-koe42o55":"2021-05-07T09:24:13.414Z","2.3.5-hotfix-28d47c-koejgm3p":"2021-05-07T16:34:55.444Z","2.3.5-hotfixes-a8c42a-koek2vq5":"2021-05-07T16:52:20.850Z","2.3.5-hotfix-6cbdb9-koic3gwq":"2021-05-10T08:19:53.402Z","2.3.5-hotfix-7dacc8-koicd2ys":"2021-05-10T08:27:16.857Z","2.3.5-hotfix-cfbeff-koidiuuo":"2021-05-10T08:59:49.890Z","2.3.5-hotfix-b24fbd-koif8jz1":"2021-05-10T09:47:52.128Z","2.3.5-hotfixes-848218-koifys24":"2021-05-10T10:08:15.319Z","2.3.5-hotfix-b7d285-koigwquq":"2021-05-10T10:34:37.338Z","2.3.5-hotfix-a36570-koigy3b1":"2021-05-10T10:35:40.794Z","2.3.5-hotfix-3e07e1-koiiw3l8":"2021-05-10T11:30:03.226Z","2.3.5-hotfix-54e6db-koij4907":"2021-05-10T11:36:22.381Z","2.3.5-hotfixes-2c9624-koik0o6l":"2021-05-10T12:01:39.120Z","2.3.5-hotfix-f29194-koio08go":"2021-05-10T13:53:16.261Z","2.3.5-hotfix-d12d86-koiskfb3":"2021-05-10T16:00:57.812Z","2.3.5-hotfix-a2a4b3-koitnehc":"2021-05-10T16:31:12.179Z","2.3.5-hotfix-59f9ba-koiuxu9o":"2021-05-10T17:07:30.086Z","2.3.5-hotfix-5f6028-koiwgsrf":"2021-05-10T17:50:09.147Z","2.3.5-hotfix-37d440-kojruivb":"2021-05-11T08:28:33.322Z","2.3.5-hotfix-1af77a-kojspd2z":"2021-05-11T08:52:39.590Z","2.3.5-hotfix-d7d623-kojsq2s0":"2021-05-11T08:53:06.763Z","2.3.5-hotfix-e26189-kojstnl6":"2021-05-11T08:55:58.608Z","2.3.5-hotfix-b3dd2c-kojtffcq":"2021-05-11T09:12:52.040Z","2.3.5-hotfix-8d2073-koju4jhm":"2021-05-11T09:32:18.335Z","2.3.5-hotfixes-af1c8a-koju53vy":"2021-05-11T09:32:44.424Z","2.3.5-hotfix-458bda-kok02alp":"2021-05-11T12:18:30.770Z","2.3.6-hotfixes-8b61c9-kok6n8bn":"2021-05-11T15:22:50.527Z","2.3.6-beta.1":"2021-05-11T15:24:25.393Z","2.3.6-alpha.1":"2021-05-11T15:25:03.379Z","2.3.6":"2021-05-11T15:39:25.895Z","2.3.6-hotfix-9f5324-kol3mqhj":"2021-05-12T06:46:14.588Z","2.3.7-hotfix-78c07a-kol3xijl":"2021-05-12T06:54:40.811Z","2.3.7":"2021-05-12T07:06:59.234Z","2.3.7-hotfixes-2d29c2-kol4e5ld":"2021-05-12T07:07:33.955Z","2.3.7-beta.1":"2021-05-12T07:07:43.380Z","2.3.7-alpha.1":"2021-05-12T07:08:18.384Z","2.3.7-hotfix-eb827c-kolbx157":"2021-05-12T10:38:17.045Z","2.3.7-hotfix-951eaf-kolg6ofd":"2021-05-12T12:37:39.575Z","2.3.7-hotfix-9ebdac-kolgwpab":"2021-05-12T12:57:48.234Z","2.3.7-hotfix-282941-kolhlf64":"2021-05-12T13:17:06.355Z","2.3.8":"2021-05-12T14:59:08.231Z","2.3.8-beta.1":"2021-05-12T15:12:05.312Z","2.3.8-alpha.1":"2021-05-12T15:12:20.037Z","2.3.8-hotfix-f225a3-kosa87lf":"2021-05-17T07:25:12.976Z","2.3.8-hotfix-a20ab2-koslo3b2":"2021-05-17T12:45:27.451Z","2.3.8-hotfix-300e09-kotr4v2h":"2021-05-18T08:06:15.648Z","2.3.8-hotfix-5a3586-kotr87q3":"2021-05-18T08:08:53.258Z","2.3.8-hotfix-29dbd1-kottuubh":"2021-05-18T09:22:31.304Z","2.3.8-hotfix-5bca41-kottzutq":"2021-05-18T09:26:24.534Z","2.3.8-hotfix-4b91c0-kou5gu2k":"2021-05-18T14:47:33.144Z","2.3.8-hotfix-3944cb-kou86pkl":"2021-05-18T16:03:35.911Z","2.3.8-hotfix-426feb-koud8l2s":"2021-05-18T18:25:08.072Z","2.3.8-hotfix-94ae3b-kouffviv":"2021-05-18T19:26:40.540Z","2.3.8-hotfix-05844c-koug338h":"2021-05-18T19:44:43.514Z","2.3.8-hotfix-0b6e86-kov73k77":"2021-05-19T08:21:00.434Z","2.3.8-hotfixes-60341e-kov7jusi":"2021-05-19T08:33:34.926Z","2.3.8-hotfix-507462-kov90cbw":"2021-05-19T09:14:24.837Z","2.3.8-hotfixes-48e846-kov9fljd":"2021-05-19T09:26:21.965Z","2.3.9-hotfixes-b90e73-kovk6f3r":"2021-05-19T14:27:03.811Z","2.3.9-alpha.1":"2021-05-19T14:27:24.323Z","2.3.9-beta.1":"2021-05-19T14:28:26.863Z","2.3.9":"2021-05-19T14:52:08.001Z","2.3.10-hotfix-2197a2-kox1zok4":"2021-05-20T15:33:33.538Z","2.3.10-hotfix-0d2fde-kox382q0":"2021-05-20T16:08:02.405Z","2.3.10-hotfix-745ea4-koy1hw6h":"2021-05-21T08:07:30.164Z","2.3.10-beta.1":"2021-05-21T08:25:09.167Z","2.3.10":"2021-05-21T08:26:14.506Z","2.3.10-alpha.1":"2021-05-21T08:27:08.452Z","2.3.10-hotfixes-f6945f-koy3a8f8":"2021-05-21T08:57:26.217Z","2.3.10-feature-881537-kp08gavn":"2021-05-22T20:57:44.567Z","2.3.10-feature-743734-kp19rwpb":"2021-05-23T14:22:27.331Z","2.3.11-feature-57bfcb-kp44rw1z":"2021-05-25T14:25:53.122Z","2.3.11-feature-b2a8ca-kp70bhwc":"2021-05-27T14:44:21.360Z","2.3.11-feature-466938-kp8esseu":"2021-05-28T14:17:29.842Z","2.3.10-hotfix-6fecf0-kpduzlkd":"2021-06-01T09:49:31.660Z","2.3.10-hotfix-91b7b6-kpdwp3yf":"2021-06-01T10:37:25.662Z","2.3.10-hotfix-a5afa2-kpdxnohg":"2021-06-01T11:04:14.575Z","2.3.10-hotfix-39a696-kpe0p3fq":"2021-06-01T12:29:18.096Z","2.3.10-hotfix-0cc1f0-kpe1qqg1":"2021-06-01T12:58:39.298Z","2.3.11-feature-3f935d-kpe45qre":"2021-06-01T14:06:15.894Z","2.3.10-hotfix-a5b1ac-kpe8sf44":"2021-06-01T16:15:53.110Z","2.3.10-hotfix-685c34-kpf3ocjd":"2021-06-02T06:40:34.249Z","2.3.10-hotfix-ffefed-kpf4b58j":"2021-06-02T06:58:18.875Z","2.3.10-hotfix-f97eb0-kpfaarj5":"2021-06-02T09:45:55.468Z","2.3.10-hotfix-b3d2a3-kpfbsaii":"2021-06-02T10:27:35.982Z","2.3.10-hotfix-ade7f8-kpflx8zk":"2021-06-02T15:11:18.266Z","2.3.10-hotfixes-862907-kpflzkx8":"2021-06-02T15:13:13.432Z","2.3.11":"2021-06-02T15:43:55.140Z","2.3.11-alpha.1":"2021-06-02T15:44:06.694Z","2.3.11-beta.1":"2021-06-02T15:44:35.232Z","2.3.11-hotfixes-5f81d6-kpfn4q8u":"2021-06-02T15:45:09.559Z","2.3.12-hotfix-cd3318-kpiavm3n":"2021-06-04T12:25:31.491Z","2.3.12-hotfix-f3de22-kpidc9lu":"2021-06-04T13:34:24.592Z","2.3.12-hotfix-b2e0ef-kpieen3s":"2021-06-04T14:04:09.086Z","2.3.11-hotfix-e42edf-kpme7vj3":"2021-06-07T09:10:08.710Z","2.3.11-hotfix-d373cc-kpmg812v":"2021-06-07T10:06:06.936Z","2.3.11-hotfix-3c16e4-kpmkviw3":"2021-06-07T12:16:25.598Z","2.3.12-hotfix-dcc0c6-kpmlm5ff":"2021-06-07T12:37:08.057Z","2.3.12-hotfix-0f92fd-kpmmzgtw":"2021-06-07T13:15:25.571Z","2.3.12-hotfix-b04eb0-kpmn1vt6":"2021-06-07T13:17:16.748Z","2.3.12-hotfix-703755-kpmn5rm2":"2021-06-07T13:20:24.420Z","2.3.11-hotfix-a5762e-kpmp0jh0":"2021-06-07T14:12:15.259Z","2.3.12-hotfix-c8b888-kpmpro7y":"2021-06-07T14:33:19.300Z","2.3.12":"2021-06-07T15:03:19.998Z","2.3.12-alpha.1":"2021-06-07T15:03:26.775Z","2.3.12-beta.1":"2021-06-07T15:03:55.572Z","2.3.12-hotfix-baf001-kpnoi0tx":"2021-06-08T06:45:39.926Z","2.3.12-hotfixes-d95a1e-kpnoxmft":"2021-06-08T06:57:47.250Z","2.3.12-hotfix-f55735-kpnqk91u":"2021-06-08T07:43:21.510Z","2.3.12-hotfixes-129f9a-kpnr27yr":"2021-06-08T07:57:19.959Z","2.3.12-hotfix-0d197d-kpnsy75z":"2021-06-08T08:50:17.463Z","2.3.12-hotfixes-604415-kpntt4ww":"2021-06-08T09:14:16.379Z","2.3.12-hotfix-5cc5c0-kpo2uyd4":"2021-06-08T13:27:34.329Z","2.3.12-hotfix-871ebd-kpphalt3":"2021-06-09T12:59:24.750Z","2.3.12-hotfix-146de4-kppkktl0":"2021-06-09T14:31:18.972Z","2.3.12-hotfix-6e7b2b-kpqt7m8m":"2021-06-10T11:20:47.261Z","2.3.12-hotfix-c7d7a0-kpqvtwea":"2021-06-10T12:34:13.675Z","2.3.12-hotfix-076bd1-kpqy3956":"2021-06-10T13:37:25.631Z","2.3.12-hotfix-0954c0-kpqyxtz0":"2021-06-10T14:01:11.592Z","2.3.12-hotfix-1d0429-kpqzelg8":"2021-06-10T14:14:11.804Z","2.3.12-hotfix-a302b1-kpqzgv93":"2021-06-10T14:16:02.437Z","2.3.12-hotfix-b250a6-kpqzpe7i":"2021-06-10T14:22:37.758Z","2.3.12-hotfix-b376b3-kpr027gj":"2021-06-10T14:32:35.855Z","2.3.12-hotfix-8575b5-kpr0nw14":"2021-06-10T14:49:23.506Z","2.3.12-hotfix-0c3c04-kpr0u1vm":"2021-06-10T14:54:16.855Z","2.3.12-hotfix-12353e-kpr1j7hy":"2021-06-10T15:13:47.683Z","2.3.12-hotfix-b83988-kpr2s1u3":"2021-06-10T15:48:38.109Z","2.3.12-hotfix-d43abb-kpxreo4b":"2021-06-15T08:04:44.519Z","2.3.12-hotfix-833ad6-kpxxw4dz":"2021-06-15T11:06:17.309Z","2.3.12-hotfix-82eefc-kpzifw60":"2021-06-16T13:29:16.935Z","2.3.12-hotfixes-26c0bc-kpzj1m2q":"2021-06-16T13:46:04.876Z","2.3.12-hotfix-23c8e2-kq0lfxvb":"2021-06-17T07:41:00.233Z","2.3.12-hotfix-62f115-kq0mb3ny":"2021-06-17T08:05:13.953Z","2.3.12-hotfix-b50e72-kq0o39rd":"2021-06-17T08:55:09.131Z","2.3.12-hotfix-0844eb-kq0o4lt7":"2021-06-17T08:56:14.210Z","2.3.12-hotfix-776fde-kq0o73ca":"2021-06-17T08:58:11.243Z","2.3.12-hotfix-62f115-kq0oeql7":"2021-06-17T09:04:05.207Z","2.3.12-hotfixes-2947f6-kq0p2cj4":"2021-06-17T09:22:27.046Z","2.3.12-hotfixes-79c37a-kq0pbzwj":"2021-06-17T09:30:01.396Z","2.3.12-hotfix-fff322-kq0pe2oq":"2021-06-17T09:31:34.178Z","2.3.12-alpha.2":"2021-06-17T09:32:02.281Z","2.3.12-hotfix-35aff6-kq12tl8s":"2021-06-17T15:47:30.058Z","2.3.12-hotfix-a09e37-kq24b985":"2021-06-18T09:17:05.507Z","2.3.12-hotfix-7ccfb1-kq27z59c":"2021-06-18T10:59:33.969Z","2.3.12-hotfix-a8bcff-kqc28rq9":"2021-06-25T08:16:54.341Z","2.3.12-hotfixes-55bcc9-kqc305xk":"2021-06-25T08:38:10.409Z","2.3.12-hotfix-e26afb-kqc334cv":"2021-06-25T08:40:23.483Z","2.3.12-hotfix-3fab50-kqhqwvvk":"2021-06-29T07:46:16.542Z","2.3.12-hotfixes-60ad1a-kqhw091u":"2021-06-29T10:08:57.317Z","2.3.12-hotfixes-0c5bd0-kqi1if4d":"2021-06-29T12:42:59.704Z","2.3.12-hotfix-e2b667-kqi3j5fd":"2021-06-29T13:39:31.353Z","2.3.12-hotfix-b9fa3e-kqi4spu2":"2021-06-29T14:15:10.304Z","2.3.12-hotfix-1e3692-kqi5p4qc":"2021-06-29T14:40:07.724Z","2.3.12-hotfixes-11510f-kqjkn62l":"2021-06-30T14:26:16.721Z","2.3.12-hotfixes-88d942-kqjl72r2":"2021-06-30T14:41:42.754Z","2.3.12-hotfix-93312c-kqjl7aho":"2021-06-30T14:41:56.228Z","2.3.12-hotfix-93312c-kqjpsm3j":"2021-06-30T16:50:29.650Z","2.3.12-hotfixes-1a04a3-kqklxven":"2021-07-01T07:50:21.230Z","2.3.13":"2021-07-01T11:51:07.179Z","2.3.13-hotfix-2fc3f7-kqqdjqxf":"2021-07-05T08:42:05.566Z","2.3.13-hotfix-5a385c-kqrtmhus":"2021-07-06T08:59:53.897Z","2.3.13-hotfix-ecfb9b-kqrtsc6h":"2021-07-06T09:04:29.041Z","2.3.13-hotfix-dd97b0-kqrxc623":"2021-07-06T10:43:49.390Z","2.3.13-hotfix-102a4a-kqrykw0d":"2021-07-06T11:18:37.286Z","2.3.13-hotfix-ecfb9b-kqs088m7":"2021-07-06T12:04:45.380Z","2.3.13-hotfix-674af0-kqs1a6gy":"2021-07-06T12:34:13.639Z","2.3.13-hotfix-55d3e0-kqs2rc7w":"2021-07-06T13:15:33.964Z","2.3.13-hotfix-2a983a-kr0gspj6":"2021-07-12T10:10:41.431Z","2.3.13-hotfix-f29ec4-kr1tzktu":"2021-07-13T09:07:47.990Z","2.3.13-hotfixes-c5926c-kr1uiktg":"2021-07-13T09:22:34.134Z","2.3.13-hotfixes-79a854-kr3aohej":"2021-07-14T09:42:43.597Z","2.3.13-hotfix-357e67-krbq04rq":"2021-07-20T07:13:53.956Z","2.3.13-hotfixes-384f43-krbw28ux":"2021-07-20T10:03:34.214Z","2.3.13-hotfix-67a6d5-krc0rvd6":"2021-07-20T12:15:28.722Z","2.3.13-hotfix-477e29-kreziko7":"2021-07-22T14:03:27.803Z","2.3.13-hotfix-290644-krezqdw6":"2021-07-22T14:09:41.933Z","2.3.13-hotfixes-914ef8-krf0etua":"2021-07-22T14:28:36.620Z","2.3.13-hotfix-0961d4-krfzau70":"2021-07-23T06:45:16.799Z","2.3.13-beta.1":"2021-07-23T07:01:05.529Z","2.3.13-hotfixes-afb5d0-krfzy05t":"2021-07-23T07:03:21.314Z","2.3.13-alpha.1":"2021-07-23T07:05:27.211Z","2.3.13-hotfixes-afb5d0-krg43ler":"2021-07-23T08:59:38.217Z","2.3.14":"2021-07-23T10:48:23.526Z","2.3.14-beta.1":"2021-07-23T10:48:53.202Z","2.3.14-hotfixes-feb1af-krg80kg8":"2021-07-23T10:49:09.674Z","2.3.14-alpha.1":"2021-07-23T10:51:14.287Z"},"bugs":{"url":"https://github.com/atlas-engine/AtlasEngine.Core/issues"},"author":{"name":"5Minds IT-Solutions GmbH & Co. KG"},"license":"MIT","homepage":"https://github.com/atlas-engine/AtlasEngine.Core#readme","repository":{"url":"git+https://github.com/atlas-engine/AtlasEngine.Core.git","type":"git"},"description":"The core package of the AtlasEngine. Handles the execution of BPMN process models.","maintainers":[{"email":"alex@kasten.pw","name":"alexanderkasten"},{"email":"sebastian.griesa@5minds.de","name":"s3bastiangriesa5minds"}],"readme":"","readmeFilename":""}